defstruct introspection
[bpt/emacs.git] / etc / NEWS
index 3dd446d..c3b2e50 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -22,19 +22,108 @@ When you add a new item, use the appropriate mark if you are sure it applies,
 otherwise leave it unmarked.
 
 \f
+* Installation Changes in Emacs 24.5
+
++++
+** Building Emacs now requires GNU make.
+
+** By default, Emacs no longer works on IRIX.  We expect that Emacs
+users are not affected by this, as SGI stopped supporting IRIX in
+December 2013.  If you are affected, please send a bug report.  You
+should be able to work around the problem either by porting the Emacs
+undumping code to GCC under IRIX, or by configuring --with-wide-int,
+or by sticking with Emacs 24.4.
+
+\f
+* Startup Changes in Emacs 24.5
+
+\f
+* Changes in Emacs 24.5
+
+---
+** The default value of `history-length' has increased to 100.
+
++++
+** The new variable `term-file-aliases' replaces some files from lisp/term.
+The function `tty-run-terminal-initialization' consults this variable
+when deciding what terminal-specific initialization code to run.
+
+---
+** New variable `system-configuration-features', listing some of the
+main features that Emacs was compiled with.  This is mainly intended
+for use in Emacs bug reports.
+
+\f
+* Editing Changes in Emacs 24.5
+
+Emacs now supports "bracketed paste mode" when running on a terminal
+that supports it.  This facility allows Emacs to understand pasted
+chunks of text as strings to be inserted instead of interpreting each
+character in the pasted text as actual user input, resulting in a
+paste experience similar to that under a window system and significant
+performance improvements when pasting large amounts of text.
+
+\f
+* Changes in Specialized Modes and Packages in Emacs 24.5
+
+---
+** The Rmail commands d, C-d and u now handle repeat counts
+to delete or undelete multiple messages.
+
+** The URL package accepts now the protocols "ssh", "scp" and "rsync".
+When `url-handler-mode' is enabled, file operations for these
+protocols as well as for "telnet" and "ftp" are passed to Tramp.
+
+** Obsolete packages
+
+---
+*** gulp.el
+
+\f
+* New Modes and Packages in Emacs 24.5
+
+\f
+* Incompatible Lisp Changes in Emacs 24.5
+
+** inhibit-modification-hooks now also inhibits lock-file checks as well as
+active region handling.
+
+** deactivate-mark is now buffer-local.
+
+\f
+* Lisp Changes in Emacs 24.5
+
++++
+** You can specify a function's interactive-only property via `declare'.
+However you specify it, the property affects `describe-function' output.
+
+** You can access the slots of structures using `cl-struct-slot-value'
+   and `cl-struct-set-slot-value'.
+
+\f
+* Changes in Emacs 24.5 on Non-Free Operating Systems
+
+\f
 * Installation Changes in Emacs 24.4
 
+---
 ** Emacs can now be compiled with ACL support.
 This happens by default if a suitable support library is found at
 build time, like libacl on GNU/Linux.  To prevent this, use the
-configure option `--disable-acl'.
-FIXME?  Should be --without-acl?
+configure option `--disable-acl'.  See below for related features.
 
+---
 ** Emacs can now be compiled with file notification support.
 This happens by default if a suitable system library is found at
 build time.  To prevent this, use the configure option
 `--without-file-notification'.  See below for file-notify features.
-FIXME?  This feature is not available for the Nextstep port. (?)
+This feature is not available for the Nextstep port.
+
+---
+** Emacs can now be compiled with zlib support.
+This happens by default if zlib is present, which it normally is.
+To prevent this, use the configure option `--without-zlib'.
+This provides the function `zlib-decompress-region'; see below for details.
 
 ---
 ** The configure option `--without-compress-info' has been generalized,
@@ -49,14 +138,9 @@ It is no longer needed, as the crt*.o files are no longer linked specially.
 ** Directories passed to configure option `--enable-locallisppath' are
 no longer created during installation.
 
