GNU Emacs NEWS -- history of user-visible changes.
-Copyright (C) 2010-2013 Free Software Foundation, Inc.
+Copyright (C) 2010-2014 Free Software Foundation, Inc.
See the end of the file for license conditions.
Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
`--with-file-notification-no'. See below for file-notify features.
FIXME? This feature is not available for the Nextstep port. (?)
+---
** The configure option `--without-compress-info' has been generalized,
and renamed to `--without-compress-install'. It now prevents compression
of _any_ files during installation.
+---
** The configure option `--with-crt-dir' has been removed.
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.
\f
* Changes in Emacs 24.4
++++
+** New option `gnutls-verify-error', if non-nil, means that Emacs
+should reject SSL/TLS certificates that GnuTLS determines as invalid.
+(This option defaults to nil at present, but this is expected to change
+in a future release.)
+
+++
** Emacs now supports menus on text-mode terminals.
If the terminal supports a mouse, clicking on the menu bar, or on
*** The command `quail-help' is deleted. Use `C-h C-\'
(`describe-input-method') instead.
+** ImageMagick
+
+*** ImageMagick images now support the :max-width and :max-height
+keywords.
+
+*** Some data types aren't auto-detected by ImageMagick. Adding
+:format to `create-image' may help if the content type is in the
+new variable `image-format-suffixes'.
+
** Frame and window changes
+++
** The default value of `comment-use-global-state' is changed to t,
and this variable has been marked obsolete.
+** New user options:
+
+*** `read-regexp-defaults-function' defines a function to read regexps,
+used by commands like `rgrep', `lgrep' `occur', `highlight-regexp',
+etc. You can customize this to specify a function that provides a
+default value from the regexp last history element, or from the symbol
+found at point.
+
+*** `load-prefer-newer', affects how the `load' function chooses the
+file to load. If this is non-nil, then when both .el and .elc
+versions of a file exist, and the caller did not explicitly specify
+which one to load, then the newer file is loaded. The default, nil,
+means to always load the .elc file.
+
\f
* Editing Changes in Emacs 24.4
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
*** New faces `calendar-weekday-header', `calendar-weekend-header',
and `calendar-month-header'.
++++
*** New option `calendar-day-header-array'.
+++
*** New variable `diary-from-outlook-function', used by the command
`diary-from-outlook'.
+---
*** The variable `calendar-font-lock-keywords' is obsolete.
** Calc
** CUA mode
-*** CUA mode was changed to make use of delete-selection-mode and
-shift-select-mode. So you can now enable it independently from
-transient-mark-mode, delete-selection-mode, and shift-select-mode.
-As a result, cua-highlight-region-shift-only is obsolete
-(you can disable transient-mark-mode to get the same result).
+*** CUA mode now uses `delete-selection-mode' and `shift-select-mode'.
+Hence, you can now enable it independently from `transient-mark-mode',
+`delete-selection-mode', and `shift-select-mode'.
+
+*** `cua-highlight-region-shift-only' is now obsolete.
+You can disable `transient-mark-mode' to get the same result.
*** CUA's rectangles can now be used via `cua-rectangle-mark-mode'.
+** CFEngine mode
+
+*** Support for completion, ElDoc, and Flycheck has been added.
+
+*** The current CFEngine syntax is parsed from "cf-promises -s json".
+There is a fallback syntax available if you don't have cf-promises or
+if it doesn't support that option.
+
** Delete Selection mode can now be used without `transient-mark-mode'.
** Desktop
** Eldoc Mode works properly in the minibuffer.
+** Electric Pair mode
+*** New `electric-pair-preserve-balance' enabled by default.
+
+Pairing/skipping only kicks in when that help the balance of
+parentheses and quotes, i.e. the buffer should end up at least as
+balanced as before.
+
+You can further control this behavior by adjusting the predicates
+stored in `electric-pair-inhibit-predicate' and
+`electric-pair-skip-self'.
+
+*** New `electric-pair-delete-adjacent-pairs' enabled by default.
+
+In `electric-pair-mode', the commands `backward-delete-char' and
+`backward-delete-char-untabify' are now bound to electric variants
+that delete the closer when invoked between adjacent pairs.
+
+*** New `electric-pair-open-newline-between-pairs' enabled by default.
+
+In `electric-pair-mode', inserting a newline between adjacent pairs
+opens an extra newline after point, which is indented if
+`electric-indent-mode' is also set.
+
+*** New `electric-pair-skip-whitespace' enabled by default.
+
+Controls if skipping over closing delimiters should jump over any
+whitespace slack. Setting it to `chomp' makes it delete this
+whitespace. See also the variable
+`electric-pair-skip-whitespace-chars'.
+
+*** New variables control the pairing in strings and comments.
+
+You can customize `electric-pair-text-pairs' and
+`electric-pair-text-syntax-table' to tweak pairing behavior inside
+strings and comments.
+
** EPA
*** New option `epa-mail-aliases'.
*** New option `imenu-generic-skip-comments-and-strings'.
** Info
-
+---
*** New face `info-index-match' is used to highlight matches in index
entries displayed by `Info-index-next', `Info-virtual-index' and
`info-apropos'.
*** `describe-package' buffer uses the `:url' extra property to
display a `Homepage' header, if it's present.
+*** In the buffer produced by `describe-package', there are now buttons
+listing the keywords related to that package. You can click on them
+to see other packages related to any given keyword.
+
+*** In the *Packages* buffer, `f' or the Package->Filter menu filters
+the packages by a keyword.
+
** Prolog mode
*** `prolog-use-smie' has been removed, along with the non-SMIE
starts a symbol (identifier) incremental search forward with the
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.
*** By default, prefix arguments do not now terminate Isearch mode.
Set `isearch-allow-prefix' to nil to restore old behavior.
++++
*** More Isearch commands accept prefix arguments, namely
`isearch-printing-char', `isearch-quote-char', `isearch-yank-word',
`isearch-yank-line'.
++++
*** Word search now matches whitespace at the beginning/end
of the search string if it contains leading/trailing whitespace.
In an incremental word search or when using a non-nil LAX argument
*** New command `ses-rename-cell' allows assigning names to SES cells.
** Shell
-
+---
*** `explicit-bash-args' now always defaults to use --noediting.
During initialization, Emacs no longer expends a process to decide
whether it is safe to use Bash's --noediting option. These days
--noediting is ubiquitous; it was introduced in 1996 in Bash version 2.
-*** The SMIE indentation engine is now used by default.
-
** Shell Script mode
*** `sh-mode' now has the mode own `add-log-current-defun-function'.
You can pick the name of the function and the variables with `C-x 4 a'.
+*** The SMIE indentation engine is now used by default.
+
** SMIE indentation can be customized via `smie-config'.
The customization can be guessed by Emacs by providing a sample indented
file and letting SMIE learn from it.
*** Handlers for `file-notify-add-watch' and `file-notify-rm-watch'
for remote machines which support filesystem notifications.
+** New command `url-cookie-list' displays all the current cookies, and
+allows deleting selected cookies.
+
** VC and related modes
+++
under current version control system. When called with a prefix
argument, you can remove a file from the ignored file list.
+---
*** `cvs-append-to-ignore' has been renamed to `vc-cvs-append-to-ignore'
because it is moved to vc-cvs.el.
*** The previous version of todo-mode.el is obsolete and renamed otodo-mode.el.
-*** xesam.el.
+*** xesam.el is obsolete, because the XESAM project has been canceled.
+++
*** yow.el is obsolete; use fortune.el or cookie1.el instead.
\f
* Incompatible Lisp Changes in Emacs 24.4
+---
** `kill-region' lost its `yank-handler' optional argument.
++++
** `(input-pending-p)' no longer runs other timers which are ready to
run. The new optional CHECK-TIMERS param 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 better stay neutral.
+---
** In compiled Lisp files, the header no longer includes a timestamp.
++++
** The default file coding for Emacs Lisp files is now utf-8.
(See `file-coding-system-alist'.) In most cases, this change is
transparent, but files that contain unusual characters without
errors. You should either convert them to utf-8 or add an explicit
`coding:' cookie.
++++
** `overriding-terminal-local-map' no longer replaces the local keymaps.
It used to disable the minor mode, major mode, and text-property keymaps,
whereas now it simply has higher precedence.
** Default process filters and sentinels are not nil any more.
Instead they default to a function which does what the nil value used to do.
++++
** `read-event' does not return decoded chars in ttys any more.
-Just as was the case in Emacs-22 and before, decoding of tty input according to
-keyboard-coding-system is not performed in read-event any more. But contrary
-to that past, it is still done before input-decode-map/function-key-map/...
+As was the case in Emacs 22 and before, the decoding of terminal
+input, according to `keyboard-coding-system', is not performed in
+`read-event' any more. But unlike in Emacs 22, this decoding is still
+done before input-decode-map, function-key-map, etc.
-** Removed inhibit-local-menu-bar-menus.
+---
+** Removed `inhibit-local-menu-bar-menus'.
-** frame-local variables that affect redisplay do not work any more.
+---
+** Frame-local variables that affect redisplay do not work any more.
More specifically, the redisplay does not bother to check for a frame-local
value when looking up variables.
-** nil and "unbound" are indistinguishable in symbol-function.
-`symbol-function' never signals `void-function' any more.
-`fboundp' returns non-nil if the symbol was `fset' to nil.
++++
+** nil and "unbound" are indistinguishable in `symbol-function'.
+`symbol-function' does not signal a `void-function' error any more.
+To determine if a symbol's function definition is void, use `fboundp'.
++++
** `defadvice' does not honor the `freeze' flag and cannot advise
special-forms any more.
-** `dolist' in lexical-binding mode does not bind VAR in RESULT any more.
-VAR was bound to nil which was not tremendously useful and just lead to
-spurious warnings about an unused var.
+---
+** `dolist' no longer binds VAR while evaluating the RESULT form,
+when lexical binding is enabled. Previously, VAR was bound to nil,
+which often led to spurious unused-variable warnings.
++++
** The return value of `backup-buffer' has changed.
The second argument is no longer an SELinux context, instead it is an
alist of extended attributes as returned by the new function
`file-extended-attributes'. The attributes can be applied to another
file using `set-file-extended-attributes'.
++++
+** By default `copy-file' no longer copies file permission bits to an
+existing destination; and it sets the file permission bits of a newly
+created destination to those of the source, masked by the default file
+permissions. To copy the file permission bits, pass t as the
+PRESERVE-PERMISSIONS argument of `copy-file'.
+
++++
** `visited-file-modtime' now returns -1 for nonexistent files.
Formerly it returned a list (-1 LOW USEC PSEC), but this was ambiguous
in the presence of files with negative time stamps.
-** The cars of the elements in `interpreter-mode-alist' are now treated
-as regexps rather than literal strings. Technically this is an
-incompatible change, but unless you are using interpreter-mode-alist
-for something (not just adding elements to it), it ought not to affect you.
++++
+** The cars of the elements in `interpreter-mode-alist' are now
+treated as regexps rather than literal strings.
\f
* Lisp Changes in Emacs 24.4
-** New variable `enable-dir-local-variables'.
-Directory-local variables are ignored if this is set to nil. This may
-be useful for modes that want to ignore directory-locals while still
-respecting file-local variables.
++++
+** 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.
+** The `defalias-fset-function' property lets you catch `defalias'
+calls, and redirect them to your own function, instead of `fset'.
+
++++
+** New variable `enable-dir-local-variables'.
+Directory-local variables are ignored if this is nil. This may be
+useful for modes that want to ignore directory-locals while still
+respecting file-local variables.
+
++++
** New function `get-pos-property'.
-** Minibuffer changes
+** Completion changes
-*** completing-read-multiple's separator can now be a regexp.
-The default separator is changed to allow surrounding spaces around the comma.
+*** The separator for `completing-read-multiple' can now be a regexp.
+The default separator has been changed to allow surrounding spaces
+around the comma.
-*** New option `read-regexp-defaults-function' defines the function
-that provides the default value for commands that ask for a regexp:
-`rgrep', `lgrep' `occur', `multi-occur', `multi-occur-in-matching-buffers',
-`highlight-regexp', `highlight-lines-matching-regexp', `highlight-phrase'.
-This option can be customized to values that provide a default value
-from the regexp last history element or from the symbol found at point.
+*** 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.
-** New option `load-prefer-newer', if non-nil, means that when both
-.el and .elc versions of a file exist, rather than `load' always
-choosing the .elc version, it will choose whichever is newer
-(unless you explicitly specify one or the other).
+** 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).
-** New hook `pre-redisplay-function'.
+** Terminal changes
+++
-** Functions that pop up menus and dialogs now work on all terminal types,
-including TTYs.
-This includes `x-popup-menu', `x-popup-dialog', `message-box',
-`yes-or-no-p', etc.
+*** Functions to pop up menus and dialogs now work on all terminals,
+including TTYs. This includes `x-popup-menu', `x-popup-dialog',
+`message-box', `yes-or-no-p', etc.
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 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.
+
+** New hook `pre-redisplay-function'.
+
++++
** New bool-vector set operation functions:
*** `bool-vector-exclusive-or'
*** `bool-vector-union'
+++
** Comparison functions =, <, >, <=, >= now take many arguments.
-** The second argument of `eval' can now be a lexical-environment.
+** Error-handling changes
-** `with-demoted-errors' takes an additional argument `format'.
+++
-** New function `define-error'.
+*** New function `define-error'.
-** New hook `tty-setup-hook'.
+*** `with-demoted-errors' takes an additional argument `format'.
+++
** New macro with-eval-after-load. Like eval-after-load, but better behaved.
** New library subr-x.el for misc helper functions
++++
*** `hash-table-keys'
++++
*** `hash-table-values'
+
*** `string-blank-p`
*** `string-empty-p`
*** `string-join`
*** `string-remove-prefix'
*** `string-remove-suffix'
++++
** Obsoleted functions:
*** `log10'
*** `dont-compile'
*** `isearch-nonincremental-exit-minibuffer'
*** `isearch-filter-visible'
*** `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:
*** `completion-in-region-function' obsoletes `completion-in-region-functions'.
*** `filter-buffer-substring-function' obsoletes `filter-buffer-substring-functions'.
++++
** `byte-compile-interactive-only-functions' is now obsolete.
-It has been replaced by the symbol property 'interactive-only.
+To specify that a command should only be called interactively, give it
+a non-nil `interactive-only' property.
++++
** `split-string' now takes an optional argument TRIM.
The value, if non-nil, is a regexp that specifies what to trim from
the start and end of each substring.
** New function `string-suffix-p'.
-** `get-upcase-table' is obsoleted by the new `case-table-get-table'.
-
** File-handling changes
++++
*** Support for filesystem notifications.
Emacs now supports notifications of filesystem changes, such as
creation, modification, and deletion of files. This requires the
MS-Windows systems, this is supported for Windows XP and newer
versions.
++++
*** The 9th element returned by `file-attributes' is now unspecified.
Formerly, it was t if the file's gid would change if file were deleted
and recreated. This value has been inaccurate for years on many
platforms, and nobody seems to have noticed or cared.
++++
*** The 6th argument to `copy-file' has been renamed to
-PRESERVE-EXTENDED-ATTRIBUTES as it now handles both SELinux context
-and ACL entries.
+PRESERVE-PERMISSIONS as it now handles ACL entries and the traditional
+Unix file permission bits as well as SELinux context.
++++
*** The function `file-ownership-preserved-p' now has an optional
argument GROUP which causes it check for file group too. This can be
used in place of the 9th element of `file-attributes'.
-
+---
*** The function `set-visited-file-modtime' now accepts a 0 or -1
argument, with the same interpretation as the returned value of
`visited-file-modtime'.
** Face changes
-*** The function `face-spec-set' is now analogous to `setq' for face specs.
-Its third arg now accepts values specifying exactly which face spec to
-set (defface, custom, or user spec), and it directly sets the relevant
-property using the supplied face spec.
+*** 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.
++++
*** New function `add-face-text-property', which can be used to
conveniently prepend/append new face properties.
*** New face characteristic (supports :underline (:style wave))
specifies whether or not the terminal can display a wavy line.
++++
*** New face spec attribute :distant-foreground
specifies foreground to use if background color is near the foreground
color that would otherwise have been used.
whether or not it specifies a frame delay.
+++
-*** When animating images that do not specify a frame delay,
-Emacs uses `image-default-frame-delay'.
+*** New variable `image-default-frame-delay' gives the frame delay for
+animated images which do not specify a frame delay.
+++
*** New functions `image-current-frame' and `image-show-frame' for getting
and setting the current frame of a multi-frame image.
-*** You can change the speed of animated images.
-
** EIEIO
*** Namespace cleanup by obsolete-aliasing functions to use `eieio-' prefix.
** `time-to-seconds' is not obsolete any more.
-** New functions `special-form-p' and `macrop'.
-
-** Docstrings can be made dynamic by adding a `dynamic-docstring-function'
-text-property on the first char.
-
-** The `defalias-fset-function' property lets you catch calls to defalias
-and redirect them to your own function instead of `fset'.
-
** The lock for 'DIR/FILE' is now 'DIR/.#FILE' and may be a regular file.
When you edit DIR/FILE, Emacs normally creates a symbolic link
DIR/.#FILE as a lock that warns other instances of Emacs that DIR/FILE
On file systems that do not support symbolic links, the lock is now a
regular file with contents being what would have been in the symlink.
++++
** New functions `group-gid' and `group-real-gid'.
-** The `common-substring' argument of display-completion-list is obsolete.
-Either use `completion-all-completions' which already returns highlighted
-strings (including for partial or substring completion) or call
-`completion-hilit-commonality' to add the highlight.
+** The spelling of the rx.el category `chinese-two-byte' has been
+corrected (the first 'e' was missing).
** Changes to the Emacs Lisp Coding Conventions in Emacs 24.4
++++
*** The package descriptor and name of global variables, constants,
and functions should be separated by two hyphens if the symbol is not
meant to be used by other packages.
native is the default.
** OSX >= 10.7 can use sRGB colorspace.
-Customize `ns-use-srgb-colorspace' to change style. nil is the default.
+Customize `ns-use-srgb-colorspace' to change style. t is the default.
Note: This does not apply to images.
\f
`imagemagick-filter-types' returns the list of types that will be
treated as images.
-*** ImageMagick images now support the :max-width and :max-height
-keywords.
-
-*** Some data types aren't auto-detected by ImageMagick. Adding
-:format to `create-image' may help if the content type is in the
-new variable `image-format-suffixes'.
-
** Minibuffer
*** In minibuffer filename prompts, `C-M-f' and `C-M-b' now move to the
** In the Package Menu, newly-available packages are listed as "new",
and sorted above the other "available" packages by default.
-** If your Emacs was built from a bzr checkout, the new variable
-`emacs-bzr-version' contains information about the bzr revision used.
+** If your Emacs was built from a repository checkout, the new variable
+`emacs-repository-version' contains information about the bzr revision used.
** New option `create-lockfiles' specifies usage of lockfiles.
It defaults to t. Changing it to nil inhibits the creation of lock
The `url-retrieve' function now uses this to encode its URL argument,
in case that is not properly encoded.
-*** New command `url-cookie-list' displays all the current cookies, and
-allows deleting selected cookies.
-
** notifications.el supports now version 1.2 of the Notifications API.
The function `notifications-get-capabilities' returns the supported
server properties.
*** New option `switch-to-buffer-preserve-window-point' to restore a
window's point when switching buffers.
-*** 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.
-
*** New display action alist entries `window-height' and `window-width'
specify the size of new windows created by `display-buffer'.
modes, e.g. (add-hook 'prog-mode-hook 'flyspell-prog-mode) to enable
on-the-fly spell checking for comments and strings.
-**** New minor modes `prettify-symbols-mode' and
-`global-prettify-symbols-mode' let the user enable symbol
-prettification (replacing a string like "lambda" with the Greek lambda
-character).
-
*** New hook `change-major-mode-after-body-hook', run by
`run-mode-hooks' just before any other mode hooks.