/etc/NEWS.19
Unknown | 1631 lines | 1163 code | 468 blank | 0 comment | 0 complexity | a7848f4bcac06446a7f02498a9296f8e MD5 | raw file
Possible License(s): GPL-3.0, LGPL-2.0, AGPL-3.0
- GNU Emacs NEWS -- history of user-visible changes. 1992.
- Copyright (C) 1993-1995, 2001, 2006-2012 Free Software Foundation, Inc.
- See the end of the file for license conditions.
- This file is about changes in emacs versions 19.
- * Emacs 19.34 is a bug-fix release with no user-visible changes.
- * Changes in Emacs 19.33.
- ** Bibtex mode no longer turns on Auto Fill automatically. (No major
- mode should do that--it is the user's choice.)
- ** The variable normal-auto-fill-function specifies the function to
- use for auto-fill-function, if and when Auto Fill is turned on.
- Major modes can set this locally to alter how Auto Fill works.
- * Editing Changes in Emacs 19.32
- ** C-x f with no argument now signals an error.
- To set the fill column at the current column, use C-u C-x f.
- ** Expanding dynamic abbrevs with M-/ is now smarter about case
- conversion. If you type the abbreviation with mixed case, and it
- matches the beginning of the expansion including case, then the
- expansion is copied verbatim. Using SPC M-/ to copy an additional
- word always copies it verbatim except when the previous copied word is
- all caps.
- ** On a non-windowing terminal, which can display only one Emacs frame
- at a time, creating a new frame with C-x 5 2 also selects that frame.
- When using a display that can show multiple frames at once, C-x 5 2
- does make the frame visible, but does not select it. This is the same
- as in previous Emacs versions.
- ** You can use C-x 5 2 to create multiple frames on MSDOS, just as on a
- non-X terminal on Unix. Of course, only one frame is visible at any
- time, since your terminal doesn't have the ability to display multiple
- frames.
- ** On Windows, set win32-pass-alt-to-system to a non-nil value
- if you would like tapping the Alt key to invoke the Windows menu.
- This feature is not enabled by default; since the Alt key is also the
- Meta key, it is too easy and painful to activate this feature by
- accident.
- ** The command apply-macro-to-region-lines repeats the last defined
- keyboard macro once for each complete line within the current region.
- It does this line by line, by moving point to the beginning of that
- line and then executing the macro.
- This command is not new, but was never documented before.
- ** You can now use Mouse-1 to place the region around a string constant
- (something surrounded by doublequote characters or other delimiter
- characters of like syntax) by double-clicking on one of the delimiting
- characters.
- ** Font Lock mode
- *** Font Lock support modes
- Font Lock can be configured to use Fast Lock mode and Lazy Lock mode (see
- below) in a flexible way. Rather than adding the appropriate function to the
- hook font-lock-mode-hook, you can use the new variable font-lock-support-mode
- to control which modes have Fast Lock mode or Lazy Lock mode turned on when
- Font Lock mode is enabled.
- For example, to use Fast Lock mode when Font Lock mode is turned on, put:
- (setq font-lock-support-mode 'fast-lock-mode)
- in your ~/.emacs.
- *** lazy-lock
- The lazy-lock package speeds up Font Lock mode by making fontification occur
- only when necessary, such as when a previously unfontified part of the buffer
- becomes visible in a window. When you create a buffer with Font Lock mode and
- Lazy Lock mode turned on, the buffer is not fontified. When certain events
- occur (such as scrolling), Lazy Lock makes sure that the visible parts of the
- buffer are fontified. Lazy Lock also defers on-the-fly fontification until
- Emacs has been idle for a given amount of time.
- To use this package, put in your ~/.emacs:
- (setq font-lock-support-mode 'lazy-lock-mode)
- To control the package behavior, see the documentation for `lazy-lock-mode'.
- ** Changes in BibTeX mode.
- *** For all entries allow spaces and tabs between opening brace or
- paren and key.
- *** Non-escaped double-quoted characters (as in `Sch"of') are now
- supported.
- ** Gnus changes.
- Gnus, the Emacs news reader, has undergone further rewriting. Many new
- commands and variables have been added. There should be no
- significant incompatibilities between this Gnus version and the
- previously released version, except in the message composition area.
- Below is a list of the more user-visible changes. Coding changes
- between Gnus 5.1 and 5.2 are more extensive.
- *** A new message composition mode is used. All old customization
- variables for mail-mode, rnews-reply-mode and gnus-msg are now
- obsolete.
- *** Gnus is now able to generate "sparse" threads -- threads where
- missing articles are represented by empty nodes.
- (setq gnus-build-sparse-threads 'some)
- *** Outgoing articles are stored on a special archive server.
- To disable this: (setq gnus-message-archive-group nil)
- *** Partial thread regeneration now happens when articles are
- referred.
- *** Gnus can make use of GroupLens predictions:
- (setq gnus-use-grouplens t)
- *** A trn-line tree buffer can be displayed.
- (setq gnus-use-trees t)
- *** An nn-like pick-and-read minor mode is available for the summary
- buffers.
- (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode)
- *** In binary groups you can use a special binary minor mode:
- `M-x gnus-binary-mode'
- *** Groups can be grouped in a folding topic hierarchy.
- (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
- *** Gnus can re-send and bounce mail.
- Use the `S D r' and `S D b'.
- *** Groups can now have a score, and bubbling based on entry frequency
- is possible.
- (add-hook 'gnus-summary-exit-hook 'gnus-summary-bubble-group)
- *** Groups can be process-marked, and commands can be performed on
- groups of groups.
- *** Caching is possible in virtual groups.
- *** nndoc now understands all kinds of digests, mail boxes, rnews news
- batches, ClariNet briefs collections, and just about everything else.
- *** Gnus has a new backend (nnsoup) to create/read SOUP packets.
- *** The Gnus cache is much faster.
- *** Groups can be sorted according to many criteria.
- For instance: (setq gnus-group-sort-function 'gnus-group-sort-by-rank)
- *** New group parameters have been introduced to set list-address and
- expiration times.
- *** All formatting specs allow specifying faces to be used.
- *** There are several more commands for setting/removing/acting on
- process marked articles on the `M P' submap.
- *** The summary buffer can be limited to show parts of the available
- articles based on a wide range of criteria. These commands have been
- bound to keys on the `/' submap.
- *** Articles can be made persistent -- as an alternative to saving
- articles with the `*' command.
- *** All functions for hiding article elements are now toggles.
- *** Article headers can be buttonized.
- (add-hook 'gnus-article-display-hook 'gnus-article-add-buttons-to-head)
- *** All mail backends support fetching articles by Message-ID.
- *** Duplicate mail can now be treated properly. See the
- `nnmail-treat-duplicates' variable.
- *** All summary mode commands are available directly from the article
- buffer.
- *** Frames can be part of `gnus-buffer-configuration'.
- *** Mail can be re-scanned by a daemonic process.
- *** Gnus can make use of NoCeM files to filter spam.
- (setq gnus-use-nocem t)
- *** Groups can be made permanently visible.
- (setq gnus-permanently-visible-groups "^nnml:")
- *** Many new hooks have been introduced to make customizing easier.
- *** Gnus respects the Mail-Copies-To header.
- *** Threads can be gathered by looking at the References header.
- (setq gnus-summary-thread-gathering-function
- 'gnus-gather-threads-by-references)
- *** Read articles can be stored in a special backlog buffer to avoid
- refetching.
- (setq gnus-keep-backlog 50)
- *** A clean copy of the current article is always stored in a separate
- buffer to allow easier treatment.
- *** Gnus can suggest where to save articles. See `gnus-split-methods'.
- *** Gnus doesn't have to do as much prompting when saving.
- (setq gnus-prompt-before-saving t)
- *** gnus-uu can view decoded files asynchronously while fetching
- articles.
- (setq gnus-uu-grabbed-file-functions 'gnus-uu-grab-view)
- *** Filling in the article buffer now works properly on cited text.
- *** Hiding cited text adds buttons to toggle hiding, and how much
- cited text to hide is now customizable.
- (setq gnus-cited-lines-visible 2)
- *** Boring headers can be hidden.
- (add-hook 'gnus-article-display-hook 'gnus-article-hide-boring-headers)
- *** Default scoring values can now be set from the menu bar.
- *** Further syntax checking of outgoing articles have been added.
- The Gnus manual has been expanded. It explains all these new features
- in greater detail.
- * Lisp Changes in Emacs 19.32
- ** The function set-visited-file-name now accepts an optional
- second argument NO-QUERY. If it is non-nil, then the user is not
- asked for confirmation in the case where the specified file already
- exists.
- ** The variable print-length applies to printing vectors and bitvectors,
- as well as lists.
- ** The new function keymap-parent returns the parent keymap
- of a given keymap.
- ** The new function set-keymap-parent specifies a new parent for a
- given keymap. The arguments are KEYMAP and PARENT. PARENT must be a
- keymap or nil.
- ** Sometimes menu keymaps use a command name, a symbol, which is really
- an automatically generated alias for some other command, the "real"
- name. In such a case, you should give that alias symbol a non-nil
- menu-alias property. That property tells the menu system to look for
- equivalent keys for the real name instead of equivalent keys for the
- alias.
- * Editing Changes in Emacs 19.31
- ** Freedom of the press restricted in the United States.
- Emacs has been censored in accord with the Communications Decency Act.
- This includes removing some features of the doctor program. That law
- was described by its supporters as a ban on pornography, but it bans
- far more than that. The Emacs distribution has never contained any
- pornography, but parts of it were nonetheless prohibited.
- For information on US government censorship of the Internet, and what
- you can do to bring back freedom of the press, see the web site
- `http://www.vtw.org/'.
- ** A note about C mode indentation customization.
- The old (Emacs 19.29) ways of specifying a C indentation style
- do not normally work in the new implementation of C mode.
- It has its own methods of customizing indentation, which are
- much more powerful than the old C mode. See the Editing Programs
- chapter of the manual for details.
- However, you can load the library cc-compat to make the old
- customization variables take effect.
- ** Marking with the mouse.
- When you mark a region with the mouse, the region now remains
- highlighted until the next input event, regardless of whether you are
- using M-x transient-mark-mode.
- ** Improved Windows NT/95 support.
- *** Emacs now supports scroll bars on Windows NT and Windows 95.
- *** Emacs now supports subprocesses on Windows 95. (Subprocesses used
- to work on NT only and not on 95.)
- *** There are difficulties with subprocesses, though, due to problems
- in Windows, beyond the control of Emacs. They work fine as long as
- you run Windows applications. The problems arise when you run a DOS
- application in a subprocesses. Since current shells run as DOS
- applications, these problems are significant.
- If you run a DOS application in a subprocess, then the application is
- likely to busy-wait, which means that your machine will be 100% busy.
- However, if you don't mind the temporary heavy load, the subprocess
- will work OK as long as you tell it to terminate before you start any
- other DOS application as a subprocess.
- Emacs is unable to terminate or interrupt a DOS subprocess.
- You have to do this by providing input directly to the subprocess.
- If you run two DOS applications at the same time in two separate
- subprocesses, even if one of them is asynchronous, you will probably
- have to reboot your machine--until then, it will remain 100% busy.
- Windows simply does not cope when one Windows process tries to run two
- separate DOS subprocesses. Typing CTL-ALT-DEL and then choosing
- Shutdown seems to work although it may take a few minutes.
- ** M-x resize-minibuffer-mode.
- This command, not previously mentioned in NEWS, toggles a mode in
- which the minibuffer window expands to show as many lines as the
- minibuffer contains.
- ** `title' frame parameter and resource.
- The `title' X resource now specifies just the frame title, nothing else.
- It does not affect the name used for looking up other X resources.
- It works by setting the new `title' frame parameter, which likewise
- affects just the displayed title of the frame.
- The `name' parameter continues to do what it used to do:
- it specifies the frame name for looking up X resources,
- and also serves as the default for the displayed title
- when the `title' parameter is unspecified or nil.
- ** Emacs now uses the X toolkit by default, if you have a new
- enough version of X installed (X11R5 or newer).
- ** When you compile Emacs with the Motif widget set, Motif handles the
- F10 key by activating the menu bar. To avoid confusion, the usual
- Emacs binding of F10 is replaced with a no-op when using Motif.
- If you want to be able to use F10 in Emacs, you can rebind the Motif
- menubar to some other key which you don't use. To do so, add
- something like this to your X resources file. This example rebinds
- the Motif menu bar activation key to S-F12:
- Emacs*defaultVirtualBindings: osfMenuBar : Shift<Key>F12
- ** In overwrite mode, DEL now inserts spaces in most cases
- to replace the characters it "deletes".
- ** The Rmail summary now shows the number of lines in each message.
- ** Rmail has a new command M-x unforward-rmail-message, which extracts
- a forwarded message from the message that forwarded it. To use it,
- select a message which contains a forwarded message and then type the command.
- It inserts the forwarded message as a separate Rmail message
- immediately after the selected one.
- This command also undoes the textual modifications that are standardly
- made, as part of forwarding, by Rmail and other mail reader programs.
- ** Turning off saving of .saves-... files in your home directory.
- Each Emacs session writes a file named .saves-... in your home
- directory to record which files M-x recover-session should recover.
- If you exit Emacs normally with C-x C-c, it deletes that file. If
- Emacs or the operating system crashes, the file remains for M-x
- recover-session.
- You can turn off the writing of these files by setting
- auto-save-list-file-name to nil. If you do this, M-x recover-session
- will not work.
- Some previous Emacs versions failed to delete these files even on
- normal exit. This is fixed now. If you are thinking of turning off
- this feature because of past experiences with versions that had this
- bug, it would make sense to check whether you still want to do so
- now that the bug is fixed.
- ** Changes to Version Control (VC)
- There is a new variable, vc-follow-symlinks. It indicates what to do
- when you visit a link to a file that is under version control.
- Editing the file through the link bypasses the version control system,
- which is dangerous and probably not what you want.
- If this variable is t, VC follows the link and visits the real file,
- telling you about it in the echo area. If it is `ask' (the default),
- VC asks for confirmation whether it should follow the link. If nil,
- the link is visited and a warning displayed.
- ** iso-acc.el now lets you specify a choice of language.
- Languages include "latin-1" (the default) and "latin-2" (which
- is designed for entering ISO Latin-2 characters).
- There are also choices for specific human languages such as French and
- Portuguese. These are subsets of Latin-1, which differ in that they
- enable only the accent characters needed for particular language.
- The other accent characters, not needed for the chosen language,
- remain normal.
- ** Posting articles and sending mail now has M-TAB completion on various
- header fields (Newsgroups, To, CC, ...).
- Completion in the Newsgroups header depends on the list of groups
- known to your news reader. Completion in the Followup-To header
- offers those groups which are in the Newsgroups header, since
- Followup-To usually just holds one of those.
- Completion in fields that hold mail addresses works based on the list
- of local users plus your aliases. Additionally, if your site provides
- a mail directory or a specific host to use for any unrecognized user
- name, you can arrange to query that host for completion also. (See the
- documentation of variables `mail-directory-process' and
- `mail-directory-stream'.)
- ** A greatly extended sgml-mode offers new features such as (to be configured)
- skeletons with completing read for tags and attributes, typing named
- characters including optionally all 8bit characters, making tags invisible
- with optional alternate display text, skipping and deleting tag(pair)s.
- Note: since Emacs' syntax feature cannot limit the special meaning of ', " and
- - to inside <>, for some texts the result, especially of font locking, may be
- wrong (see `sgml-specials' if you get wrong results).
- The derived html-mode configures this with tags and attributes more or
- less HTML3ish. It also offers optional quick keys like C-c 1 for
- headline or C-c u for unordered list (see `html-quick-keys'). Edit /
- Text Properties / Face or M-g combinations create tags as applicable.
- Outline minor mode is supported and level 1 font-locking tries to
- fontify tag contents (which only works when they fit on one line, due
- to a limitation in font-lock).
- External viewing via browse-url can occur automatically upon saving.
- ** M-x imenu-add-to-menubar now adds to the menu bar for the current
- buffer only. If you want to put an Imenu item in the menu bar for all
- buffers that use a particular major mode, use the mode hook, as in
- this example:
- (add-hook 'emacs-lisp-mode-hook
- '(lambda () (imenu-add-to-menubar "Index")))
- ** Changes in BibTeX mode.
- *** Field names may now contain digits, hyphens, and underscores.
- *** Font Lock mode is now supported.
- *** bibtex-make-optional-field is no longer interactive.
- *** If bibtex-maintain-sorted-entries is non-nil, inserting new
- entries is now done with a faster algorithm. However, inserting
- will fail in this case if the buffer contains invalid entries or
- isn't in sorted order, so you should finish each entry with C-c C-c
- (bibtex-close-entry) after you have inserted or modified it.
- The default value of bibtex-maintain-sorted-entries is nil.
- *** Function `show-all' is no longer bound to a key, since C-u C-c C-q
- does the same job.
- *** Entries with quotes inside quote-delimited fields (as `author =
- "Stefan Sch{\"o}f"') are now supported.
- *** Case in field names doesn't matter anymore when searching for help
- text.
- ** Font Lock mode
- *** Global Font Lock mode
- Font Lock mode can be turned on globally, in buffers that support it, by the
- new command global-font-lock-mode. You can use the new variable
- font-lock-global-modes to control which modes have Font Lock mode automagically
- turned on. By default, this variable is set so that Font Lock mode is turned
- on globally where the buffer mode supports it.
- For example, to automagically turn on Font Lock mode where supported, put:
- (global-font-lock-mode t)
- in your ~/.emacs.
- *** Local Refontification
- In Font Lock mode, editing a line automatically refontifies that line only.
- However, if your change alters the syntactic context for following lines,
- those lines remain incorrectly fontified. To refontify them, use the new
- command M-g M-g (font-lock-fontify-block).
- In certain major modes, M-g M-g refontifies the entire current function.
- (The variable font-lock-mark-block-function controls how to find the
- current function.) In other major modes, M-g M-g refontifies 16 lines
- above and below point.
- With a prefix argument N, M-g M-g refontifies N lines above and below point.
- ** Follow mode
- Follow mode is a new minor mode combining windows showing the same
- buffer into one tall "virtual window". The windows are typically two
- side-by-side windows. Follow mode makes them scroll together as if
- they were a unit. To use it, go to a frame with just one window,
- split it into two side-by-side windows using C-x 3, and then type M-x
- follow-mode.
- M-x follow-mode turns off Follow mode if it is already enabled.
- To display two side-by-side windows and activate Follow mode, use the
- command M-x follow-delete-other-windows-and-split.
- ** hide-show changes.
- The hooks hs-hide-hooks and hs-show-hooks have been renamed
- to hs-hide-hook and hs-show-hook, to follow the convention for
- normal hooks.
- ** Simula mode now has a menu containing the most important commands.
- The new command simula-indent-exp is bound to C-M-q.
- ** etags can now handle programs written in Erlang. Files are
- recognized by the extensions .erl and .hrl. The tagged lines are
- those that begin a function, record, or macro.
- ** MSDOS Changes
- *** It is now possible to compile Emacs with the version 2 of DJGPP.
- Compilation with DJGPP version 1 also still works.
- *** The documentation of DOS-specific aspects of Emacs was rewritten
- and expanded; see the ``MS-DOS'' node in the on-line docs.
- *** Emacs now uses ~ for backup file names, not .bak.
- *** You can simulate mouse-3 on two-button mice by simultaneously
- pressing both mouse buttons.
- *** A number of packages and commands which previously failed or had
- restricted functionality on MS-DOS, now work. The most important ones
- are:
- **** Printing (both with `M-x lpr-buffer' and with `ps-print' package)
- now works.
- **** `Ediff' works (in a single-frame mode).
- **** `M-x display-time' can be used on MS-DOS (due to the new
- implementation of Emacs timers, see below).
- **** `Dired' supports Unix-style shell wildcards.
- **** The `c-macro-expand' command now works as on other platforms.
- **** `M-x recover-session' works.
- **** `M-x list-colors-display' displays all the available colors.
- **** The `TPU-EDT' package works.
- * Lisp changes in Emacs 19.31.
- ** The function using-unix-filesystems on Windows NT and Windows 95
- tells Emacs to read and write files assuming that they reside on a
- remote Unix filesystem. No CR/LF translation is done on any files in
- this case. Invoking using-unix-filesystems with t activates this
- behavior, and invoking it with any other value deactivates it.
- ** Change in system-type and system-configuration values.
- The value of system-type on a Linux-based GNU system is now `lignux',
- not `linux'. This means that some programs which use `system-type'
- need to be changed. The value of `system-configuration' will also
- be different.
- It is generally recommended to use `system-configuration' rather
- than `system-type'.
- See the file LINUX-GNU in this directory for more about this.
- ** The functions shell-command and dired-call-process
- now run file name handlers for default-directory, if it has them.
- ** Undoing the deletion of text now restores the positions of markers
- that pointed into or next to the deleted text.
- ** Timers created with run-at-time now work internally to Emacs, and
- no longer use a separate process. Therefore, they now work more
- reliably and can be used for shorter time delays.
- The new function run-with-timer is a convenient way to set up a timer
- to run a specified amount of time after the present. A call looks
- like this:
- (run-with-timer SECS REPEAT FUNCTION ARGS...)
- SECS says how many seconds should elapse before the timer happens.
- It may be an integer or a floating point number. When the timer
- becomes ripe, the action is to call FUNCTION with arguments ARGS.
- REPEAT gives the interval for repeating the timer (measured in
- seconds). It may be an integer or a floating point number. nil or 0
- means don't repeat at all--call FUNCTION just once.
- *** with-timeout provides an easy way to do something but give
- up if too much time passes.
- (with-timeout (SECONDS TIMEOUT-FORMS...) BODY...)
- This executes BODY, but gives up after SECONDS seconds.
- If it gives up, it runs the TIMEOUT-FORMS and returns the value
- of the last one of them. Normally it returns the value of the last
- form in BODY.
- *** You can now arrange to call a function whenever Emacs is idle for
- a certain length of time. To do this, call run-with-idle-timer. A
- call looks like this:
- (run-with-idle-timer SECS REPEAT FUNCTION ARGS...)
- SECS says how many seconds of idleness should elapse before the timer
- runs. It may be an integer or a floating point number. When the
- timer becomes ripe, the action is to call FUNCTION with arguments
- ARGS.
- Emacs becomes idle whenever it finishes executing a keyboard or mouse
- command. It remains idle until it receives another keyboard or mouse
- command.
- REPEAT, if non-nil, means this timer should be activated again each
- time Emacs becomes idle and remains idle for SECS seconds The timer
- does not repeat if Emacs *remains* idle; it runs at most once after
- each time Emacs becomes idle.
- If REPEAT is nil, the timer runs just once, the first time Emacs is
- idle for SECS seconds.
- *** post-command-idle-hook is now obsolete; you shouldn't use it at
- all, because it interferes with the idle timer mechanism. If your
- programs use post-command-idle-hook, convert them to use idle timers
- instead.
- *** y-or-n-p-with-timeout lets you ask a question but give up if
- there is no answer within a certain time.
- (y-or-n-p-with-timeout PROMPT SECONDS DEFAULT-VALUE)
- asks the question PROMPT (just like y-or-n-p). If the user answers
- within SECONDS seconds, it returns the answer that the user gave.
- Otherwise it gives up after SECONDS seconds, and returns DEFAULT-VALUE.
- ** Minor change to `encode-time': you can now pass more than seven
- arguments. If you do that, the first six arguments have the usual
- meaning, the last argument is interpreted as the time zone, and the
- arguments in between are ignored.
- This means that it works to use the list returned by `decode-time' as
- the list of arguments for `encode-time'.
- ** The default value of load-path now includes the directory
- /usr/local/share/emacs/VERSION/site-lisp In addition to
- /usr/local/share/emacs/site-lisp. You can use this new directory for
- site-specific Lisp packages that belong with a particular Emacs
- version.
- It is not unusual for a Lisp package that works well in one Emacs
- version to cause trouble in another. Sometimes packages need updating
- for incompatible changes; sometimes they look at internal data that
- has changed; sometimes the package has been installed in Emacs itself
- and the installed version should be used. Whatever the reason for the
- problem, this new feature makes it easier to solve.
- ** When your program contains a fixed file name (like .completions or
- .abbrev.defs), the file name usually needs to be different on operating
- systems with limited file name syntax.
- Now you can avoid ad-hoc conditionals by using the function
- convert-standard-filename to convert the file name to a proper form
- for each operating system. Here is an example of use, from the file
- completions.el:
- (defvar save-completions-file-name
- (convert-standard-filename "~/.completions")
- "*The filename to save completions to.")
- This sets the variable save-completions-file-name to a value that
- depends on the operating system, because the definition of
- convert-standard-filename depends on the operating system. On
- Unix-like systems, it returns the specified file name unchanged. On
- MS-DOS, it adapts the name to fit the limitations of that system.
- ** The interactive spec N now returns the numeric prefix argument
- rather than the raw prefix argument. (It still reads a number using the
- minibuffer if there is no prefix argument at all.)
- ** When a process is deleted, this no longer disconnects the process
- marker from its buffer position.
- ** The variable garbage-collection-messages now controls whether
- Emacs displays a message at the beginning and end of garbage collection.
- The default is nil, meaning there are no messages.
- ** The variable debug-ignored-errors specifies certain kinds of errors
- that should not enter the debugger. Its value is a list of error
- condition symbols and/or regular expressions. If the error has any
- of the condition symbols listed, or if any of the regular expressions
- matches the error message, then that error does not enter the debugger,
- regardless of the value of debug-on-error.
- This variable is initialized to match certain common but uninteresting
- errors that happen often during editing.
- ** The new function error-message-string converts an error datum
- into its error message. The error datum is what condition-case
- puts into the variable, to describe the error that happened.
- ** Anything that changes which buffer appears in a given window
- now runs the window-scroll-functions for that window.
- ** The new function get-buffer-window-list returns a list of windows displaying
- a buffer. The function is called with the buffer (a buffer object or a buffer
- name) and two optional arguments specifying the minibuffer windows and frames
- to search. Therefore this function takes optional args like next-window etc.,
- and not get-buffer-window.
- ** buffer-substring now runs the hook buffer-access-fontify-functions,
- calling each function with two arguments--the range of the buffer
- being accessed. buffer-substring-no-properties does not call them.
- If you use this feature, you should set the variable
- buffer-access-fontified-property to a non-nil symbol, which is a
- property name. Then, if all the characters in the buffer range have a
- non-nil value for that property, the buffer-access-fontify-functions
- are not called. When called, these functions should put a non-nil
- property on the text that they fontify, so that they won't get called
- over and over for the same text.
- ** Changes in lisp-mnt.el
- *** The lisp-mnt package can now recognize file headers that are written
- in the formats used by the `what' command and the RCS `ident' command:
- ;; @(#) HEADER: text
- ;; $HEADER: text $
- in addition to the normal
- ;; HEADER: text
- *** The commands lm-verify and lm-synopsis are now interactive. lm-verify
- checks that the library file has proper sections and headers, and
- lm-synopsis extracts first line "synopsis'"information.
- * Editing Changes in Emacs 19.30.
- ** Be sure to recompile your byte-compiled Emacs Lisp files
- if you last compiled them with Emacs 19.28 or earlier.
- You can use M-x byte-force-recompile to recompile all the .elc files
- in a specified directory.
- ** Emacs now provides multiple-frame support on Windows NT
- and Windows 95.
- ** M-x column-number-mode toggles a minor mode which displays
- the current column number in the mode line.
- ** Line Number mode is now enabled by default.
- ** M-x what-line now displays the line number in the accessible
- portion of the buffer as well as the line number in the full buffer,
- when narrowing is in effect.
- ** If you type a M-x command that has an equivalent key binding,
- the equivalent is shown in the minibuffer before the command executes.
- This feature is enabled by default for the sake of beginning users.
- You can turn the feature off by setting suggest-key-bindings to nil.
- ** The menu bar is now visible on text-only terminals. To choose a
- command from the menu bar when you have no mouse, type M-`
- (Meta-Backquote) or F10. To turn off menu bar display,
- do (menu-bar-mode -1).
- ** Whenever you invoke a minibuffer, it appears in the minibuffer
- window that the current frame uses.
- Emacs can only use one minibuffer window at a time. If you activate
- the minibuffer while a minibuffer window is active in some other
- frame, the outer minibuffer window disappears while the inner one is
- active.
- ** Echo area messages always appear in the minibuffer window that the
- current frame uses. If a minibuffer is active in some other frame,
- the echo area message does not hide it even temporarily.
- ** The minibuffer now has a menu-bar menu. You can use it to exit or
- abort the minibuffer, or to ask for completion.
- ** Dead-key and composite character processing is done in the standard
- X11R6 manner (through the default "input method" using the
- /usr/lib/X11/locale/*/Compose databases of key combinations). I.e. if
- it works in xterm, it should also work in emacs now.
- ** Mouse changes
- *** You can now use the mouse when running Emacs in an xterm.
- Use M-x xterm-mouse-mode to let emacs take control over the mouse.
- *** C-mouse-1 now once again provides a menu of buffers to select.
- S-mouse-1 is now the way to select a default font for the frame.
- *** There is a new mouse-scroll-min-lines variable to control the
- minimum number of lines scrolled by dragging the mouse outside a
- window's edge.
- *** Dragging mouse-1 on a vertical line that separates windows
- now moves the line, thus changing the widths of the two windows.
- (This feature is available only if you don't have vertical scroll bars.
- If you do use them, a scroll bar separates two side-by-side windows.)
- *** Double-click mouse-1 on a character with "symbol" syntax (such as
- underscore, in C mode) selects the entire symbol surrounding that
- character. (Double-click mouse-1 on a letter selects a whole word.)
- ** When incremental search wraps around to the beginning (or end) of
- the buffer, if you keep on searching until you go past the original
- starting point of the search, the echo area changes from "Wrapped" to
- "Overwrapped". That tells you that you are revisiting matches that
- you have already seen.
- ** Filling changes.
- *** If the variable colon-double-space is non-nil, the explicit fill
- commands put two spaces after a colon.
- *** Auto-Fill mode now supports Adaptive Fill mode just as the
- explicit fill commands do. The variable adaptive-fill-regexp
- specifies a regular expression to match text at the beginning of
- a line that should be the fill prefix.
- *** Adaptive Fill mode can take a fill prefix from the first line of a
- paragraph, *provided* that line is not a paragraph-starter line.
- Paragraph-starter lines are indented lines that start a new
- paragraph because they are indented. This indentation shouldn't
- be copied to additional lines.
- Whether indented lines are paragraph lines depends on the value of the
- variable paragraph-start. Some major modes set this; you can set it
- by hand or in mode hooks as well. For editing text in which paragraph
- first lines are not indented, and which contains paragraphs in which
- all lines are indented, you should use Indented Text mode or arrange
- for paragraph-start not to match these lines.
- *** You can specify more complex ways of choosing a fill prefix
- automatically by setting `adaptive-fill-function'. This function
- is called with point after the left margin of a line, and it should
- return the appropriate fill prefix based on that line.
- If it returns nil, that means it sees no fill prefix in that line.
- ** Gnus changes.
- Gnus, the Emacs news reader, has been rewritten and expanded. Most
- things that worked with the old version should still work with the new
- version. Code that relies heavily on Gnus internals is likely to
- fail, though.
- *** Incompatibilities with the old GNUS.
- **** All interactive commands have kept their names, but many internal
- functions have changed names.
- **** The summary mode gnus-uu commands have been moved from the `C-c
- C-v' keymap to the `X' keymap.
- **** There can now be several summary buffers active at once.
- Variables that are relevant to each summary buffer are buffer-local to
- that buffer.
- **** Old hilit code doesn't work at all. Gnus performs its own
- highlighting based not only on what's visible in the buffer, but on
- other data structures.
- **** Old packages like `expire-kill' will no longer work.
- **** `C-c C-l' in the group buffer no longer switches to a different
- buffer, but instead lists killed groups in the group buffer.
- *** New features.
- **** The look of all buffers can be changed by setting format-like
- variables.
- **** Local spool and several NNTP servers can be used at once.
- **** Groups can be combined into virtual groups.
- **** Different mail formats can be read much the same way as one would
- read newsgroups. All the mail backends implement mail expiry schemes.
- **** Gnus can use various strategies for gathering threads that have
- lost their roots (thereby gathering loose sub-threads into one thread)
- or it can go back and retrieve enough headers to build a complete
- thread.
- **** Killed groups can be read.
- **** Gnus can do partial group updates - you do not have to retrieve
- the entire active file just to check for new articles in a few groups.
- **** Gnus implements a sliding scale of subscribedness to groups.
- **** You can score articles according to any number of criteria. You
- can get Gnus to score articles for you using adaptive scoring.
- **** Gnus maintains a dribble buffer that is auto-saved the normal
- Emacs manner, so it should be difficult to lose much data on what you
- have read if your machine should go down.
- **** Gnus now has its own startup file (`.gnus.el') to avoid
- cluttering up the `.emacs' file.
- **** You can set the process mark on both groups and articles and
- perform operations on all the marked items.
- **** You can grep through a subset of groups and create a group from
- the results.
- **** You can list subsets of groups using matches on group names or
- group descriptions.
- **** You can browse foreign servers and subscribe to groups from those
- servers.
- **** Gnus can pre-fetch articles asynchronously on a second connection
- to the servers.
- **** You can cache articles locally.
- **** Gnus can fetch FAQs to and descriptions of groups.
- **** Digests (and other files) can be used as the basis for groups.
- **** Articles can be highlighted and customized.
- ** Changes to Version Control (VC)
- *** General changes (all backends).
- VC directory listings (C-x v d) are now kept up to date when you do a
- vc-next-action (C-x v v) on the marked files. The `g' command updates
- the buffer properly. `=' in a VC dired buffer produces a version
- control diff, not an ordinary diff.
- *** CVS changes.
- Under CVS, you no longer need to type C-x C-q before you can edit a
- file. VC doesn't write-protect unmodified buffers anymore; you can
- freely change them at any time. The mode line keeps track of the
- file status.
- If you do want unmodified files to be write-protected, set your
- CVSREAD environment variable. VC sees this and behaves accordingly;
- that will give you the behavior of Emacs 19.29, similar to that under
- RCS and SCCS. In this mode, if the variable vc-mistrust-permissions
- is nil, VC learns the modification state from the file permissions.
- When setting CVSREAD for the first time, you should check out the
- whole module anew, so that the file permissions are set correctly.
- VC also works with remote repositories now. When you visit a file, it
- doesn't run "cvs status" anymore, so there shouldn't be any long delays.
- Directory listings under VC/CVS have been enhanced. Type C-x v d, and
- you get a list of all files in or below the current directory that are
- not up-to-date. The actual status (modified, merge, conflict, ...) is
- displayed for each file. If you give a prefix argument (C-u C-x v d),
- up-to-date files are also listed. You can mark any number of files,
- and execute the next logical version control command on them (C-x v v).
- *** Starting a new branch.
- If you try to lock a version that is not the latest on its branch,
- VC asks for confirmation in the minibuffer. If you say no, it offers
- to lock the latest version instead.
- *** RCS non-strict locking.
- VC can now handle RCS non-strict locking, too. In this mode, working
- files are always writable and you needn't lock the file before making
- changes, similar to the default mode under CVS. To enable non-strict
- locking for a file, use the "rcs -U" command.
- *** Sharing RCS master files.
- If you share RCS subdirs with other users (through symbolic links),
- and you always want to work on the latest version, set
- vc-consult-headers to nil and vc-mistrust-permissions to `t'.
- Then you see the state of the *latest* version on the mode line, not
- that of your working file. When you do a check out, VC overwrites
- your working file with the latest version from the master.
- *** RCS customization.
- There is a new variable vc-consult-headers. If it is t (the default),
- VC searches for RCS headers in working files (like `$Id$') and
- determines the state of the file from them, not from the master file.
- This is fast and more reliable when you use branches. (The variable
- was already present in Emacs 19.29, but didn't get mentioned in the
- NEWS.)
- ** Calendar changes.
- *** New calendars supported: Chinese, Coptic, Ethiopic
- Here are the commands for converting to and from these calendars:
- gC: calendar-goto-chinese-date
- gk: calendar-goto-coptic-date
- ge: calendar-goto-ethiopic-date
- pC: calendar-print-chinese-date
- pk: calendar-print-coptic-date
- pe: calendar-print-ethiopic-date
- *** Printed calendars
- Calendar mode now has commands to produce fancy printed calendars via
- LaTeX. You can ask for a calendar for one or more days, weeks, months
- or years. The commands all start with `t'; see the manual for a list
- of them.
- *** New sexp diary entry type
- Reminders that apply in the days leading up to an event.
- ** The CC-mode package now provides the default C and C++ modes.
- See the manual for documentation of its features.
- ** The uniquify package chooses buffer names differently when you
- visit multiple files with the same name (in different directories).
- ** RMAIL now always uses the movemail program when it renames an
- inbox file, so that it can interlock properly with the mailer
- no matter where it is delivering mail.
- ** tex-start-of-header and tex-end-of-header are now regular expressions,
- not strings.
- ** To enable automatic uncompression of compressed files,
- type M-x auto-compression-mode. (This command used to be called
- toggle-auto-compression, but was not documented before.) In Lisp,
- you can do
- (auto-compression-mode 1)
- to turn the mode on.
- ** The new pc-select package emulates the key bindings for cutting and
- pasting, and selection of regions, found in Windows, Motif, and the
- Macintosh.
- ** Help buffers now use a special major mode, Help mode. This mode
- normally turns on View mode; it also provides a hook, help-mode-hook,
- which you can use for other customization.
- ** Apropos now uses faces for enhanced legibility. It now describes
- symbol properties as well as their function definitions and variable
- values. You can use Mouse-2 or RET to get more information about a
- function definition, variable, or property.
- ** Font Lock mode
- *** Supports Scheme, TCL and Help modes
- For example, to automatically turn on Font Lock mode in the *Help*
- buffer, put:
- (add-hook 'help-mode-hook 'turn-on-font-lock)
- in your ~/.emacs.
- *** Enhanced fontification
- The structure of font-lock-keywords is extended to allow "anchored" keywords.
- Typically, a keyword item of font-lock-keywords comprises a regexp to search
- for and information to specify how the regexp should be highlighted. However,
- the highlighting information is extended so that it can be another keyword
- item. This keyword item, its regexp and highlighting information, is processed
- before resuming with the keyword item of which it is part.
- For example, a typical keyword item might be:
- ("\\<anchor\\>" (0 anchor-face))
- which fontifies each occurrence of the discrete word "anchor" in the value of
- the variable anchor-face. However, the highlighting information can be used to
- fontify text that is anchored to the word "anchor". For example:
- ("\\<anchor\\>" (0 anchor-face) ("\\=[ ,]*\\(item\\)" nil nil (1 item-face)))
- which fontifies each occurrence of "anchor" as above, but for each occurrence
- of "anchor", each occurrence of "item", in any following comma separated list,
- is fontified in the value of the variable item-face. Thus the "item" text is
- anchored to the "anchor" text. See the variable documentation for further
- information.
- This feature is used to extend the level and quality of fontification in a
- number of modes. For example, C/C++ modes now have level 3 decoration that
- includes the fontification of variable and function names in declaration lists.
- In this instance, the "anchor" described in the above example is a type or
- class name, and an "item" is a variable or function name.
- *** Fontification levels
- The variables font-lock-maximum-decoration and font-lock-maximum-size are
- extended to specify levels and sizes for specific modes. The variable
- font-lock-maximum-decoration specifies the preferred level of fontification for
- modes that provide multiple levels (typically from "subdued" to "gaudy"). The
- variable font-lock-maximum-size specifies the buffer size for which buffer
- fontification is suppressed when Font Lock mode is turned on (typically because
- it would take too long).
- These variables can now specify values for individual modes, by supplying
- lists of mode names and values. For example, to use the above mentioned level
- 3 decoration for buffers in C/C++ modes, and default decoration otherwise, put:
- (setq font-lock-maximum-decoration '((c-mode . 3) (c++-mode . 3)))
- in your ~/.emacs. Maximum buffer size values for individual modes are
- specified in the same way with the variable font-lock-maximum-size.
- *** Font Lock configuration
- The mechanism to provide default settings for Font Lock mode are the variables
- font-lock-defaults and font-lock-maximum-decoration. Typically, you should
- only need to change the value of font-lock-maximum-decoration. However, to
- support Font Lock mode for buffers in modes that currently do not support Font
- Lock mode, you should set a buffer local value of font-lock-defaults for that
- mode, typically via its mode hook.
- These variables are used by Font Lock mode to set the values of the variables
- font-lock-keywords, font-lock-keywords-only, font-lock-syntax-table,
- font-lock-beginning-of-syntax-function and font-lock-keywords-case-fold-search.
- You need not set these variables directly, and should not set them yourself
- since the underlining mechanism may change in future.
- ** Archive mode is now the default mode for various sorts of
- archive files (files whose names end with .arc, .lzh, .zip, and .zoo).
- ** You can automatically update the years in copyright notice by
- means of (add-hook 'write-file-hooks 'copyright-update).
- Optionally it can update the GPL version as well.
- ** Scripts of various languages (Shell, AWK, Perl, makefiles ...) can
- be automatically provided with a magic number and be made executable
- by their respective modes under control of various user variables.
- The mode must call (executable-set-magic "perl") or
- (executable-set-magic "make" "-f"). The latter for example has no
- effect on [Mm]akefile.
- ** Shell script mode now supports over 15 different shells. The new
- command C-c ! executes the region, and optionally beginning of script
- as well, by passing them to the shell.
- Cases such as `sh' being a `bash' are now accounted for.
- Fontification now also does variables, the magic number and all
- builtin commands. Shell script mode no longer mingles `tab-width' and
- indentation style. The variable `sh-tab-width' has been renamed to
- `sh-indentation'. Empty lines are now indented like previous
- non-empty line, rather than just previous line.
- The annoying $ variable prompting has been eliminated. Instead, shell
- script mode uses `comint-dynamic-completion' for commands, variables
- and filenames.
- ** Two-column mode now automatically scrolls both buffers together,
- which makes it possible to eliminate the special scrolling commands
- that used to do so.
- The commands that operate in two-column mode are no longer bound to
- keys outside that mode. f2 o will now position at the same point in
- associated buffer.
- the new command f2 RET inserts a newline in both buffers, at point and
- at the corresponding position in the associated buffer.
- ** Skeleton commands now work smoothly as abbrev definitions. The
- element < no longer exists, ' is a new element.
- ** The autoinsert insert facility for prefilling empty files as soon
- as they are found has been extended to accommodate skeletons or calling
- functions. See the function auto-insert.
- ** TPU-edt Changes
- Loading tpu-edt no longer turns on tpu-edt mode. In fact, it is no
- longer necessary to explicitly load tpu-edt. All you need to do to
- turn on tpu-edt is run the tpu-edt function. Here's how to run
- tpu-edt instead of loading the file:
- Running Emacs: Type emacs -f tpu-edt
- not emacs -l tpu-edt
- Within Emacs: Type M-x tpu-edt <ret>
- not M-x load-library <ret> tpu-edt <ret>
- In .emacs: Use (tpu-edt)
- not (load "tpu-edt")
- The default name of the tpu-edt X key definition file has changed from
- ~/.tpu-gnu-keys to ~/.tpu-keys. If you don't rename the file yourself,
- tpu-edt will offer to rename it the first time you invoke it under
- x-windows.
- ** MS-DOS Enhancements:
- *** Better mouse control by adding the following functions [in dosfns.c]
- msdos-mouse-enable, msdos-mouse-disable, msdos-mouse-init.
- *** If another foreground/background color than the default is setup in
- your ~/_emacs, then the screen briefly flickers with the default
- colors before changing to the colors you have specified. To avoid
- this, the EMACSCOLORS environment variable exists. It shall be
- defined as a string with the following elements:
- set EMACSCOLORS=fb;fb
- The first set of "fb" defines the initial foreground and background
- colors using standard dos color numbers (0=black,.., 7=white).
- If specified, the second set of "fb" defines the colors which are
- restored when you leave emacs.
- *** The new SUSPEND environment variable can now be set as the shell to
- use when suspending emacs. This can be used to override the stupid
- limitation on the environment of sub-shells in MS-DOS (they are just
- large enough to hold the currently defined variables, not leaving
- room for more); to overcome this limitation, add this to autoexec.bat:
- set SUSPEND=%COMSPEC% /E:2000
- ** The escape character can now be displayed on X frames. Try
- this:
- (aset standard-display-table 27 (vector 27))
- after first creating a display table (you can do that by loading
- the disp-table library).
- ** The new command-line option --eval specifies an expression to evaluate
- from the command line.
- ** etags has now the ability to tag Perl files. They are recognized
- either by the .pm and .pl suffixes or by a first line which starts
- with `#!' and specifies a Perl interpreter. The tagged lines are
- those beginning with the `sub' keyword.
- New suffixes recognized are .hpp for C++; .f90 for Fortran; .bib,
- .ltx, .TeX for TeX (.bbl, .dtx removed); .ml for Lisp; .prolog for
- prolog (.pl is now Perl).
- ** The files etc/termcap.dat and etc/termcap.ucb have been replaced
- with a new, merged, and much more comprehensive termcap file. The
- new file should include all the special entries from the old one.
- This new file is under active development as part of the ncurses
- project. If you have any questions about this file, or problems with
- an entry in it, email terminfo@ccil.org.
- * Lisp changes in Emacs 19.30.
- ** New Data Types
- *** There is a new data type called a char-table which is an array
- indexed by a character. Currently this is mostly equivalent to a
- vector of length 256, but in the future, when a wider character set is
- in use, it will be different. To create one, call
- (make-char-table SUBTYPE INITIAL-VALUE)
- SUBTYPE is a symbol that identifies the specific use of this
- character table. It can be any of these values:
- syntax-table
- display-table
- keyboard-translate-table
- case-table
- The function `char-table-subtype' returns the subtype of a char-table.
- You cannot alter the subtype of an existing char-table.
- A char-table has an element for each character code. It also has some
- "extra slots". The number of extra slots depends on the subtype and
- their use depends on the subtype. (Each subtype symbol has a
- `char-table-extra-slots' property that says how many extra slots to
- make.) Use (char-table-extra-slot TABLE N) to access extra slot N and
- (set-char-table-extra-slot TABLE N VALUE) to store VALUE in slot N.
- A char-table T can have a parent, which should be another char-table
- P. If you look for the value in T for character C, and the table T
- actually holds nil, P's element for character C is used instead.
- The functions `char-table-parent' and `set-char-table-parent'
- let you read or set the parent of a char-table.
- To scan all the values in a char-table, do not try to loop through all
- possible character codes. That would work for now, but will not work
- in the future. Instead, call map-char-table. (map-char-table
- FUNCTION TABLE) calls FUNCTION once for each character or character
- set that has a distinct value in TABLE. FUNCTION gets two arguments,
- RANGE and VALUE. RANGE specifies a range of TABLE that has one
- uniform value, and VALUE is the value in TABLE for that range.
- Currently, RANGE is always a vector containing a single character
- and it refers to that character alone. In the future, other kinds
- of ranges will occur. You can set the value for a given range
- with (set-char-table-range TABLE RANGE VALUE) and examine the value
- for a range with (char-table-range TABLE RANGE).
- *** Syntax tables are now represented as char-tables.
- All syntax tables other than the standard syntax table
- normally have the standard syntax table as their parent.
- Their subtype is `syntax-table'.
- *** Display tables are now represented as char-tables.
- Their subtype is `display-table'.
- *** Case tables are now represented as char-tables.
- Their subtype is `case-table'.
- *** The value of keyboard-translate-table may now be a char-table
- instead of a string. Normally the char-tables used for this purpose
- have the subtype `keyboard-translate-table', but that is not required.
- *** A new data type called a bool-vector is a vector of values
- that are either t or nil. To create one, do
- (make-bool-vector LENGTH INITIAL-VALUE)
- ** You can now specify, for each marker, how it should relocate when
- text is inserted at the place where the marker points. This is called
- the "insertion type" of the marker.
- To set the insertion type, do (set-marker-insertion-type MARKER TYPE).
- If TYPE is t, it means the marker advances when text is inserted. If
- TYPE is nil, it means the marker does not advance. (In Emacs 19.29,
- markers did not advance.)
- The function marker-insertion-type reports the insertion type of a
- given marker. The function copy-marker takes a second argument TYPE
- which specifies the insertion type of the new copied marker.
- ** When you create an overlay, you can specify the insertion type of
- the beginning and of the end. To do this, you can use two new
- arguments to make-overlay: front-advance and rear-advance.
- ** The new function overlays-in returns a list of the overlays that
- overlap a specified range of the buffer. The returned list includes
- empty overlays at the beginning of this range, as well as within the
- range.
- ** The new hook window-scroll-functions is run when a window has been
- scrolled. The functions in this list are called just before
- redisplay, after the new window-start has been computed. Each function
- is called with two arguments--the window that has been scrolled, and its
- new window-start position.
- This hook is useful for on-the-fly fontification and other features
- that affect how the redisplayed text will look when it is displayed.
- The window-end value of the window is not valid when these functions
- are called. The computation of window-end is byproduct of actual
- redisplay of the window contents, which means it has not yet happened
- when the hook is run. Computing window-end specially in advance for
- the sake of these functions would cause a slowdown.
- The hook functions can determine where the text on the window will end
- by calling vertical-motion starting with the window-start position.
- ** The new hook redisplay-end-trigger-functions is run whenever
- redisplay in window uses text that extends past a specified end
- trigger position. You set the end trigger position with the function
- set-window-redisplay-end-trigger. The functions are called with two
- arguments: the window, and the end trigger position. Storing nil for
- the end trigger position turns off the feature, and the trigger value
- is automatically reset to nil just after the hook is run.
- You can use the function window-redisplay-end-trigger to read a
- window's current end trigger value.
- ** The new function insert-file-contents-literally inserts the
- contents of a file without any character set translation or decoding.
- ** The new function safe-length computes the length of a list.
- It never gets an error--it treats any non-list like nil.
- If given a circular list, it returns an upper bound for the number
- of elements before the circularity.
- ** replace-match now takes a fifth argument, SUBEXP. If SUBEXP is
- non-nil, that says to replace just subexpression number SUBEXP of the
- regexp that was matched, not the entire match. For example, after
- matching `foo \(ba*r\)' calling replace-match with 1 as SUBEXP means
- to replace just the text that matched `\(ba*r\)'.
- ** The new keymap special-event-map defines bindings for certain
- events that should be handled at a very low level--as soon as they
- are read. The read-event function processes these events itself,
- and never returns them.
- Events that are handled in this way do not echo, they are never
- grouped into key sequences, and they never appear in the value of
- last-command-event or (this-command-keys). They do not discard a
- numeric argument, they cannot be unread with unread-command-events,
- they may not appear in a keyboard macro, and they are not recorded
- in a keyboard macro while you are defining one.
- These events do, however, appear in last-input-event immediately after
- they are read, and this is the way for the event's definition to find
- the actual event.
- The events types iconify-frame, make-frame-visible and delete-frame
- are normally handled in this way.
- ** encode-time now supports simple date arithmetic by means of
- out-of-range values for its SEC, MINUTE, HOUR, DAY, and MONTH
- arguments; for example, day 0 means the day preceding the given month.
- Also, the ZONE argument can now be a TZ-style string.
- ** command-execute and call-interactively now accept an optional third
- argument KEYS. If specified and non-nil, this specifies the key
- sequence containing the events that were used to invoke the command.
- ** The environment variable NAME, if set, now specifies the value of
- (user-full-name), when Emacs starts up.
- * User Editing Changes in Emacs 19.29
- ** If you run out of memory.
- If you get the error message "Virtual memory exhausted", type C-x s.
- That way of saving files has the least additional memory needs. Emacs
- 19.29 keeps a reserve of memory which it makes available when this
- error happens; that is to ensure that C-x s can complete its work.
- Once you have saved your data, you can exit and restart Emacs, or use
- M-x kill-some-buffers to free up space. If you kill buffers
- containing a substantial amount of text, you can go on editing.
- Do not use M-x buffer-menu to save or kill buffers when you are out of
- memory, because that needs a fair amount memory itself and you may not
- have enough to get it started.
- ** The format of compiled files has changed incompatibly.
- Byte-compiled files made with Emacs 19.29 normally use a new format
- that will not work in older Emacs versions. You can compile files
- in the old format if you wish; see "Changes in compilation," below.
- ** Emacs 19.29 supports the DEC Alpha.
- ** Emacs runs on Windows NT.
- This port does not yet support windowing features. It works like a
- text-only terminal, but it does support a mouse.
- In general, support for non-GNU-like operating systems is not a high
- priority for the GNU project. We merged in the support for Windows NT
- because that system is expected to be very widely used.
- ** Emacs supports Motif widgets.
- You can build Emacs with Motif widgets by specifying --with-x-toolkit=motif
- when you run configure.
- Motif defines collections of windows called "tab groups", and uses the
- tab key and the cursor keys to move between windows in a tab group.
- Emacs naturally does not support this--it has other uses for the tab
- key and cursor keys. Emacs does not support Motif accelerators either,
- because it uses its normal keymap event binding features.
- We give higher priority to operation with a free widget set than to
- operation with a proprietary one.
- ** If Emacs or the computer crashes, you can recover all the files you
- were editing from their auto save files by typing M-x recover-session.
- This first shows you a list of recorded interrupted sessions. Move
- point to the one you choose, and type C-c C-c.
- Then recover-session asks about each of the files that were being
- edited during that session, asking whether to recover that file. If
- you answer y, it calls recover-file, which works in its normal
- fashion. It shows the dates of the original file and its auto-save
- file and asks once again whether to recover that file.
- When recover-session is done, the files you've chosen to recover
- are present in Emacs buffers. You should then save them.
- Only this--saving them--updates the files themselves.
- ** Menu bar menus now stay up if you click on the menu bar item and
- release the mouse button within a certain amount of time. This is in
- the X Toolkit version.
- ** The menu bar menus have been rearranged and split up to make for a
- better organization. Two new menu bar menus, Tools and Search,
- contain items that were formerly in the Files and Edit menus, as well
- as some that did not exist in the menu bar menus before.
- ** Emacs can now display on more than one X display at the same time.
- Use the command make-frame-on-display to create a frame, specifying
- which display to use.
- ** M-x talk-connect sets up a multi-user talk connection
- via Emacs. Specify the X display of the person you want to talk to.
- You can talk to any number of people (within reason) by using
- this command repeatedly to specify different people.
- Emacs does not make a fuss about security; the people who you talk to
- can use all Emacs features, including visiting and editing files. If
- this frightens you, don't use M-x talk-connect.
- ** The range of integer values is now at least 2**28 on all machines.
- This means the maximum size of a buffer is at least 2**27-1,
- or 134,217,727.
- ** When you start Emacs, you can now specify option names in
- long GNU form (starting with `--') and you can abbreviate the names.
- You can now specify the options in any order.
- The previous requirements about the order of options
- have been eliminated.
- The -L or --directory option lets you specify an additional
- directory to search for Lisp libraries (including libraries
- that you specify with the -l or --load options).
- ** Incremental search in Transient Mark mode, if the mark is already
- active, now leaves the mark active and does not change its position.
- You can make incremental search deactivate the mark once again with
- this expression.
- (add-hook 'isearch-mode-hook 'deactivate-mark)
- ** C-delete now deletes a word backwards. This is for compatibility
- with some editors in the PC world. (This key is not available on
- ordinary ASCII terminals, because C-delete is not a distinct character
- on those terminals.)
- ** ESC ESC ESC is now a command to escape from various temporary modes
- and states.
- ** M-x pc-bindings-mode sets up bindings compatible with many PC editors.
- In particular, Delete and its variants delete forward instead of backward.
- Use Backspace to delete backward.
- C-Backspace kills backward a word (as C-Delete normally would).
- M-Backspace does undo.
- Home and End move to beginning and end of line
- C-Home and C-End move to beginning and end of buffer.
- ** The key sequence for evaluating a Lisp expression using the minibuffer
- is now ESC :. It used to be ESC ESC, but we moved it to make way for
- the ESC ESC ESC feature, on the grounds that people who evaluate Lisp
- expressions are experienced users and can cope with a change.
- If you prefer the old ESC ESC binding, put in your `~/.emacs':
- (global-set-key "\e\e" 'eval-expression)
- ** The f1 function key is now equivalent to the help key. This is
- done with key-translation-map; delete the binding for f1 in that map
- if you want to use f1 for something else.
- ** Mouse-3, in the simplest case, still sets the region. But now, it
- places the mark where point was, and sets point where you click.
- (It used to set the mark where you click and leave point alone.)
- If you position point with Mouse-1, then scroll with the scroll bar
- and use Mouse-3, Mouse-3 uses the position you specified with Mouse-1
- even if it has scrolled off the screen (and point is no longer there).
- This makes it easier to select a region with the mouse which is bigger
- than a screenful.
- Any editing of the buffer, and any cursor motion or scrolling for any
- reason other than the scroll bar, cancels the special state set up by
- Mouse-1--so that a subsequent Mouse-3 click will use the actual value
- of point.
- ** C-mouse-3 now pops up a mode-specific menu of commands--normally
- the same ones available in the mode's own menu bar menus.
- ** C-mouse-2 now pops up a menu of faces, indentation, justification,
- and certain other text properties. This menu is also available
- through the menu-bar Edit menu. It is meant for use with Enriched
- mode.
- *** You can use this menu to