-** Emacs can be compiled with zlib support.
-If this library is present (which it normally is on most systems), the
-function `zlib-decompress-region' becomes available, which can
-decompress gzip- and zlib-format compressed data.
-
 ---
 ** Emacs for NS (Mac OS X, GNUstep) can be built with ImageMagick support.
-This requires pkg-config to be available at configure time.
+This requires pkg-config to be available at build time.
 
 \f
 * Startup Changes in Emacs 24.4
@@ -89,6 +173,10 @@ to set up the initial buffer.
 \f
 * Changes in Emacs 24.4
 
++++
+** New function `zlib-decompress-region', which decompresses gzip- and
+zlib-format compressed data using built-in zlib support, if available.
+
 +++
 ** New option `gnutls-verify-error', if non-nil, means that Emacs
 should reject SSL/TLS certificates that GnuTLS determines as invalid.
@@ -117,25 +205,30 @@ a new major mode, with read-only status.  Any code that might create
 the *Messages* buffer should call the function `messages-buffer' to do
 so and set up the mode.
 
-** Emacs now supports ACLs (access control lists).
++++
+** Emacs can now support ACLs (access control lists).
+This requires a suitable support library to be found at build time.
+On GNU/Linux, the POSIX ACL interface is used via libacl.
+On MS-Windows, the NT Security APIs are used to emulate the POSIX interface.
+
 +++
 *** Emacs preserves the ACL entries of files when backing up.
 +++
 *** New functions `file-acl' and `set-file-acl' get and set the ACL
-entries of a file.  On GNU/Linux, the POSIX ACL interface is used via
-libacl.  On MS-Windows, the NT Security APIs are used to emulate the
-POSIX ACL interfaces.
+entries of a file.
 
 ** Multi-monitor support has been added.
 
++++
 *** New functions `display-monitor-attributes-list' and
 `frame-monitor-attributes' can be used to obtain information about
 each physical monitor on multi-monitor setups.
 
++++
 *** The functions `display-pixel-width' and `display-pixel-height' now
 behave consistently among the platforms: they return the pixel width
 or height for all physical monitors associated with the given display
-as if they were on X11.  To get information for each physical
+as if they were on X.  To get information for each physical
 monitor, use the new functions above.  Similar notes also apply to
 `x-display-pixel-width', `x-display-pixel-height', `display-mm-width',
 `display-mm-height', `x-display-mm-width', and `x-display-mm-height'.
@@ -148,6 +241,10 @@ You can change the default by customizing `blink-cursor-blinks'.
 ** In keymaps where SPC scrolls forward, S-SPC now scrolls backward.
 This affects View mode, etc.
 
++++
+** The default value of `make-backup-file-name-function' is no longer nil.
+Instead it defaults to a function that does what the nil value used to.
+
 ** Help changes
 
 +++
@@ -185,6 +282,12 @@ content-type that is found in the new variable `image-format-suffixes'.
 
 ** Frame and window changes
 
++++
+*** The function `window-in-direction' introduced in Emacs 24.1 now
+takes additional arguments for specifying a reference point, wrapping
+selection around frame borders, and specifying ways to select the
+minibuffer window.
+
 +++
 *** New commands `toggle-frame-fullscreen' and `toggle-frame-maximized',
 bound to <f11> and M-<f10>, respectively.
@@ -193,26 +296,30 @@ bound to <f11> and M-<f10>, respectively.
 *** New hooks `focus-in-hook', `focus-out-hook'.
 These are normal hooks run when an Emacs frame gains or loses input focus.
 
----
-*** Emacs can now change frame sizes pixelwise.
-When maximizing a frame or making it fullscreen, remaining extra pixels
-are no more given to the minibuffer, the rightmost fringe, or other
-unusable space, but are distributed among the text areas of the frame's
-windows.  The new option `frame-resize-pixelwise', when non-nil, makes
-all frame size changes happen pixelwise and sets the corresponding size
-hints for the window manager.
++++
+*** Emacs can now change frame sizes in units of pixels, rather than
+text rows or columns.  When maximizing a frame or making it fullscreen,
+remaining extra pixels are no longer given to the minibuffer, the rightmost
+fringe, or other unusable space, but are distributed among the text
+areas of the frame's windows.  If the new option `frame-resize-pixelwise'
+is non-nil, all frame size changes happen pixelwise and set the
+corresponding size hints for the window manager.
 
----
-*** Emacs can now change window sizes pixelwise.
-Mouse-dragging a modeline or window divider now changes the size of
-adjacent windows pixelwise.  The new option `window-resize-pixelwise',
-when non-nil, automatically makes functions like `balance-windows-area'
-or `fit-window-to-buffer' resize windows pixelwise.  Most functions for
-resizing or accessing sizes of windows now have an additional argument
-which allows to apply changes or return values in pixels instead of
-lines/columns.
++++
+*** Emacs can now change window sizes in units of pixels.
+Mouse-dragging a mode line or window divider now changes the size of
+adjacent windows pixelwise.  If the new option `window-resize-pixelwise'
+is non-nil, functions like `balance-windows-area' and `fit-window-to-buffer'
+resize windows pixelwise.  Most functions for changing or accessing
+window sizes now have an additional argument that allows changes to apply,
+or values to be returned, in pixels instead of lines/columns.
 
----
++++
+*** The functions `window-body-height' and `window-body-width' now never
+count partially visible lines or columns if called with a nil PIXELWISE
+argument.
+
++++
 *** Emacs can now draw dividers between adjacent windows.  To put
 dividers between side-by-side/vertically stacked windows customize the
 frame parameters `right-divider-width' and `bottom-divider-width' to
@@ -223,28 +330,27 @@ the appearance of dividers by customizing the faces `window-divider',
 two are useful to provide a 3D effect, or to better distinguish dividers
 from surrounding display objects.
 
----
++++
 *** New functions are provided to return the pixel sizes of window
 components, namely `window-scroll-bar-width', `window-mode-line-height'
 `window-header-line-height', `window-right-divider-width' and
 `window-bottom-divider-width'.
 
----
++++
 *** The new function `window-text-pixel-size' returns the size of the
 text of a window's buffer in pixels.  This allows functions like
 `fit-frame-to-buffer' and `fit-window-to-buffer' to accurately fit a
 window to its buffer as it will be displayed.
 
----
-*** `fit-window-to-buffer' can now resize windows horizontally.
++++
+*** `fit-window-to-buffer' can now resize windows in both dimensions.
 This behavior is controlled by the new option
-`fit-window-to-buffer-horizontally'.
+`fit-window-to-buffer-horizontally'.  The new option
+`fit-frame-to-buffer' allows to fit the window's frame to its buffer.
 
----
-*** `fit-frame-to-buffer' can now fit frames in both directions.
-This behavior is controlled by the option `fit-frame-to-buffer' which
-tells in which direction(s) the frame shall be fit.  The new options
-`fit-frame-to-buffer-margins' and `fit-frame-to-buffer-sizes' allow to
++++
+*** `fit-frame-to-buffer' now fits frames in both dimensions.  The new
+options `fit-frame-to-buffer-margins' and `fit-frame-to-buffer-sizes'
 control the size of the frame and its position on screen.
 
 ---
@@ -262,11 +368,11 @@ As a command, it was a special case of `C-x 2' (`split-window-below'),
 and as such superfluous.  After being reimplemented in Lisp, its
 interactive form was mistakenly retained.
 
----
++++
 *** The functions `window-size' and `window-total-size' now have an
 optional argument to return a rounded size value.
 
----
++++
 *** `window-state-put' now allows to put a window state into internal
 windows too.
 
@@ -276,16 +382,25 @@ Available only on X, this option allows to control over-scrolling
 using the scroll bar (i.e. dragging the thumb down even when the end
 of the buffer is visible).
 
----
++++
 *** New basic action function `display-buffer-in-previous-window' has
 `display-buffer' display a buffer in a window previously showing that
 buffer.
 
----
++++
 *** New basic action function `display-buffer-at-bottom' has
 `display-buffer' choose or make a window at the bottom of the selected
 frame.
 
++++
+*** New display action function `display-buffer-no-window' to not
+display the buffer in a window.
+
++++
+*** New display action alist entry `allow-no-window' to indicate the
+caller of `display-buffer' is ready to handle the case of not
+displaying the buffer in a window.
+
 ** Lisp evaluation changes
 +++
 *** `eval-defun' on an already defined defcustom calls the :set function,
@@ -336,6 +451,15 @@ means to always load the .elc file.
 
 ** Indentation changes
 
++++
+*** `electric-indent-mode' is now enabled by default.
+Typing RET reindents the current line and indents the new line.
+`C-j' inserts a newline but does not indent.  In some programming modes,
+additional characters are electric (eg `{').
+
++++
+*** New buffer-local `electric-indent-local-mode'.
+
 +++
 *** The behavior of `C-x TAB' (`indent-rigidly') has changed.
 When invoked without a prefix argument, it now activates a transient
@@ -343,8 +467,6 @@ mode in which typing <left>, <right>, <S-left>, and <S-right> adjusts
 the text indentation in the region.  Typing any other key resumes
 normal editing behavior.
 
-*** `electric-indent-mode' is enabled by default.
-
 +++
 *** `tab-stop-list' is now implicitly extended to infinity by repeating
 the last step.  Its default value is changed to nil, which means a tab
@@ -363,6 +485,7 @@ conventions.  To use it, add it to the `fill-nobreak-predicate' hook.
 +++
 ** Uniquify is enabled by default, with `post-forward-angle-brackets' style.
 
++++
 ** New command `C-x SPC' (`rectangle-mark-mode') makes a rectangular region.
 Most commands are still unaware of it, but kill/yank do work on the rectangle.
 
@@ -382,6 +505,7 @@ that summarizes existing registers.  To disable this, set that option to nil.
 Interactive commands that read registers and want to make use of this
 should use `register-read-with-preview' to read register names.
 
++++
 *** New command `frameset-to-register' bound to `C-x r f', replacing
 `frame-configuration-to-register'.  It offers similar functionality,
 plus enhancements like the ability to restore deleted frames.
@@ -397,6 +521,11 @@ macros in registers.
 This searches the region for identical lines, and removes all but one
 copy of each repeated line.  The lines need not be sorted.
 
++++
+** `blink-matching-paren' now only highlights the matching open-paren
+by default, instead of moving cursor.  Set this variable to `jump' to
+enable the old behavior.
+
 \f
 * Changes in Specialized Modes and Packages in Emacs 24.4
 
@@ -428,6 +557,7 @@ Also the following files used by the now obsolete otodo-mode.el:
 *** New Lisp debugger command `v' (`debugger-toggle-locals') toggles the
 display of local variables of the current stack frame.
 
++++
 *** The Lisp debugger's `e' command (`debugger-eval-expression') now includes
 the lexical environment when evaluating the code in the context at point
 (and so allows you to access lexical variables).
@@ -477,14 +607,17 @@ consistent with Calendar's calendrical system and day numbering.
 
 *** EDE
 
++++
 **** The cpp-root project now supports executing a compile command.
 It can be set through the new :compile-command slot or the
 buffer-local variable `compile-command'.
 
++++
 **** Better selection of include directories for the 'linux' project.
 Include directories now support out-of-tree build directories and
 target architecture auto-detection.
 
+---
 *** Semantic
 
 **** Improved detection of used namespaces in current scope in C++.
@@ -544,10 +677,11 @@ if your version doesn't support that option.  See option `cfengine-cf-promises'.
 after `desktop-auto-save-timeout'.  To disable this, customize that option
 to nil (or zero).
 
-*** `desktop-restore-frames', enabled by default, allows saving and
-restoring the frame/window configuration (frameset).  Additional options
-`desktop-restore-in-current-display', `desktop-restore-reuses-frames'
-and `desktop-restore-forces-onscreen' offer further customization.
++++
+*** Desktop now saves and restores the frame/window configuration.
+To disable this, set `desktop-restore-frames' to nil.
+See also related options `desktop-restore-reuses-frames',
+`desktop-restore-in-current-display', and `desktop-restore-forces-onscreen'.
 
 +++
 ** New Dired minor mode `dired-hide-details-mode' toggles whether details,
@@ -703,6 +837,7 @@ the symbol found near point.
 *** New option `hi-lock-auto-select-face'.  When non-nil, hi-lock commands
 will cycle through faces in `hi-lock-face-defaults' without prompting.
 
+---
 ** New Imenu option `imenu-generic-skip-comments-and-strings'.
 
 ** Info
@@ -735,7 +870,7 @@ are lined up to the first one.
 +++
 ** Octave mode
 
-*** Font locking for texinfo comments and new keywords.
+*** Font locking for Texinfo comments and new keywords.
 
 *** Completion in Octave file buffers.
 
@@ -766,7 +901,7 @@ Use `electric-indent-mode' instead.
 to filter the list of packages by a keyword.
 
 +++
-*** In the `describe-package' buffer, there are now buttons listing the 
+*** In the `describe-package' buffer, there are now buttons listing the
 keywords related to the package.  Click on a button to see other packages
 related to that keyword.
 
@@ -795,6 +930,7 @@ names specified by `remember-directory-file-name-format'.
 
 ** Rmail
 
++++
 *** Customize `rmail-mbox-format' to influence some minor aspects of
 how Rmail displays non-MIME messages.
 
@@ -836,8 +972,10 @@ symbol found near point added to the search string initially.
 *** `C-x 8 RET' in Isearch mode reads a character by its Unicode name
 and adds it to the search string.
 
++++
 *** `M-s i' in Isearch mode toggles whether search matches invisible text.
 
++++
 *** `query-replace' skips invisible text when `search-invisible' is nil,
 and opens overlays with hidden text when `search-invisible' is `open'.
 
@@ -879,9 +1017,20 @@ All non-ancient Bash versions support this option.
 ---
 *** `sh-mode' now has its own setting for `add-log-current-defun-function'.
 
-** SMIE indentation can be customized via `smie-config'.
-Emacs can learn the appropriate indentation settings if you provide it
-with an indented sample file.
+** SMIE
+
++++
+*** You can customize the SMIE indentation of a mode via `smie-config'.
+The command `smie-config-guess' can help you derive the appropriate
+indentation settings, if you provide it with an indented sample file.
+Use `smie-config-save' to save the result.
+
++++
+*** You can customize the SMIE indentation of a file by adding an entry to
+the file's local variables of the form: `eval: (smie-config-local '(RULES))'.
+
++++
+*** New commands `smie-config-show-indent' and `smie-config-set-indent'.
 
 ---
 ** SQL mode
@@ -1073,8 +1222,8 @@ The new optional CHECK-TIMERS parameter allows for the prior behavior.
 ** `defvar' and `defcustom' in a let-binding affect the "external" default.
 
 ---
-** The syntax of ?» and ?« is now punctuation instead of matched parens.
-Some languages match those as Â»...«, and others as Â«...», so it is
+** The syntax of ?» and ?« is now punctuation instead of matched parens.
+Some languages match those as »...«, and others as «...», so it is
 better for Emacs to stay neutral by default.
 
 ---
@@ -1152,12 +1301,15 @@ treated as regexps rather than literal strings.
 \f
 * Lisp Changes in Emacs 24.4
 
+** overlays-at can optionally sort its result by priority.
+
 +++
 ** The second argument of `eval' can now specify a lexical environment.
 
 +++
 ** New functions `special-form-p' and `macrop'.
 
++++
 ** New macro `define-alternatives' can be used to define generic commands.
 Generic commands are interactive functions whose implementation can be
 selected among several alternatives, as a matter of user preference.
@@ -1182,24 +1334,30 @@ as a function to call to provide default values.
 
 ** Completion changes
 
-*** The separator for `completing-read-multiple' can now be a regexp.
-The default separator has been changed to allow surrounding spaces
+---
+*** The separator used by `completing-read-multiple' is now a regexp.
+The default `crm-separator' has been changed to allow surrounding spaces
 around the comma.
 
-*** The `common-substring' arg of `display-completion-list' is obsolete.
-Either use `completion-all-completions', which returns highlighted
-strings (including for partial or substring completion), or call
-`completion-hilit-commonality' to add the highlight.
++++
+*** The `common-substring' argument of `display-completion-list',
+which has been documented as obsolete since Emacs 23.1, is now _really_
+obsolete, and no longer advertised.  Instead either call
+`completion-hilit-commonality' to add the highlighting; or use
+`completion-all-completions', which returns highlighted strings.
 
++++
 *** New function `completion-table-with-cache' is a wrapper for
 `completion-table-dynamic' that caches the result of the last lookup.
 
++++
 *** New function `completion-table-merge' to combine several
 completion tables by merging their completions.
 
++++
 ** New minor modes `prettify-symbols-mode' and `global-prettify-symbols-mode'
-let you enable symbol prettification (replacing a string like "lambda" with
-the Greek lambda character).
+display specified symbols as composed characters.  E.g., in Emacs Lisp mode,
+this replaces the string "lambda" with the Greek lambda character.
 
 ** Terminal changes
 
@@ -1212,17 +1370,14 @@ The function `display-popup-menus-p' will now return non-nil for a
 display or frame whenever a mouse is supported on that display or
 frame.
 
-*** New hook `tty-setup-hook'.
-
-** Window Handling
-
-*** New display action function `display-buffer-no-window' to not
-display the buffer in a window.
++++
+*** New hook `tty-setup-hook', run at the end of initializing a text terminal.
 
-*** New display action alist entry `allow-no-window' to indicate the
-caller of `display-buffer' is ready to handle the case of not
-displaying the buffer in a window.
++++
+*** The hook `term-setup-hook' is obsolete.  It is entirely equivalent
+to `emacs-startup-hook'.  See also the new `tty-setup-hook'.
 
++++
 ** New hook `pre-redisplay-function'.
 
 +++
@@ -1277,6 +1432,7 @@ This is like the old `eval-after-load', but better behaved.
 *** `generic-make-keywords-list'
 *** `get-upcase-table' (use `case-table-get-table' instead).
 
++++
 ** `with-wrapper-hook' is obsoleted by `add-function'.
 The few hooks that used with-wrapper-hook are replaced as follows:
 *** `abbrev-expand-function' obsoletes `abbrev-expand-functions'.
@@ -1327,22 +1483,30 @@ used in place of the 9th element of `file-attributes'.
 argument, with the same interpretation as the returned value of
 `visited-file-modtime'.
 
-** Autorevert changes
+** Revert and Autorevert changes
+
++++
+*** The default values of `buffer-stale-function', `revert-buffer-function',
+and `revert-buffer-insert-file-contents-function' are no longer nil.
+Instead they default to functions that do what the nil value used to.
+
++++
+*** `buffer-stale-function' is now used for buffers visiting files too.
 
 ---
-*** If Emacs is compiled with file notification support, notifications
-are used instead of checking the time stamp of the files.  You can
-disable this by setting the user option `auto-revert-use-notify' to
-nil.  Alternatively, a regular expression of directories to be
-excluded from file notifications can be specified by
+*** If Emacs is compiled with file notification support, it uses notifications
+instead of checking file time stamps.  To disable this, set the user option
+`auto-revert-use-notify' to nil.  Alternatively, you can specify a regular
+expression matching directories to be excluded from file notifications via
 `auto-revert-notify-exclude-dir-regexp'.
 
 ---
 *** The new user option `auto-revert-remote-files' enables reversion
-of remote files when set to non-nil.
+of remote files, if set to non-nil.
 
 ** Face changes
 
++++
 *** The function `face-spec-set' is now like `setq' for face specs.
 Its third arg now accepts values specifying a face spec type (defface,
 custom, or override spec), and the relevant spec is set accordingly.
@@ -1351,9 +1515,14 @@ custom, or override spec), and the relevant spec is set accordingly.
 *** New function `add-face-text-property', which can be used to
 conveniently prepend/append new face properties.
 
+---
 *** Face specs set via Custom themes now replace the `defface' spec
-rather than inheriting from it (as do face specs set via Customize).
+rather than inheriting from it.  In other words, setting a face via a
+theme now behaves like setting it via Customize: you only need to
+specify the attributes that you want, you don't need to unset those
+that you don't want.
 
+---
 *** New face characteristic (supports :underline (:style wave))
 specifies whether or not the terminal can display a wavy line.