More NEWS copyedits, and some reordering
[bpt/emacs.git] / etc / NEWS
CommitLineData
29b7722a 1GNU Emacs NEWS -- history of user-visible changes.
5b87ad55 2
a1ed8b05 3Copyright (C) 2010-2012 Free Software Foundation, Inc.
5b87ad55 4See the end of the file for license conditions.
a933dad1 5
893db5bc 6Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
9a21d88b
KS
7If possible, use M-x report-emacs-bug.
8
eb199145 9This file is about changes in Emacs version 24.
9a21d88b 10
eb199145
GM
11See files NEWS.23, NEWS.22, NEWS.21, NEWS.20, NEWS.19, NEWS.18,
12and NEWS.1-17 for changes in older Emacs versions.
9a21d88b
KS
13
14You can narrow news to a specific version by calling `view-emacs-news'
15with a prefix argument or by typing C-u C-h C-n.
6bc66c10 16
a1ed8b05 17\f
2a1e2476 18* Installation Changes in Emacs 24.3
b8df54ff 19
6bc66c10 20** The default X toolkit is now Gtk+ version 3.
823b2fb6
GM
21If you don't pass `--with-x-toolkit' to configure, or if you use
22`--with-x-toolkit=gtk' or `--with-x-toolkit=yes', configure will try
23to build with Gtk+ version 3, and if that fails, try Gtk+ version 2.
d71a6517 24You can explicitly require a specific version by passing
823b2fb6 25`--with-x-toolkit=gtk2' or `--with-x-toolkit=gtk3' to configure.
d71a6517 26
6bc66c10 27** New configure option `--enable-link-time-optimization', to utilize
da3d2105
DA
28an appropriate feature provided by GCC since version 4.5.0.
29
823b2fb6 30** New configure option `--enable-gcc-warnings', intended for developers.
b8df54ff
PE
31If building with GCC, this enables compile-time checks that warn about
32possibly-questionable C code. On a recent GNU system there should be
33no warnings; on older and on non-GNU systems the generated warnings
ae6e112d 34may be useful.
b8df54ff 35
823b2fb6 36** The configure option `--enable-use-lisp-union-type' has been
6bc66c10 37renamed to `--enable-check-lisp-object-type', as the resulting
d71a6517
GM
38Lisp_Object type no longer uses a union to implement the compile time
39check that this option enables.
40
6bc66c10
GM
41** New configure option `--without-all' to disable most of the optional
42features (image support, etc.) that are normally enabled by default.
43
823b2fb6 44** The configure option `--disable-maintainer-mode' has been removed,
501390c5
PE
45as it was confusingly-named and rarely useful.
46
f14a4380
GM
47** The configure options `--program-prefix', `--program-suffix', and
48`--program-transform-name' apply to more than just the installed
49binaries. Now they also affect the man pages, icons, and the
50etc/emacs.desktop file; but not the info pages, since this would break
51links between the various manuals.
1a9c6830 52
823b2fb6
GM
53** You can use `NO_BIN_LINK=t make install' to prevent the installation
54overwriting "emacs" in the installation bin/ directory with a link
6bc66c10 55to "emacs-VERSION".
823b2fb6 56
a4a18b8b
GM
57** Emacs uses libtinfo in preference to libncurses, if available.
58
187e9b90
GM
59** On FreeBSD and NetBSD, configure no longer adds /usr/local/lib and
60/usr/pkg/lib to the linker search path. You must add them yourself if
61you want them.
62
6bc66c10 63** The standalone scripts `rcs-checkin' and `vcdiff' have been removed
276d5f5d
GM
64(from the bin and libexec directories, respectively). The former is
65no longer relevant, the latter is replaced by lisp (in vc-sccs.el).
66
a1ed8b05 67\f
2a1e2476 68* Startup Changes in Emacs 24.3
e5fcdb5e
GM
69
70** Emacs no longer searches for `leim-list.el' files beneath the standard
71lisp/ directory. There should not be any there anyway. If you have
823b2fb6 72been adding them there, put them somewhere else; e.g., site-lisp.
e5fcdb5e 73
4107c81e
GM
74** The `--no-site-lisp' command line option now works for Nextstep builds.
75
a1ed8b05 76\f
2a1e2476 77* Changes in Emacs 24.3
a1ed8b05 78
6bc66c10 79** Help
c89926a5 80
6bc66c10 81*** `C-h f' (`describe-function') can now perform autoloading.
c89926a5
CY
82When this command is called for an autoloaded function whose docstring
83contains a key substitution construct, that function's library is
84automatically loaded, so that the documentation can be shown
85correctly. To disable this, set `help-enable-auto-load' to nil.
86
87*** `C-h f' now reports previously-autoloaded functions as "autoloaded",
88even after their associated libraries have been loaded (and the
89autoloads have been redefined as functions).
90
6bc66c10 91** ImageMagick
2f940384 92
6bc66c10
GM
93*** Images displayed via ImageMagick now support transparency and the
94:background image specification property.
cd996018 95
6bc66c10 96*** When available, ImageMagick support is automatically enabled.
c505aaeb
CY
97It is no longer necessary to call `imagemagick-register-types'
98explicitly to install ImageMagick image types; that function is called
7d806bfe 99automatically at startup, or when customizing an imagemagick- option.
2f940384 100
c505aaeb 101*** Setting `imagemagick-types-inhibit' to t now disables the use of
823b2fb6
GM
102ImageMagick to view images. (You must call `imagemagick-register-types'
103afterwards if you do not use customize to change this.)
2f940384 104
7afbaca4 105*** The new variable `imagemagick-enabled-types' also affects which
60b5f187
GM
106ImageMagick types are treated as images. The function
107`imagemagick-filter-types' returns the list of types that will be
108treated as images.
2f940384 109
6bc66c10
GM
110** Minibuffer
111
112*** In minibuffer filename prompts, `C-M-f' and `C-M-b' now move to the
113next and previous path separator, respectively.
c505aaeb 114
6bc66c10
GM
115*** `minibuffer-electric-default-mode' can shorten "(default ...)" to "[...]"
116in minibuffer prompts. Just set `minibuffer-eldef-shorten-default'
117non-nil before enabling the mode.
118
119** Mode line
120
121*** New option `mode-line-default-help-echo' specifies the help text
122(shown in a tooltip or in the echo area) for any part of the mode line
123that does not have its own specialized help text.
124
125*** You can now click mouse-3 in the coding system indicator to invoke
126`set-buffer-file-coding-system'.
127
128** Server and client
2f940384 129
f938eda9
CY
130*** emacsclient now obeys string values for `initial-buffer-choice',
131if it is told to open a new frame without specifying any file to visit
132or expression to evaluate.
2f940384 133
f938eda9 134*** New option `server-auth-key' specifies a shared server key.
db80bdc8 135
f938eda9
CY
136** Emacs now generates backtraces on fatal errors.
137On encountering a fatal error, Emacs now outputs a textual description
138of the fatal signal, and a short backtrace on platforms like glibc
139that support backtraces.
2e2d2a13 140
6bc66c10
GM
141** `C-x C-q' is now bound to the new minor mode `read-only-mode'.
142This minor mode replaces `toggle-read-only', which is now obsolete.
143
144** Most `y-or-n' prompts now allow you to scroll the selected window.
145Typing `C-v' or `M-v' at a y-or-n prompt scrolls forward or backward
146respectively, without exiting from the prompt.
147
148** In the Package Menu, newly-available packages are listed as "new",
149and sorted above the other "available" packages by default.
150
f938eda9
CY
151** If your Emacs was built from a bzr checkout, the new variable
152`emacs-bzr-version' contains information about the bzr revision used.
de6ff46d 153
6bc66c10 154** New option `create-lockfiles' specifies usage of lockfiles.
f938eda9
CY
155It defaults to t. Changing it to nil inhibits the creation of lock
156files (use this with caution).
dc0f75c8 157
6bc66c10
GM
158** New option `enable-remote-dir-locals', if non-nil, allows directory-local
159variables on remote hosts.
21ffb35a 160
f85f636a
CY
161** The entry for PCL-CVS has been removed from the Tools menu.
162The PCL-CVS commands are still available via the keyboard.
163
6bc66c10
GM
164** Using "unibyte: t" in Lisp source files is obsolete.
165Use "coding: raw-text" instead.
166
167** Internationalization
2f940384 168
f938eda9 169*** New language environment: Persian.
2f940384 170
f938eda9
CY
171*** New input method `vietnamese-vni'.
172
6bc66c10 173** Nextstep (GNUstep / Mac OS X) port
2f940384 174
823b2fb6 175*** Support for fullscreen and the frame parameter fullscreen.
2f940384 176
1a9c6830
GM
177*** A file dialog is used for open/save operations initiated from the
178menu/toolbar.
179
a1ed8b05 180\f
2a1e2476 181* Editing Changes in Emacs 24.3
c25df26e 182
6bc66c10 183** Search and Replace
2f940384 184
f938eda9
CY
185*** Non-regexp Isearch now performs "lax" space matching.
186Each sequence of spaces in the supplied search string may match any
187sequence of one or more whitespace characters, as specified by the
188variable `search-whitespace-regexp'. (This variable is also used by a
823b2fb6 189similar existing feature for regexp Isearch.)
2f940384 190
f938eda9
CY
191*** New Isearch command `M-s SPC' toggles lax space matching.
192This applies to both ordinary and regexp Isearch.
2f940384 193
f938eda9
CY
194*** New option `replace-lax-whitespace'.
195If non-nil, `query-replace' uses flexible whitespace matching too.
196The default is nil.
2f940384 197
b9cb2387
JL
198*** Global `M-s _' starts a symbol (identifier) incremental search,
199and `M-s _' in Isearch toggles symbol search mode.
200`M-s c' in Isearch toggles search case-sensitivity.
201
6bc66c10
GM
202** Navigation commands
203
204*** New binding `M-g c' for `goto-char'.
205
206*** New binding `M-g TAB' for `move-to-column'.
207
208*** `M-g TAB' (`move-to-column') prompts for a column number if called
209interactively with no prefix arg. Previously, it moved to column 1.
210
211** New option `yank-handled-properties' allows processing of text
212properties on yanked text, in ways that are more general than just
213removing them (as is done by `yank-excluded-properties').
214
215** New option `delete-trailing-lines' specifies whether
216M-x delete-trailing-whitespace should delete trailing lines at the end
217of the buffer. It defaults to t.
218
219** `C-u M-=' now counts lines/words/characters in the entire buffer.
220
48de8b12
CY
221** `C-x 8 RET' is now bound to `insert-char', which is now a command.
222`ucs-insert' is now an obsolete alias for `insert-char'.
223
48de8b12
CY
224** The `z' key no longer has a binding in most special modes.
225It used to be bound to `kill-this-buffer', but `z' is too easy to
226accidentally type.
227
6bc66c10
GM
228** New command `C-x r M-w' (`copy-rectangle-as-kill').
229It copies the region-rectangle as the last rectangle kill.
48de8b12 230
6bc66c10 231** Registers
2f940384 232
823b2fb6 233*** `C-x r +' is now overloaded to invoke `append-to-register'.
2f940384 234
f938eda9 235*** New option `register-separator' specifies the register containing
823b2fb6
GM
236the text to put between collected texts for use with
237M-x append-to-register and M-x prepend-to-register.
dd7ffad6 238
a1ed8b05 239\f
2a1e2476 240* Changes in Specialized Modes and Packages in Emacs 24.3
b2459884 241
6bc66c10 242** Common Lisp emulation (CL)
f938eda9 243
89660017 244*** CL's main entry is now (require 'cl-lib).
823b2fb6
GM
245`cl-lib' is like the old `cl' except that it uses the namespace cleanly;
246i.e., all its definitions have the "cl-" prefix (and internal definitions
247use the "cl--" prefix).
7c1898a7 248
823b2fb6
GM
249If `cl' provided a feature under the name `foo', then `cl-lib'
250provides it under the name `cl-foo' instead; with the exceptions of the
251few `cl' definitions that had to use `foo*' to avoid conflicts with
252pre-existing Elisp entities. These have been renamed to `cl-foo'
253rather than `cl-foo*'.
7c1898a7 254
92246540 255The old `cl' is now deprecated and is mainly just a bunch of aliases that
823b2fb6 256provide the old, non-prefixed names. Some exceptions are listed below:
7c1898a7 257
89660017
SM
258*** `cl-flet' is not like `flet' (which is deprecated).
259Instead it obeys the behavior of Common-Lisp's `flet'.
e8693c96
GM
260In particular, in cl-flet function definitions are lexically scoped,
261whereas in flet the scoping is dynamic.
89660017
SM
262
263*** `cl-labels' is slightly different from `labels'.
823b2fb6
GM
264The difference is that it relies on the `lexical-binding' machinery
265(as opposed to the `lexical-let' machinery used previously) to capture
266definitions in closures, so such closures will only work if `lexical-binding'
267is in use.
89660017 268
f94b04fc 269*** `cl-letf' is not exactly like `letf'.
4ddedf94
GM
270The only difference is in details that relate to some deprecated usage
271of `symbol-function' in place forms.
f94b04fc 272
89660017 273*** `progv' was rewritten to use the `let' machinery.
823b2fb6
GM
274A side effect is that variables without corresponding values are bound
275to nil rather than being made unbound.
89660017 276
9512f820
GM
277*** The following methods of extending `setf' are obsolete
278(use features from gv.el instead):
279`define-modify-macro' (use `gv-letplace')
031b2ea7
GM
280`defsetf' (use `gv-define-simple-setter' or `gv-define-setter')
281`define-setf-expander' (use `gv-define-setter' or `gv-define-expander')
2b4da3ff 282`get-setf-method' no longer exists (see "Incompatible Lisp Changes")
f94b04fc 283
6bc66c10 284** Diff mode
f938eda9 285
6bc66c10
GM
286*** Changes are now highlighted using the same color scheme as in
287modern VCSes. Deletions are displayed in red (new faces
288`diff-refine-removed' and `smerge-refined-removed', and new definition
289of `diff-removed'), insertions in green (new faces `diff-refine-added'
290and `smerge-refined-added', and new definition of `diff-added').
2f940384 291
6bc66c10
GM
292*** The variable `diff-use-changed-face' defines whether to use the
293face `diff-changed', or `diff-removed' and `diff-added' to highlight
294changes in context diffs.
2f940384 295
6bc66c10
GM
296*** The new command `diff-delete-trailing-whitespace' removes trailing
297whitespace introduced by a diff.
f938eda9 298
6bc66c10
GM
299** Ediff now uses the same color scheme as Diff mode.
300
301** Python mode
302
303A new version of python.el, which provides several new features, including:
304per-buffer shells, better indentation, Python 3 support, and improved
305shell-interaction compatible with iPython (and virtually any other
306text based shell).
307
308*** Some user options have been replaced/renamed, including (old -> new):
309**** python-indent -> python-indent-offset
310**** python-guess-indent -> python-indent-guess-indent-offset
311**** python-pdbtrack-do-tracking-p -> python-pdbtrack-activate
312**** python-use-skeletons -> python-skeleton-autoinsert
313
314*** Some user options have been removed, including:
315
316**** `python-indent-string-contents': Strings are never indented.
317
318**** `python-honour-comment-indentation':
319Comments are never considered as indentation markers themselves.
320
321**** `python-continuation-offset': Indentation is automatically
322calculated in a pep8 compliant way depending on the context.
323
324**** `python-shell-prompt-alist', `python-shell-continuation-prompt-alist':
325Have no direct mapping as the shell interaction is completely different.
326
327**** `python-python-command', `python-jython-command':
328Replaced by `python-shell-interpreter'.
329
330**** `inferior-python-filter-regexp', `python-remove-cwd-from-path',
331`python-pdbtrack-minor-mode-string', `python-source-modes':
332No longer relevant.
333
334*** Some commands have been replaced (old -> new):
335**** python-insert-class -> python-skeleton-class
336**** python-insert-def -> python-skeleton-def
337**** python-insert-for -> python-skeleton-for
338**** python-insert-if -> python-skeleton-if
339**** python-insert-try/except -> python-skeleton-try
340**** python-insert-try/finally -> python-skeleton-try
341**** python-insert-while -> python-skeleton-while
342**** python-find-function -> python-nav-jump-to-defun
343**** python-next-statement -> python-nav-forward-sentence
344**** python-previous-statement -> python-nav-backward-sentence
345**** python-beginning-of-defun-function -> python-nav-beginning-of-defun
346**** python-end-of-defun-function -> python-nav-end-of-defun
347**** python-send-buffer -> python-shell-send-buffer
348**** python-send-defun -> python-shell-send-defun
349**** python-send-region -> python-shell-send-region
350**** python-send-region-and-go -> emulate with python-shell-send-region
351and python-shell-switch-to-shell
352**** python-send-string -> python-shell-send-string
353**** python-switch-to-python -> python-shell-switch-to-shell
354**** python-describe-symbol -> python-eldoc-at-point
e76f0800 355
f938eda9
CY
356** D-Bus
357
f938eda9
CY
358*** New variables `dbus-compiled-version' and `dbus-runtime-version'.
359
f938eda9
CY
360*** The D-Bus object manager interface is implemented.
361
f938eda9
CY
362*** Variables of type :(u)int32 and :(u)int64 accept floating points,
363if their value does not fit into Emacs's integer range.
364
823b2fb6
GM
365*** The function `dbus-call-method' is now non-blocking.
366It can be interrupted by `C-g'. `dbus-call-method-non-blocking' is obsolete.
f938eda9 367
823b2fb6 368*** Signals can also be sent as unicast messages.
f938eda9 369
f938eda9 370*** The argument list of `dbus-register-signal' has been extended,
6bc66c10 371according to the new match rule types of D-Bus.
f938eda9 372
f938eda9
CY
373*** `dbus-init-bus' supports private connections.
374
f938eda9
CY
375*** There is a new function `dbus-setenv'.
376
6bc66c10
GM
377** `desktop-path' no longer includes the "." directory.
378Desktop files are now located in ~/.emacs.d by default.
f938eda9
CY
379
380** Dired
2f940384 381
f938eda9
CY
382*** `dired-do-async-shell-command' executes each file sequentially
383if the command ends in `;' (when operating on multiple files).
384Otherwise, it executes the command on each file in parallel.
2f940384 385
823b2fb6
GM
386*** Typing `M-n' in the minibuffer of `dired-do-chmod', `dired-do-chgrp',
387`dired-do-chown', and `dired-do-touch' yanks the attributes of the
f938eda9 388file at point.
2f940384 389
f938eda9 390*** When the region is active, `m' (`dired-mark'), `u' (`dired-unmark'),
823b2fb6 391`DEL' (`dired-unmark-backward'), and `d' (`dired-flag-file-deletion')
f938eda9 392mark/unmark/flag all files in the active region.
2f940384 393
f938eda9
CY
394*** The minibuffer default for `=' (`dired-diff) has changed.
395It is now the backup file for the file at point, if one exists.
396In Transient Mark mode the default is the file at the active mark.
2f940384 397
f938eda9
CY
398*** `M-=' is no longer bound to `dired-backup-diff' in Dired buffers.
399The global binding for `M-=', `count-words-region' is in effect.
400
02969baf
GM
401** ERC
402
6e5e9b70
GM
403*** New module "notifications", which can send a notification when you
404receive a private message or your nickname is mentioned.
02969baf
GM
405
406*** ERC will look up server/channel names via auth-source and use any
407channel keys found.
f938eda9 408
274f5de6
GM
409*** New option `erc-lurker-hide-list', similar to `erc-hide-list', but
410only applies to messages sent by lurkers.
f925b109 411
6bc66c10 412** reStructuredText mode
f938eda9 413
6bc66c10
GM
414*** Keybindings (see `C-c C-h'), TAB indentation, filling and auto-filling,
415fontification, comment handling, and customization have all been revised
416and improved.
f938eda9 417
6bc66c10 418*** Support for `imenu' and `which-function-mode'.
f938eda9 419
6bc66c10
GM
420*** The reStructuredText syntax is more closely covered.
421Sphinx support has been improved.
f938eda9 422
6bc66c10 423*** `rst-insert-list' inserts new list or continues existing lists.
bc7be45d 424
6bc66c10 425*** A negative prefix argument always works for `rst-adjust'.
358c19d9 426
6bc66c10 427*** The window configuration is reset after displaying a TOC.
40d8bcb8 428
6bc66c10 429*** The constant `rst-version' describes the rst.el package version.
40d8bcb8 430
6bc66c10 431** Shell Script mode
40d8bcb8 432
6bc66c10 433*** Pairing of parens/quotes uses `electric-pair-mode' instead of skeleton-pair.
40d8bcb8 434
6bc66c10 435*** `sh-electric-here-document-mode' now controls auto-insertion of here-docs.
40d8bcb8 436
6bc66c10 437*** `sh-use-smie' lets you choose a new indentation and navigation code.
40d8bcb8 438
6bc66c10 439** VHDL mode
40d8bcb8 440
6bc66c10 441*** The free software compiler GHDL is supported (and now the default).
40d8bcb8 442
6bc66c10 443*** Support for the VHDL-AMS packages has been added/updated.
40d8bcb8 444
6bc66c10 445*** Updated to the 2002 revision of the VHDL standard.
40d8bcb8 446
6bc66c10 447*** Accepts \r and \f as whitespace.
d13c8be6 448
6bc66c10 449** Apropos
d13c8be6 450
6bc66c10
GM
451*** The faces used by Apropos are now directly customizable.
452These faces are named `apropos-symbol', `apropos-keybinding', and so on;
453see the `apropos' Custom group for details.
d13c8be6 454
6bc66c10
GM
455*** The old options whose values specified faces to use have been removed
456(i.e. `apropos-symbol-face', `apropos-keybinding-face', etc.).
d13c8be6 457
6bc66c10 458** Buffer Menu
d13c8be6 459
6bc66c10 460*** This package has been rewritten to use Tabulated List mode.
d13c8be6 461
6bc66c10
GM
462*** Option `Buffer-menu-buffer+size-width' is now obsolete.
463Use `Buffer-menu-name-width' and `Buffer-menu-size-width' instead.
d13c8be6 464
6bc66c10 465** Calendar
ee97deee 466
6bc66c10
GM
467*** You can customize the header text that appears above each calendar month.
468See the variable `calendar-month-header'.
8b0823d6 469
6bc66c10 470*** New LaTeX calendar style, produced by `cal-tex-cursor-week2-summary'.
42917e79 471
6bc66c10
GM
472*** The calendars produced by cal-html include holidays.
473Customize `cal-html-holidays' to change this.
35d98877 474
6bc66c10 475** Compile has a new option `compilation-always-kill'.
35d98877 476
6bc66c10 477** Customize
17711ed9 478
6bc66c10 479*** `custom-reset-button-menu' now defaults to t.
782fbf2a 480
6bc66c10
GM
481*** Non-option variables are never matched in `customize-apropos' and
482`customize-apropos-options' (i.e., the prefix argument does nothing for
483these commands now).
fc72b15c 484
f938eda9 485** Term
2f940384 486
823b2fb6
GM
487*** The variables `term-default-fg-color' and `term-default-bg-color'
488are now deprecated in favor of the customizable face `term'.
2f940384 489
02969baf
GM
490*** You can customize how to display ANSI terminal colors and styles
491by customizing the corresponding `term-color-<COLOR>',
492`term-color-underline' and `term-color-bold' faces.
cf20dee0 493
05ecb497 494** Tramp
2f940384 495
02969baf 496*** The syntax has been extended in order to allow ad-hoc proxy definitions.
2f940384 497
823b2fb6 498*** Remote processes are now also supported on remote MS-Windows hosts.
05ecb497 499
ce7b18ec 500** URL
2f940384 501
ce7b18ec
CY
502*** Structs made by `url-generic-parse-url' have nil `attributes' slot.
503Previously, this slot stored semicolon-separated attribute-value pairs
504appended to some imap URLs, but this is not compatible with RFC 3986.
823b2fb6 505So now the `filename' slot stores the entire path and query components,
ce7b18ec 506and the `attributes' slot is always nil.
2f940384 507
ce7b18ec
CY
508*** New function `url-encode-url' for encoding a URI string.
509The `url-retrieve' function now uses this to encode its URL argument,
510in case that is not properly encoded.
511
6bc66c10
GM
512** notifications.el supports now version 1.2 of the Notifications API.
513The function `notifications-get-capabilities' returns the supported
514server properties.
f938eda9 515
6bc66c10
GM
516** Flymake uses fringe bitmaps to indicate errors and warnings.
517See `flymake-fringe-indicator-position', `flymake-error-bitmap' and
518`flymake-warning-bitmap'.
f938eda9 519
6bc66c10
GM
520** The FFAP option `ffap-url-unwrap-remote' can now be a list of strings,
521specifying URL types that should be converted to remote file names at
522the FFAP prompt. The default is now '("ftp").
f938eda9 523
6bc66c10
GM
524** New Ibuffer `derived-mode' filter, bound to `/ M'.
525The old binding for `/ M' (filter by used-mode) is now bound to `/ m'.
f938eda9 526
6bc66c10
GM
527** New option `mouse-avoidance-banish-position' specifies where the
528`banish' mouse avoidance setting moves the mouse.
529
530** In Perl mode, new option `perl-indent-parens-as-block' causes non-block
531closing brackets to be aligned with the line of the opening bracket.
532
533** In Proced mode, new command `proced-renice' renices marked processes.
534
535** New option `async-shell-command-buffer' specifies the buffer to use
536for a new asynchronous `shell-command' when the default output buffer
537`*Async Shell Command*' is already in use.
538
539** SQL mode has a new option `sql-db2-escape-newlines'.
540If non-nil, newlines sent to the command interpreter will be escaped
541by a backslash. The default does not escape the newlines and assumes
542that the sql statement will be terminated by a semicolon.
543
544** New command `tabulated-list-sort', bound to `S' in Tabulated List mode
545(and modes that derive from it), sorts the column at point, or the Nth
546column if a numeric prefix argument is given.
f938eda9 547
02969baf 548** `which-func-modes' now defaults to t, so Which Function mode, when
05b621a6 549enabled, applies to all applicable major modes.
f938eda9 550
6bc66c10 551** `winner-mode-hook' now runs when the mode is disabled, as well as when
823b2fb6 552it is enabled.
f938eda9 553
6bc66c10
GM
554** Follow mode no longer works by using advice.
555The option `follow-intercept-processes' has been removed.
556
557** `javascript-generic-mode' is now an obsolete alias for `js-mode'.
558
d1069532
SM
559** Hooks renamed to avoid obsolete "-hooks" suffix:
560*** semantic-lex-reset-hooks -> semantic-lex-reset-functions
561*** semantic-change-hooks -> semantic-change-functions
562*** semantic-edits-new-change-hooks -> semantic-edits-new-change-functions
563*** semantic-edits-delete-change-hooks -> semantic-edits-delete-change-functions
564*** semantic-edits-reparse-change-hooks -> semantic-edits-reparse-change-functions
565*** semanticdb-save-database-hooks -> semanticdb-save-database-functions
566*** c-prepare-bug-report-hooks -> c-prepare-bug-report-hook
567*** rcirc-sentinel-hooks -> rcirc-sentinel-functions
568*** rcirc-receive-message-hooks -> rcirc-receive-message-functions
569*** rcirc-activity-hooks -> rcirc-activity-functions
570*** rcirc-print-hooks -> rcirc-print-functions
571*** dbus-event-error-hooks -> dbus-event-error-functions
572*** eieio-pre-method-execution-hooks -> eieio-pre-method-execution-functions
573*** checkdoc-style-hooks -> checkdoc-style-functions
574*** checkdoc-comment-style-hooks -> checkdoc-comment-style-functions
575*** archive-extract-hooks -> archive-extract-hook
576*** filesets-cache-fill-content-hooks -> filesets-cache-fill-content-hook
577*** hfy-post-html-hooks -> hfy-post-html-hook
578*** nndiary-request-create-group-hooks -> nndiary-request-create-group-functions
579*** nndiary-request-update-info-hooks -> nndiary-request-update-info-functions
580*** nndiary-request-accept-article-hooks -> nndiary-request-accept-article-functions
581*** gnus-subscribe-newsgroup-hooks -> gnus-subscribe-newsgroup-functions
f938eda9 582
6bc66c10 583** Obsolete packages
2f940384 584
797e6e88
SM
585*** assoc.el
586In most cases, assoc+member+push+delq work just as well.
587And in any case it's just a terrible package: ugly semantics, terrible
588inefficiency, and not namespace-clean.
2f940384 589
3c74813a 590*** bruce.el
2f940384 591
b4617547 592*** cust-print.el
2f940384 593
daed4003 594*** ledit.el
2f940384 595
82f289a4 596*** mailpost.el
2f940384 597
d57de7fe 598*** mouse-sel.el
2f940384 599
3c74813a 600*** patcomp.el
d32926ff 601
a1ed8b05 602\f
2a1e2476 603* Incompatible Lisp Changes in Emacs 24.3
b4d3bc10 604
6bc66c10
GM
605** Docstrings starting with `*' no longer indicate user options.
606Only variables defined using `defcustom' are considered user options.
607The function `user-variable-p' is now an obsolete alias for
608`custom-variable-p'.
609
610** The return values of `defalias', `defun' and `defmacro' have changed,
611and are now undefined. For backwards compatibility, `defun' and
612`defmacro' currently return the name of the newly defined
613function/macro, but this should not be relied upon.
090cf9db 614
823b2fb6
GM
615** `random' by default now returns a different random sequence in
616every Emacs run. Use `(random S)', where S is a string, to set the
0e23ef9d
PE
617random seed to a value based on S, in order to get a repeatable
618sequence in later calls.
619
d32e47af
LM
620** If the NEWTEXT arg to `replace-match' contains a substring "\?",
621that substring is inserted literally even if the LITERAL arg is
622non-nil, instead of causing an error to be signaled.
623
2cec368c
MR
624** `select-window' now always makes the window's buffer current.
625It does so even if the window was selected before.
626
6bc66c10
GM
627** The function `x-select-font' can return a font spec, instead of a
628font name as a string. Whether it returns a font spec or a font name
629depends on the graphical library.
bbf908bc 630
eeddc531
CY
631** `face-spec-set' no longer sets frame-specific attributes when the
632third argument is a frame (that usage was obsolete since Emacs 22.2).
633
6bc66c10 634** `set-buffer-multibyte' now signals an error in narrowed buffers.
a59d531e 635
ab7f1c43
GM
636** The CL package's `get-setf-method' function no longer exists.
637Generalized variables are now part of core Emacs Lisp, and implemented
638differently to the way cl.el used to do it. It is not possible to
639define a compatible replacement for `get-setf-method'. See the file
640gv.el for internal details of the new implementation.
641
6bc66c10
GM
642** The arguments of `dbus-register-signal' are no longer just strings,
643but keywords or keyword-string pairs. The old argument list will
644still be supported for Emacs 24.x.
645
646** Miscellaneous name changes
823b2fb6
GM
647Some Lisp symbols have been renamed to correct their spelling,
648or to be more consistent with standard Emacs terminology.
72b255c7
PE
649
650*** Renamed functions
72b255c7
PE
651**** hangul-input-method-inactivate -> hangul-input-method-deactivate
652**** inactivate-input-method -> deactivate-input-method
653**** quail-inactivate -> quail-deactivate
654**** robin-inactivate -> robin-deactivate
655**** viper-inactivate-input-method -> viper-deactivate-input-method
656**** viper-inactivate-input-method-action ->
657 viper-deactivate-input-method-action
658**** ucs-input-inactivate -> ucs-input-deactivate
659
660*** Renamed hooks
661The old hooks are still supported for backward compatibility, but they
662are deprecated and will be removed eventually.
72b255c7
PE
663**** input-method-inactivate-hook -> input-method-deactivate-hook
664**** robin-inactivate-hook -> robin-deactivate-hook
665**** quail-inactivate-hook -> quail-deactivate-hook
666
6bc66c10 667*** Renamed variables
72b255c7
PE
668**** follow-deactive-menu -> follow-inactive-menu
669**** inactivate-current-input-method-function ->
670 deactivate-current-input-method-function
671
02969baf
GM
672** Some obsolete functions, variables, and faces have been removed:
673*** `last-input-char', `last-command-char', `unread-command-char'
78f3273a
CY
674*** `facemenu-unlisted-faces'
675*** `rmail-decode-mime-charset'
a5f2b6ec
CY
676*** `iswitchb-read-buffer'
677*** `sc-version', `sc-submit-bug-report'
678*** `set-char-table-default'
02969baf 679*** `string-to-sequence' (use `string-to-list' or `string-to-vector')
a5f2b6ec 680*** `compile-internal'
02969baf 681*** `modeline'
59f7af81 682*** `mode-line-inverse-video'
02969baf 683*** `follow-mode-off-hook'
a5f2b6ec 684*** `cvs-commit-buffer-require-final-newline'
63820c5c 685(use `log-edit-require-final-newline' instead)
a5f2b6ec
CY
686*** `cvs-changelog-full-paragraphs'
687(use `log-edit-changelog-full-paragraphs' instead)
688*** `cvs-diff-ignore-marks', `cvs-diff-buffer-name'
689*** `vc-ignore-vc-files' (use `vc-handled-backends' instead)
690*** `vc-master-templates' (use `vc-handled-backends' instead)
691*** `vc-checkout-carefully'
78f3273a 692
a1ed8b05 693\f
2a1e2476 694* Lisp changes in Emacs 24.3
ef24141c 695
2ee3d7f0 696** CL-style generalized variables are now in core Elisp.
f938eda9 697`setf' is autoloaded; `push' and `pop' accept generalized variables.
ebdbfb95
GM
698You can define your own generalized variables using `gv-define-simple-setter',
699`gv-define-setter', etc.
2ee3d7f0 700
6bc66c10
GM
701** Emacs tries to macroexpand interpreted (non-compiled) files during load.
702This can significantly speed up execution of non-byte-compiled code,
703but can also bump into previously unnoticed cyclic dependencies.
704These are generally harmless: they will simply cause the macro calls
705to be left for later expansion (as before), but will result in a
706warning ("Eager macro-expansion skipped due to cycle") describing the cycle.
707You may wish to restructure your code so this does not happen.
708
709** New sampling-based Elisp profiler.
710Try M-x profiler-start, do some work, and then call M-x profiler-report.
711When finished, use M-x profiler-stop. The sampling rate can be based on
712CPU time or memory allocations.
713
500fcedc
SM
714** `defun' also accepts a (declare DECLS) form, like `defmacro'.
715The interpretation of the DECLS is determined by `defun-declarations-alist'.
716
6bc66c10
GM
717** New macros `setq-local' and `defvar-local'.
718
719** Face underlining can now use a wave.
2f940384 720
6bc66c10 721** `read-regexp' has a new argument HISTORY; the first argument PROMPT
cd996018 722of `read-regexp' accepts a string ending with a colon and space, and its
823b2fb6 723second argument DEFAULTS can be a list of strings accessible via `M-n'
cd996018
CY
724in the minibuffer ahead of other hard-coded useful regexp-related values.
725More commands use `read-regexp' now to read their regexp arguments.
726
f938eda9 727** Completion
500fcedc 728
f938eda9
CY
729*** New function `completion-table-with-quoting' to handle completion
730in the presence of quoting, such as file completion in shell buffers.
f95e9344 731
f938eda9
CY
732*** New function `completion-table-subvert' to use an existing completion
733table, but with a different prefix.
734
6bc66c10 735** Debugger
f95e9344 736
f938eda9
CY
737*** New error type and new function `user-error'.
738These do not trigger the debugger.
f95e9344 739
57fc0fee
GM
740*** New option `debugger-bury-or-kill', saying what to do with the
741debugger buffer when exiting debug.
45b82ad0
SM
742
743*** Set `debug-on-message' to enter the debugger when a certain
744message is displayed in the echo area. This can be useful when trying
745to work out which code is doing something.
2f940384 746
45b82ad0
SM
747*** New var `inhibit-debugger', automatically set to prevent accidental
748recursive invocations.
fa2bcf43 749
6bc66c10 750** Window handling
2f940384 751
6bc66c10
GM
752*** New command `fit-frame-to-buffer' adjusts the frame height to
753fit the contents.
2f940384 754
6bc66c10
GM
755*** The command `fit-window-to-buffer' can adjust the frame height
756if the new option `fit-frame-to-buffer' is non-nil.
8e17c9ba 757
7fe37cfc
GM
758*** New macro `with-temp-buffer-window', similar to
759`with-output-to-temp-buffer'.
fa2bcf43 760
8e17c9ba
MR
761*** `temp-buffer-resize-mode' no longer resizes windows that have been
762reused.
c5e28e39 763
823b2fb6 764*** New option `switch-to-buffer-preserve-window-point' to restore a
43bcfda6 765window's point when switching buffers.
2f940384 766
6bc66c10
GM
767*** New display action alist entries `window-height' and `window-width'
768specify the size of new windows created by `display-buffer'.
769
770*** New display action alist entry `pop-up-frame-parameters', if
771non-nil, specifies frame parameters to give any newly-created frame.
2f940384 772
fa2bcf43
MR
773*** New display action alist entry `inhibit-switch-frame', if non-nil,
774tells display action functions to avoid changing which frame is
775selected.
2f940384 776
fa2bcf43
MR
777*** New display action alist entry `previous-window', if non-nil,
778specifies window to reuse in `display-buffer-in-previous-window'.
2f940384 779
6bc66c10
GM
780*** New display action functions `display-buffer-below-selected',
781and `display-buffer-in-previous-window'.
782
783*** The functions `get-lru-window', `get-mru-window' and `get-largest-window'
784now accept a third argument to avoid choosing the selected window.
785
786*** Additional values recognized for option `window-combination-limit'.
5938d519 787
77f1f99c
CY
788*** The following variables are obsolete, as they can be replaced by
789appropriate entries in the `display-buffer-alist' function introduced
790in Emacs 24.1:
823b2fb6 791**** `dired-shrink-to-fit'
77f1f99c 792**** `display-buffer-reuse-frames'
823b2fb6 793**** `display-buffer-function'
77f1f99c 794**** `special-display-buffer-names'
823b2fb6 795**** `special-display-frame-alist'
77f1f99c 796**** `special-display-function'
823b2fb6 797**** `special-display-regexps'
77f1f99c 798
ab0fa4e4 799** Time
2f940384 800
ab0fa4e4
PE
801*** `current-time-string' no longer requires that its argument's year
802must be in the range 1000..9999. It now works with any year supported
803by the underlying C implementation.
2f940384 804
f938eda9
CY
805*** `current-time' now returns extended-format time stamps
806(HIGH LOW USEC PSEC), where the new PSEC slot specifies picoseconds.
807PSEC is typically a multiple of 1000 on current machines. Other
823b2fb6
GM
808functions that use this format, such as `file-attributes' and
809`format-time-string', have been changed accordingly. Old-format time
f938eda9 810stamps are still accepted.
2f940384 811
823b2fb6 812*** The format of timers in `timer-list' and `timer-idle-list' is now
f938eda9
CY
813[TRIGGERED-P HI-SECS LO-SECS USECS REPEAT-DELAY FUNCTION ARGS IDLE-DELAY PSECS].
814The PSECS slot is new, and uses picosecond resolution. It can be
823b2fb6 815accessed via the new `timer--psecs' accessor.
2f940384 816
c4132fd4
PE
817*** Last-modified time stamps in undo lists now are of the form
818(t HI-SECS LO-SECS USECS PSECS) instead of (t HI-SECS . LO-SECS).
819
f938eda9 820** Floating point functions now always return special values like NaN,
823b2fb6 821instead of signaling errors, if given invalid args; e.g., (log -1.0).
f938eda9
CY
822Previously, they returned NaNs on some platforms but signaled errors
823on others. The affected functions are acos, asin, tan, exp, expt,
824log, log10, sqrt, and mod.
825
6bc66c10 826** New fringe bitmap `exclamation-mark'.
f938eda9 827
6bc66c10
GM
828** Miscellaneous changes to special forms and macros
829
830*** `defun' and `defmacro' are now macros rather than special forms.
831
832*** `kbd' is now a function rather than a macro.
833
834** Miscellaneous new functions
835
836*** `set-temporary-overlay-map' sets up a temporary keymap that
837takes precedence over most other maps for a short while (normally one key).
2f940384 838
847a0561 839*** `autoloadp' tests if its argument is an autoloaded object.
2f940384 840
847a0561 841*** `autoload-do-load' performs the autoloading operation.
2f940384 842
f938eda9 843*** `buffer-narrowed-p' tests if the buffer is narrowed.
2f940384 844
f938eda9 845*** `file-name-base' returns a file name sans directory and extension.
2f940384 846
f938eda9 847*** `function-get' fetches a function property, following aliases.
2f940384 848
f938eda9 849*** `posnp' tests if an object is a `posn'.
2f940384 850
f938eda9 851*** `system-users' returns the user names on the system.
2f940384 852
f938eda9 853*** `system-groups' returns the group names on the system.
2f940384 854
f938eda9 855*** `tty-top-frame' returns the topmost frame of a text terminal.
c990426a 856
f938eda9 857** The following functions and variables are obsolete:
847a0561 858*** `automount-dir-prefix' (use `directory-abbrev-alist')
f938eda9 859*** `buffer-has-markers-at'
1a9c6830 860*** `macro-declaration-function' (use `macro-declarations-alist')
847a0561 861*** `window-system-version' (provides no useful information)
93cacb6d 862*** `dired-pop-to-buffer' (use `dired-mark-pop-up')
0e2ae83d 863*** `query-replace-interactive'
49238e7f 864*** `font-list-limit' (has had no effect since Emacs < 23)
86aa551c 865
adce950d 866\f
2a1e2476 867* Changes in Emacs 24.3 on non-free operating systems
9078ead6 868
4e98ad15 869** Cygwin builds can use the native MS Windows user interface.
823b2fb6 870Pass `--with-w32' to configure. The default remains the X11 interface.
53a63be6 871
1a9c6830 872** Two new functions are available in Cygwin builds:
a16ac13f
DC
873`cygwin-convert-file-name-from-windows' and
874`cygwin-convert-file-name-to-windows'. These functions allow Lisp
875code to access the Cygwin file-name mapping machinery to convert
876between Cygwin and Windows-native file and directory names.
de6e3a60 877
4e98ad15 878** When invoked with the -nw switch to run on the Windows text-mode terminal,
1ab0c851 879Emacs now supports `mouse-highlight', help-echo (in the echo area), and
4e98ad15
GM
880`mouse-autoselect-window'.
881
1a9c6830 882** On MS Windows Vista and later Emacs now supports symbolic links.
4e98ad15 883
823b2fb6 884** On MS Windows, you can pass `--without-libxml2' to configure.bat to omit
4e98ad15
GM
885support for libxml2, even if its presence is detected.
886
4e98ad15
GM
887** On Mac OS X, the Nextstep port requires OS X 10.4 or later.
888
823b2fb6 889** On Mac OS X, configure no longer automatically adds the Fink "/sw"
4e98ad15
GM
890directories to the search path. You must add them yourself if you want them.
891
2a1e2476
GM
892\f
893* Changes in Emacs 24.2
894
5190da91 895** This is mainly a bug-fix release.
6dad7178 896
9078ead6 897\f
eb199145 898* Installation Changes in Emacs 24.1
09e18d03 899
31fd3586
GM
900** Emacs can be compiled with Gtk+ 3.0 if you pass --with-x-toolkit=gtk3
901to configure. Note that other libraries used by Emacs, RSVG and GConf,
902also depend on Gtk+. You can disable them with --without-rsvg and
903--without-gconf.
338648ad 904
31fd3586
GM
905** Emacs can be compiled with GnuTLS support.
906This happens by default if a suitably recent version of the library is
907found at build time. To prevent this, use the configure option
908`--without-gnutls'. See below for GnuTLS features.
338648ad 909
31fd3586
GM
910** Emacs can be compiled with SELinux support.
911This happens by default if a suitably recent version of the library is
912found at build time. To prevent this, use the configure option
913`--without-selinux'. See below for SELinux features.
aded53ff 914
31fd3586
GM
915** Emacs can be compiled with ImageMagick support.
916This happens by default if a suitably recent version of the library is
917found at build time. To prevent this, use the configure option
918`--without-imagemagick'. See below for ImageMagick features.
c1f10868 919This feature is not available for the Nextstep or MS ports.
d9170db5 920
043efd56
GM
921** Emacs can be compiled with libxml2 support.
922This happens by default if a suitably recent version of the library is
923found at build time. To prevent this, use the configure option
924`--without-xml2'. See below for libxml2 features.
925
7d301ae6
CY
926** By default, the installed Info and man pages are compressed.
927You can disable this by configuring --without-compress-info.
928
7d301ae6 929** New configure option --with-wide-int.
81eafe29 930With it, Emacs integers typically have 62 bits, even on 32-bit machines.
0a768890
PE
931On 32-bit hosts, this raises the limit on buffer sizes from about 512 MiB
932to about 2 GiB.
81eafe29 933
7d301ae6 934** New configure options: --with-mmdf, --with-mail-unlink, --with-mailhost.
31fd3586
GM
935These provide no new functionality, they just remove the need to edit
936lib-src/Makefile by hand in order to use the associated features.
937
7d301ae6 938** New configure option --enable-use-lisp-union-type.
31fd3586
GM
939This is only useful for Emacs developers to debug certain types of bugs.
940This is not a new feature; only the configure flag is new.
041d709f
CY
941
942** The standalone programs digest-doc and sorted-doc are removed.
943Emacs now uses Lisp commands `doc-file-to-man' and `doc-file-to-info'.
944
041d709f
CY
945** The standalone program `fakemail' is removed.
946If you need it, feedmail.el provides a superset of the functionality.
947
0bfd685e 948\f
eb199145 949* Startup Changes in Emacs 24.1
4a263588 950
198a7a97 951** The --unibyte, --multibyte, --no-multibyte, and --no-unibyte
adbf62ff
GM
952command line arguments, and the EMACS_UNIBYTE environment variable, no
953longer have any effect. (They were declared obsolete in Emacs 23.)
198a7a97 954
66b7b0fe 955** New command line option `--no-site-lisp' removes site-lisp directories
1b5e5b0c
GM
956from load-path. -Q now implies this. This option does not affect the
957EMACSLOADPATH environment variable (and hence has no effect for
c8d59ba3 958Nextstep builds).
66b7b0fe 959
0bfd685e 960\f
eb199145 961* Changes in Emacs 24.1
7841339b 962
a2a25d24 963** Completion
fdeb32ec 964
dfdb4cad
CY
965*** Many packages now use the `completion-at-point' command,
966rather than implementing separate completion commands.
967
de0bde62 968*** `completion-at-point' now handles tags and semantic completion.
dfdb4cad 969
a2a25d24
SM
970*** Completion in a non-minibuffer now tries to detect the end of completion
971and pops down the *Completions* buffer accordingly.
dfdb4cad
CY
972
973*** New option `completion-cycle-threshold' allows completion cycling.
974
975*** New option `completion-category-overrides' for overriding the
2c719188 976default completion style in certain circumstances.
dfdb4cad 977
a2a25d24 978*** New completion style `substring'.
dfdb4cad
CY
979
980*** Completion of buffer names uses `substring' completion by default.
981
982*** The option `widget-complete-field' has been removed.
620c53a6 983
6870aaef 984** Mail changes
dfdb4cad 985
7d301ae6
CY
986*** The first time you try sending mail, Emacs asks for a mail method.
987This is implemented by a new default for `send-mail-function', which
988is `sendmail-query-once'. This offers to use the smtpmail package, or
989to use the old defaults relying on external mail facilities
990(`sendmail-send-it' on GNU/Linux and other Unix-like systems, and
991`mailclient-send-it' on Windows).
dfdb4cad 992
7d301ae6
CY
993*** Typing C-c m in the buffer made by M-x report-emacs-bug transfers
994the report to your desktop's preferred mail client, if there is one.
995This uses either the "xdg-email" utility, or Mac OS's "open" command.
dfdb4cad 996
7d301ae6
CY
997*** See Changes in Specialized Modes and Packages for SMTPmail changes
998and Mail mode changes
3f88cd72 999
041d709f 1000** Emacs server and client changes
dfdb4cad 1001
7d301ae6 1002*** New option `server-port' specifies the port for TCP Emacs servers.
dfdb4cad 1003
041d709f 1004*** New emacsclient argument -q/--quiet suppresses some status messages.
dfdb4cad 1005
7d301ae6
CY
1006*** New emacsclient argument --frame-parameters specifies the frame
1007parameters of any newly-created graphical frame.
dfdb4cad
CY
1008
1009*** If emacsclient shuts down due to Emacs signaling an error,
1010its exit status is 1.
1011
041d709f
CY
1012*** New emacsclient argument --parent-id ID.
1013This opens a client frame in parent X window ID, via XEmbed, similar
1014to the --parent-id argument to Emacs.
1015
d0ce9f8c
MB
1016** Internationalization changes
1017
d0ce9f8c 1018*** Emacs now supports display and editing of bidirectional text.
7d301ae6
CY
1019Right-to-left (RTL) scripts, such as Arabic, Farsi, and Hebrew, are
1020displayed in the correct visual order as expected by users of those
dfdb4cad
CY
1021scripts. The display reordering is a "full bidirectionality" class
1022implementation of the Unicode Bidirectional Algorithm (UBA). Buffers
1023with no RTL text should look exactly the same as before.
f4b6ba46 1024
041d709f 1025**** New buffer-local variable `bidi-display-reordering'.
7d301ae6 1026To disable display reordering in a buffer, change this to nil.
d20e1419 1027
041d709f
CY
1028**** New buffer-local variable `bidi-paragraph-direction'.
1029If nil (the default), Emacs determines the base direction of each
dfdb4cad
CY
1030paragraph from its text, as specified by the UBA. Setting the value
1031to `right-to-left' or `left-to-right' forces a base direction on each
1032paragraph.
f4b6ba46 1033
7d301ae6
CY
1034Paragraphs with right-to-left base direction are displayed starting at
1035the right window edge.
f1816485 1036
dfdb4cad
CY
1037*** Enhanced support for characters with no glyphs in available fonts,
1038or, on text terminals, characters that cannot be encoded by the
1039terminal coding system. The new option `glyphless-char-display-control'
1040specifies how to display them: as a hexadecimal code in a box, a thin
10411-pixel space, an empty box, etc.
d0ce9f8c 1042
9702b7a1
GM
1043*** New input methods for Farsi and Bulgarian
1044(farsi-isiri-9147, farsi-transliterate-banan, bulgarian-alt-phonetic).
041d709f 1045
939db9ac
CY
1046*** `nobreak-char-display' now also highlights Unicode hyphen chars
1047(U+2010 and U+2011).
1048
7d301ae6 1049*** New Hebrew translation of the Emacs Tutorial.
31fd3586
GM
1050Type `C-u C-h t' to choose it in case your language setup doesn't
1051automatically select it.
1052
7d301ae6
CY
1053** An Emacs Lisp package manager is now included.
1054This is a convenient way to download and install additional packages,
1055from a package repository at http://elpa.gnu.org.
dfdb4cad 1056
7d301ae6
CY
1057*** M-x list-packages shows a list of packages, which can be
1058selected for installation.
dfdb4cad 1059
7d301ae6 1060*** New command `describe-package', bound to `C-h P'.
dfdb4cad 1061
7d301ae6
CY
1062*** By default, all installed packages are loaded automatically when
1063Emacs starts up. To disable this, set `package-enable-at-startup' to
1064nil. To specify the packages to load, customize `package-load-list'.
16a91140 1065
dfdb4cad
CY
1066** Custom theme changes
1067
7d301ae6
CY
1068*** New command `M-x customize-themes', which provides a convenient
1069interface for enabling and disabling Custom themes.
dfdb4cad 1070
7d301ae6 1071*** New option `custom-theme-load-path' is the load path for themes.
dfdb4cad
CY
1072Emacs no longer looks for Custom themes in `load-path'. The default
1073value of `custom-theme-load-path' says to look for themes in
1074`custom-theme-directory', followed by a subdirectory of
1075`data-directory' named "themes/", which contains a small selection of
1076built-in Custom themes.
1077
7d301ae6
CY
1078*** New option `custom-safe-themes' records known-safe theme files.
1079If a theme is not in this list, Emacs queries before loading it, and
1080offers to save the theme to `custom-safe-themes' automatically. By
1081default, all themes included in Emacs are treated as safe.
b7d65a5f 1082
7d301ae6 1083** Improved GTK integration
dfdb4cad 1084
7d301ae6 1085*** GTK scroll-bars are now placed on the right by default.
dfdb4cad
CY
1086The function `set-scroll-bar-mode' can change this.
1087
7d301ae6 1088*** GTK tool bars can have just text, just images or images and text.
dfdb4cad
CY
1089Customize `tool-bar-style' to choose the style. On a Gnome desktop,
1090the default is taken from desktop settings.
1091
1092*** GTK tool bars can be placed on any edge of the frame.
7d301ae6
CY
1093The frame-parameter tool-bar-position controls this. It takes the
1094values top, left, right or bottom. The Options => Show/Hide menu has
1095entries for this.
dfdb4cad 1096
7d301ae6
CY
1097*** The default colors for selected text (the `region' face) are taken
1098from the GTK theme when Emacs is built with GTK.
dfdb4cad 1099
7d301ae6
CY
1100*** Emacs uses GTK tooltips by default if built with GTK.
1101You can disable this by changing `x-gtk-use-system-tooltips' to nil.
a5bee597 1102
dfdb4cad
CY
1103** Graphical interface changes
1104
1105*** On graphical displays, the mode-line no longer ends in dashes.
1106Also, the first dash (which does not indicate anything) is just
1107displayed as a space.
1108
1109*** `menu-bar-select-buffer-function' lets you choose another operation
1110instead of `switch-to-buffer' when selecting an item in the Buffers menu.
1111
1112*** Lucid menus and dialogs can display antialiased fonts if Emacs is
1113built with Xft. These fonts can be set via X resources, for example:
1114Emacs.pane.menubar.font: Courier-12
1115
7d301ae6 1116** Exiting changes
dfdb4cad 1117
7d301ae6 1118*** Emacs now calls `kill-emacs' if it receives SIGTERM or SIGHUP,
dfdb4cad
CY
1119or if it receives a SIGINT signal in batch mode.
1120
7d301ae6
CY
1121*** `kill-emacs-hook' is now also run in batch mode.
1122Third-party code which adds to `kill-emacs-hook' should check if they
1123do the right thing in batch mode.
9c524fcb 1124
041d709f 1125** Scrolling changes
dfdb4cad 1126
041d709f 1127*** New scrolling commands `scroll-up-command' and `scroll-down-command'
0a19a6f8 1128(bound to C-v/[next] and M-v/[prior]) do not signal errors at top/bottom
7d301ae6 1129of buffer at first key-press (instead they move to top/bottom of buffer)
550f41cd 1130when `scroll-error-top-bottom' is non-nil.
dfdb4cad
CY
1131
1132*** New option `scroll-error-top-bottom' (see above).
1133
041d709f 1134*** New scrolling commands `scroll-up-line' and `scroll-down-line'
5a97d2da 1135scroll a line instead of full screen.
dfdb4cad 1136
041d709f 1137*** New property `scroll-command' should be set on a command's symbol to
b2957ea8 1138define it as a scroll command affected by `scroll-preserve-screen-position'.
dfdb4cad 1139
041d709f 1140*** If you customize `scroll-conservatively' to a value greater than 100,
d0f69533
EZ
1141Emacs will never recenter point in the window when it scrolls due to
1142cursor motion commands or commands that move point (e.f., `M-g M-g').
1143Previously, you needed to use `most-positive-fixnum' as the value of
1144`scroll-conservatively' to achieve the same effect.
dfdb4cad 1145
7d301ae6 1146*** "Aggressive" scrolling now honors the scroll margins.
d0f69533
EZ
1147If you customize `scroll-up-aggressively' or
1148`scroll-down-aggressively' and move point off the window, Emacs now
1149scrolls the window so as to avoid positioning point inside the scroll
1150margin.
1151
7d301ae6
CY
1152** Basic SELinux support has been added.
1153This requires Emacs to be linked with libselinux at build time.
f1a5d776 1154
dfdb4cad
CY
1155*** Emacs preserves the SELinux file context when backing up.
1156Also, the function `copy-file' has an extra optional argument for
1157preserving SELinux context, and the return value of `backup-buffer'
1158now includes the SELinux context.
f0bf7c8e 1159
dfdb4cad 1160*** New functions `file-selinux-context' and `set-file-selinux-context'
7d301ae6 1161get and set the SELinux context of a file.
44198b6e 1162
7d301ae6 1163** Trash changes
dfdb4cad 1164
7d301ae6
CY
1165*** `delete-by-moving-to-trash' now only affects commands that specify
1166trashing. This avoids inadvertently trashing temporary files.
dfdb4cad 1167
7d301ae6
CY
1168*** Calling `delete-file' or `delete-directory' with a prefix argument
1169now forces true deletion, regardless of `delete-by-moving-to-trash'.
278f6845 1170
041d709f 1171** File- and directory-local variable changes
dfdb4cad 1172
041d709f
CY
1173*** You can stop directory local vars from applying to subdirectories.
1174Add an element (subdirs . nil) to the alist portion of any variables
1175settings to indicate that the section should not apply to
1176subdirectories.
dfdb4cad 1177
041d709f
CY
1178*** Directory local variables can apply to some file-less buffers.
1179Affected modes include dired, vc-dir, and log-edit. For example,
1180adding "(diff-mode . ((mode . whitespace)))" to .dir-locals.el will
1181turn on `whitespace-mode' for *vc-diff* buffers. Modes should call
1182`hack-dir-local-variables-non-file-buffer' to support this.
dfdb4cad 1183
041d709f
CY
1184*** Using "mode: MINOR-MODE" to enable a minor mode is deprecated.
1185Instead, use "eval: (minor-mode 1)".
c136e5cd 1186
7b447e9b
GM
1187*** The variable `inhibit-first-line-modes-regexps' has been renamed
1188to `inhibit-local-variables-regexps'. As the name suggests, it now
dfdb4cad
CY
1189applies to ALL file local variables, not just -*- lines. The
1190associated `inhibit-first-line-modes-suffixes' has been renamed in the
1191corresponding way.
5d907d6c 1192
0a2132ba
CY
1193** Window changes
1194
91b65361
CY
1195*** The `quit-window' command now restores the last buffer displayed
1196in the quitted window.
1197
0a2132ba
CY
1198*** Resizing an Emacs frame now preserves proportional window sizes,
1199modulo restrictions like window minimum sizes and fixed-size windows.
1200
1201*** The behavior of `display-buffer' is now customizable in detail.
dfdb4cad 1202
0a2132ba
CY
1203**** New option `display-buffer-base-action' specifies a list of
1204user-determined display "actions" (functions and optional arguments
1205for choosing the displaying window).
1206
1207This takes precedence over the default display action, which is
1208specified by `display-buffer-fallback-action'.
1209
1210**** New option `display-buffer-alist' maps buffer name regexps to
1211display actions, taking precedence over `display-buffer-base-action'.
1212
a0c2d0ae
MR
1213*** New option `window-combination-limit'.
1214The new option `window-combination-limit' allows to return the space
1215obtained for resizing or creating a window more reliably to the window
1216from which such space was obtained.
0a2132ba 1217
a0c2d0ae
MR
1218*** New option `window-combination-resize'.
1219The new option `window-combination-resize' allows to split a window that
1220otherwise cannot be split because it's too small by stealing space from
1221other windows in the same combination. Subsequent resizing or deletion
1222of the window will resize all windows in the same combination as well.
0a2132ba 1223
91b65361
CY
1224*** New option `frame-auto-hide-function' lets you choose between
1225iconifying or deleting a frame when burying a buffer in a dedicated
1226frame, or quitting a window showing a buffer in a frame of its own.
1227
0a2132ba 1228*** New commands `maximize-window' and `minimize-window'.
53964682 1229These maximize and minimize the size of a window within its frame.
0a2132ba 1230
0a2132ba
CY
1231*** New commands `switch-to-prev-buffer' and `switch-to-next-buffer'.
1232These functions allow to navigate through the live buffers that have
1233been shown in a specific window.
1234
7d301ae6 1235** Minibuffer changes
dfdb4cad 1236
7d301ae6 1237*** The inactive minibuffer has its own major mode `minibuffer-inactive-mode'.
104dc9c6
GM
1238This is handy for minibuffer-only frames, and is also used for the feature
1239where mouse-1 pops up *Messages*"', which can now easily be changed.
041d709f 1240
7d301ae6 1241*** Minibuffers set `truncate-lines' to nil.
f66eca26 1242If you want to change the value to something else, you could use
7d301ae6
CY
1243for example `minibuffer-setup-hook'.
1244
7d301ae6
CY
1245** `auto-mode-case-fold' is now enabled by default.
1246
7d301ae6 1247** `backup-by-copying-when-mismatch' now defaults to t.
f66eca26 1248
dfdb4cad
CY
1249** New basic faces `error', `warning', `success'.
1250These are used to highlight text indicating failure, caution or
1251successful operation.
1252
1253** New option `list-colors-sort' defines the color sort order
1254for `list-colors-display'.
1255
1256** The variable `focus-follows-mouse' now always defaults to nil.
1257
0bfd685e 1258\f
eb199145 1259* Editing Changes in Emacs 24.1
b350bdf2 1260
892777ba 1261** Search changes
dfdb4cad
CY
1262
1263*** C-y in Isearch is now bound to `isearch-yank-kill', instead of
1264`isearch-yank-line'.
1265
1266*** M-y in Isearch is now bound to `isearch-yank-pop', instead of
1267`isearch-yank-kill'.
1268
1269*** M-s C-e in Isearch is now bound to `isearch-yank-line'.
1270
b2b0776e 1271** New commands `count-words-region' and `count-words'.
dfdb4cad 1272
10607bea
CY
1273*** M-= is bound to `count-words-region', not `count-lines-region'.
1274The `count-words-region' command, when called interactively, reports
1275the number of lines, words, and characters in the region. It is a
1276superset of the old `count-lines-region', which is now an obsolete
1277alias for it.
ea4f7750 1278
ec9da840 1279** The command `just-one-space' (M-SPC), if given a negative argument,
1c708c1a
CY
1280also deletes newlines around point.
1281
b9229673 1282** Deletion changes
dfdb4cad 1283
b9229673 1284*** New option `delete-active-region'.
ddb54206 1285If non-nil, [delete] and DEL delete the region if it is active and no
dfdb4cad 1286prefix argument is given. If set to `kill', those commands kill
ddb54206 1287instead.
dfdb4cad 1288
59ee0542 1289*** New command `delete-forward-char', bound to [delete].
42d9cffa
CY
1290This is meant for interactive use, and obeys `delete-active-region'.
1291The command `delete-char' does not obey `delete-active-region'.
dfdb4cad 1292
b9229673
CY
1293*** `delete-backward-char' is now a Lisp function.
1294Apart from obeying `delete-active-region', its behavior is unchanged.
7d301ae6
CY
1295However, the byte compiler now warns if it is called from Lisp; Lisp
1296callers should use delete-char with a negative argument instead.
dfdb4cad 1297
b9229673
CY
1298*** The option `mouse-region-delete-keys' has been deleted.
1299
f9d71b42
CY
1300** Selection changes.
1301
7d301ae6
CY
1302The default handling of clipboard and primary selections has been
1303changed to conform with modern X applications. In short, most
1304commands for killing and yanking text now use the clipboard, while
1305mouse commands use the primary selection.
b1ab31ae
CY
1306
1307In the following, we provide a list of these changes, followed by a
1308list of steps to get the old behavior back if you prefer that.
1309
b1ab31ae
CY
1310*** `select-active-regions' now defaults to t.
1311Merely selecting text (e.g. with drag-mouse-1) no longer puts it in
963578d3 1312the kill ring. The selected text is put in the primary selection, if
b1ab31ae
CY
1313the system possesses a separate primary selection facility (e.g. X).
1314
1315**** `select-active-regions' also accepts a new value, `only'.
1316This means to only set the primary selection for temporarily active
1317regions (usually made by mouse-dragging or shift-selection);
1318"ordinary" active regions, such as those made with C-SPC followed by
1319point motion, do not alter the primary selection.
1320
963578d3
CY
1321**** `mouse-drag-copy-region' now defaults to nil.
1322
b1ab31ae
CY
1323*** mouse-2 is now bound to `mouse-yank-primary'.
1324This pastes from the primary selection, ignoring the kill-ring.
1325Previously, mouse-2 was bound to `mouse-yank-at-click'.
dfdb4cad 1326
b1ab31ae 1327*** `x-select-enable-clipboard' now defaults to t on all platforms.
dfdb4cad 1328
b1ab31ae
CY
1329*** `x-select-enable-primary' now defaults to nil.
1330Thus, commands that kill text or copy it to the kill-ring (such as
1331M-w, C-w, and C-k) also use the clipboard---not the primary selection.
1332
1333**** The "Copy", "Cut", and "Paste" items in the "Edit" menu are now
dfdb4cad 1334exactly equivalent to M-w, C-w, and C-y respectively.
b1ab31ae
CY
1335
1336**** Note that on MS-Windows, `x-select-enable-clipboard' was already
1337non-nil by default, as Windows does not support the primary selection
1338between applications.
1339
1340*** To return to the previous behavior, do the following:
dfdb4cad 1341
104c2fe9 1342**** Change `select-active-regions' to nil.
b1ab31ae
CY
1343**** Change `mouse-drag-copy-region' to t.
1344**** Change `x-select-enable-primary' to t (on X only).
1345**** Change `x-select-enable-clipboard' to nil.
1346**** Bind `mouse-yank-at-click' to mouse-2.
f9d71b42 1347
084e6df3 1348*** Support for X cut buffers has been removed.
dfdb4cad 1349
3fd50d5c
CY
1350*** X clipboard managers are now supported.
1351To inhibit this, change `x-select-enable-clipboard-manager' to nil.
4b80f674 1352
dfdb4cad
CY
1353** New command `C-x r N' (`rectangle-number-lines') numbers the lines
1354in the current rectangle. With a prefix argument, this prompts for a
1355number to count from and for a format string.
99f053cf 1356
7d301ae6 1357** `redisplay-dont-pause' now defaults to t.
6bf7006f
EZ
1358This makes Emacs feel more responsive to editing commands that arrive
1359at high rate, e.g. if you lean on some key, because stopping redisplay
1360in the middle (when this variable is nil) forces more expensive
1361updates later on, and Emacs appears to be unable to keep up.
1362
e70b5064
CY
1363** The behavior of <TAB> for active regions in Text mode has changed.
1364In Text and related modes, typing <TAB> (`indent-for-tab-command')
1365when the region is active causes Emacs to indent all the lines in the
1366region, aligning them with the line previous to the first line in the
1367region (or with the left margin if there is no previous line).
1368
dfdb4cad
CY
1369** When `occur' is called with a prefix argument, matching strings are
1370collected into the `*Occur*' buffer without line numbers. If there
1371are parenthesized subexpressions in the specified regexp, `occur'
1372reads replacement text that may contain \\& and \\N whose convention
1373follows `replace-match'.
1374
9bae34bf 1375\f
eb199145 1376* Changes in Specialized Modes and Packages in Emacs 24.1
efeb796b 1377
041d709f 1378** Archive Mode has basic support for browsing and updating 7z archives.
d76674bb 1379
b7c3692a 1380** BibTeX mode
dfdb4cad 1381
2de69e00 1382*** BibTeX mode now supports biblatex.
7d301ae6
CY
1383Use the variable `bibtex-dialect' to select different BibTeX dialects.
1384`bibtex-entry-field-alist' is now an obsolete alias for
1385`bibtex-BibTeX-entry-alist'.
1386
dfdb4cad
CY
1387*** New command `bibtex-search-entries', bound to C-c C-a.
1388
b7c3692a 1389*** New `bibtex-entry-format' option `sort-fields', disabled by default.
dfdb4cad 1390
022fe7ce
RW
1391*** New variable `bibtex-search-entry-globally'.
1392
7d301ae6 1393** Browse-url
dfdb4cad 1394
7d301ae6 1395*** New option `browse-url-mailto-function' specifies how to handle "mailto:"s.
dfdb4cad 1396
7d301ae6
CY
1397*** The default browser used by the package is now the "xdg-open" program,
1398on platforms that support it. This calls your desktop's preferred browser.
1399
cf16af42
GM
1400** Calendar, Diary, and Appt
1401
7d301ae6 1402*** Diary entries can contain non-printing "comments".
548d0a63
GM
1403See the variable `diary-comment-start'.
1404
5006e634
GM
1405*** Appointments can specify their individual warning times.
1406See the variable `appt-warning-time-regexp'.
1407
0a2bb1a9
GM
1408*** The function specified by `appt-disp-window-function' may be passed
1409lists of arguments if multiple appointments are due at similar times.
1410If you are using a custom function for this, you should update it.
1411
7454f200
GM
1412*** New function `diary-hebrew-birthday'.
1413
e565dd37
GM
1414*** Elements of `calendar-day-abbrev-array' and `calendar-month-abbrev-array'
1415may no longer be nil, but must all be strings.
1416
7d301ae6
CY
1417*** The obsolete (since Emacs 22.1) method of enabling the appt
1418package by adding `appt-make-list' to `diary-hook' has been removed.
1419Use `appt-activate' instead.
cf16af42 1420
cf16af42
GM
1421*** Some appt variables (obsolete since Emacs 22.1) have been removed:
1422appt-issue-message (use the function appt-activate)
1423appt-visible/appt-msg-window (use the variable appt-display-format)
1424
cf16af42
GM
1425*** Some diary function aliases (obsolete since Emacs 22.1) have been removed:
1426view-diary-entries, list-diary-entries, show-all-diary-entries
1427
551b046f 1428** CC Mode
dfdb4cad 1429
551b046f 1430*** New feature to "guess" the style in an existing buffer.
7d301ae6 1431The main entry point is M-x c-guess.
041d709f 1432
551b046f
AM
1433*** Java Mode now supports Java 5.0 (Tiger) and 6 (Mustang).
1434
dfdb4cad 1435*** `c-beginning-of-defun' and `c-end-of-defun' now respect nested scopes.
551b046f
AM
1436Thus C-M-a will, by default, go to the beginning of the immediate function,
1437not the top level.
1438
dfdb4cad 1439*** "Macros with semicolons" can be registered for correct indentation.
551b046f
AM
1440Where such a macro ends a line (no semicolon) the next statement is no longer
1441parsed as a statement continuation.
1442
dfdb4cad 1443** Comint and modes derived from it use the standard completion code.
041d709f
CY
1444
1445** Compilation mode
dfdb4cad 1446
7d301ae6 1447*** Compilation mode can be used without Font Lock mode.
041d709f
CY
1448`compilation-parse-errors-function' is now obsolete.
1449
dfdb4cad 1450*** New variable `compilation-filter-start', which is bound while
7d301ae6
CY
1451`compilation-filter-hook' runs. It records the start position of the
1452text inserted by `compilation-filter'.
041d709f 1453
47a6a35f
GM
1454*** `compilation-error-screen-columns' and `compilation-first-column'
1455are obeyed in the editing buffer. So programming language modes can
7d301ae6
CY
1456set them, whereas previously only the value in the *Compilation*
1457buffer was used.
1dce7193 1458
52834b6b
CY
1459** Customize
1460
1461*** Customize buffers now contain a search field.
1462The search is performed using `customize-apropos'.
7d301ae6 1463To turn off the search field, set `custom-search-field' to nil.
52834b6b 1464
8d5dd370 1465*** Options in customize group buffers start out hidden if not customized.
52834b6b
CY
1466Use the arrow to the left of the option name to toggle visibility.
1467
1468*** custom-buffer-sort-alphabetically now defaults to t.
1469
1470*** The color widget now has a "Choose" button, which allows you to
7d301ae6 1471choose a color via `list-colors-display'.
52834b6b 1472
041d709f
CY
1473** D-Bus
1474
5da3be7f
GM
1475*** It is now possible to access buses other than the default system
1476or session bus.
041d709f 1477
7d301ae6 1478*** The `dbus-register-method' and `dbus-register-property' functions
5da3be7f 1479optionally do not register names.
041d709f 1480
7d301ae6 1481*** The new function `dbus-register-service' registers a known service
dfdb4cad 1482name on a D-Bus without also registering a property or a method.
041d709f 1483
f5d6548a 1484** Dired-x
425a25f1 1485
7d301ae6
CY
1486*** C-x C-j (`dired-jump') and C-x 4 C-j (`dired-jump-other-window'),
1487if called with a prefix argument, read a file name from the minibuffer
1488instead of using the current buffer.
f5d6548a 1489
7d301ae6 1490*** The "dired local variables" feature of Dired-x is obsolete.
817b48a7 1491The standard directory local variables feature replaces it.
8117868f 1492
041d709f 1493** ERC changes
7492acc9 1494
c4077254
GM
1495*** New options `erc-autojoin-timing' and `erc-autojoin-delay',
1496controlling attempts to autojoin a channel.
041d709f
CY
1497
1498*** New variable `erc-coding-system-precedence': If we use `undecided'
1499as the server coding system, this variable will then be consulted.
1500The default is to decode strings that can be decoded as utf-8 as
1501utf-8, and do the normal `undecided' decoding for the rest.
7492acc9 1502
041d709f 1503** Eshell changes
7492acc9 1504
05f77e38
GM
1505*** The default value of `eshell-directory-name' has changed
1506to be an "eshell" directory in `user-emacs-directory'.
1507The old "~/.eshell/" directory is still used if it exists, though.
041d709f
CY
1508
1509** gdb-mi
dfdb4cad
CY
1510
1511*** The M-x gdb command now uses the GDB Machine Interface protocol.
05f77e38
GM
1512It now supports multithread non-stop debugging and simultaneous
1513debugging of several threads.
7492acc9 1514
18af70d0
CY
1515** Image mode
1516
05f77e38
GM
1517*** RET (`image-toggle-animation') toggles animation, if applicable.
1518Animation plays once, unless the option `image-animate-loop' is non-nil.
18af70d0 1519
041d709f 1520** Info
723ee192 1521
7d301ae6 1522*** New command M-x info-display-manual displays a named Info manual.
2ebc3b94
GM
1523If that manual is already visited in some Info buffer, it displays
1524that buffer. (This is handy if you have many manuals in many *info*
1525buffers, and don't remember the name of the buffer visiting the manual
1526you want to consult.) Otherwise, it loads and displays the manual.
691cf4a0 1527
24ea72d3
EZ
1528*** `e' is now bound to `end-of-buffer' rather than to `Info-edit'.
1529This is for compatibility with the stand-alone Info reader program,
1530and also because `Info-edit' is a rarely used command that is disabled
1531by default.
1532
7d301ae6 1533** Mail mode changes (not Message mode)
dfdb4cad 1534
7d301ae6 1535*** New command M-x mail-add-attachment for adding MIME attachments
7d301ae6 1536
dfdb4cad
CY
1537*** The command M-x mail-attach-file was renamed to M-x mail-insert-file.
1538(Its name is misleading, since it has nothing to do with MIME
1539attachments.) The old name is now an obsolete alias to the new name.
1540
f2c3a9eb 1541** MH-E has been updated to MH-E version 8.3.1.
041d709f 1542See MH-E-NEWS for details.
37221432 1543
041d709f 1544** Modula-2 mode provides auto-indentation.
37221432 1545
041d709f 1546** mpc.el: Can use pseudo tags of the form tag1|tag2 as a union of two tags.
3c3d4f5b 1547
5d1ac394 1548** nXML mode no longer binds C-RET to `nxml-complete'.
dfdb4cad
CY
1549Completion is now performed via `completion-at-point', bound to C-M-i
1550or M-TAB. If `nxml-bind-meta-tab-to-complete-flag' is non-nil (the
1551default), this performs tag completion.
5d1ac394 1552
f2c3a9eb
CY
1553** Org mode has been updated to version 7.8.09.
1554See ORG-NEWS for details.
1555
041d709f 1556** Prolog mode has been completely revamped, with lots of additional
7d301ae6
CY
1557functionality such as more intelligent indentation, electricity,
1558support for more variants, including Mercury, and a lot more.
041d709f
CY
1559
1560** Rmail
1561
1562*** The command `rmail-epa-decrypt' decrypts OpenPGP data
1563in the Rmail incoming message.
1564
50419064
GM
1565*** The variable `rmail-message-filter' no longer has any effect.
1566This change was made in Emacs 23.1 but was not advertised at the time.
1567Try using `rmail-show-message-hook' instead.
1568
717a1362 1569** Shell mode
dfdb4cad
CY
1570
1571*** M-x shell prompts for the shell path name if the default directory
1572is a remote file name and neither the environment variable $ESHELL nor
1573the variable `explicit-shell-file-name' is set.
1574
1575*** TAB is now bound to the standard `completion-at-point' command,
1576which now implements the pcomplete rules for shell command completion.
717a1362 1577
7d301ae6
CY
1578** SMTPmail
1579
dfdb4cad 1580*** SMTPmail now uses encrypted connections (via STARTTLS) by default
7d301ae6
CY
1581if the mail server supports them. This uses either built-in GnuTLS
1582support, or the starttls.el library. Customize `smtpmail-stream-type'
1583to change this.
1584
7d301ae6
CY
1585*** The variable `smtpmail-auth-credentials' has been removed.
1586By default, the information is now stored in the file ~/.authinfo.
dfdb4cad
CY
1587This was the default value of smtpmail-auth-credentials. If you had
1588customized smtpmail-auth-credentials to a list of user names and
1589passwords, those settings are not used. During your first connection
1590to the smtp server, Emacs will prompt for the user name and password,
1591and offer to save them to ~/.authinfo. Or you can manually copy the
1592credentials to ~/.authinfo. For example, if you had
7d301ae6
CY
1593
1594 (setq smtpmail-auth-credentials
1595 '(("mail.example.org" 25 "jim" "s!cret")))
1596
1597then the equivalent line in ~/.authinfo would be
1598
1599 machine mail.example.org port 25 login jim password s!cret
1600
1601See the auth-source manual for more information, e.g. on encrypting
1602the credentials file.
1603
7d301ae6 1604*** The variable `smtpmail-starttls-credentials' has been removed.
dfdb4cad 1605If you had that set, you need to put
7d301ae6
CY
1606
1607 machine smtp.whatever.foo port 25 key "~/.my_smtp_tls.key" cert "~/.my_smtp_tls.cert"
1608
1609in your ~/.authinfo file instead.
1610
8ce192e3
LI
1611*** SMTPmail defaults to using the address in the From: header as the
1612SMTP MAIL FROM envelope. To override this, set `mail-envelope-from'
1613to the address you wish to use instead.
1614
34e8a2da 1615** SQL mode
041d709f 1616
34e8a2da
GM
1617*** New options `sql-port', `sql-connection-alist', `sql-send-terminator',
1618and `sql-oracle-scan-on'.
041d709f 1619
dfdb4cad 1620*** New options controlling prompting for login parameters.
34e8a2da
GM
1621Each supported product has a custom variable `sql-*-login-params',
1622which is a list of the parameters to be prompted for before a
1623connection is established.
041d709f
CY
1624
1625*** The command `sql-product-interactive' now takes a prefix argument,
34e8a2da 1626which causes it to prompt for an SQL product.
041d709f 1627
34e8a2da 1628*** Product-specific SQL interactive commands now take prefix arguments.
041d709f
CY
1629These commands (`sql-sqlite', `sql-postgres', `sql-mysql', etc.),
1630given a prefix argument, prompt for a name for the SQL interactive
1631buffer. This reduces the need for calling `sql-rename-buffer'.
1632
1633*** SQL interactive modes suppress command continuation prompts, and
1634replace tabs with spaces. The first change impacts multiple line SQL
1635statements entered with C-j between each line, statements yanked into
1636the buffer and statements sent with `sql-send-*' functions. The
34e8a2da
GM
1637second prevents the MySQL and Postgres interpreters from listing
1638object name completions when sent text via `sql-send-*' functions.
041d709f
CY
1639
1640*** New command `sql-connect' starts a predefined SQLi session,
1641using the login parameters from `sql-connection-alist'.
1642
1643*** New "Save Connection" menu item in SQLi buffers.
1644This gathers the login params specified for the SQLi session, if it
1645was not started by a connection, and saves them as a new connection.
1646
34e8a2da
GM
1647*** New commands for listing database objects and details:
1648sql-list-all and sql-list-table.
041d709f
CY
1649
1650*** An API for manipulating SQL product definitions has been added.
1651
1652** TeX modes
1653
1654*** latex-electric-env-pair-mode keeps \begin..\end matched on the fly.
412b9ee5 1655
459bba37 1656** Tramp
dfdb4cad 1657
7d301ae6 1658*** New inline access method "ksu" (kerberized su).
dfdb4cad 1659
459bba37 1660*** The following access methods are discontinued: "ssh1_old",
ea843702 1661"ssh2_old", "scp1_old", "scp2_old", "imap", "imaps" and "fish".
dfdb4cad 1662
b011fbfe
GM
1663*** The user option `remote-file-name-inhibit-cache' controls whether
1664remote file attributes are cached for better performance.
dfdb4cad 1665
58f74fe4
MA
1666*** The option `ange-ftp-binary-file-name-regexp' has changed its
1667default value to "".
dfdb4cad 1668
7d301ae6
CY
1669*** Handlers for `file-selinux-context' and `set-file-selinux-context'
1670for remote machines which support SELinux.
58f74fe4 1671
dfdb4cad 1672** New function `url-queue-retrieve', which behaves like url-retrieve,
a48ec60c
GM
1673but with limits (`url-queue-parallel-processes', `url-queue-timeout') on
1674the degree of parallelism.
177549d0 1675
0c32ce32
CY
1676** VC and related modes
1677
1678*** Support for pulling on distributed version control systems.
7d301ae6
CY
1679The command C-x v + (`vc-pull') runs a "pull" operation, if it is
1680supported (currently with Bzr, Git, and Mercurial), to update the
1681current branch and working tree. A prefix argument means to prompt
1682the user for specifics, e.g. a pull location.
0c32ce32 1683
dab3703d 1684*** `vc-update' is now an alias for `vc-pull'.
0c32ce32
CY
1685
1686*** Support for merging on distributed version control systems.
7d301ae6
CY
1687The command C-x v m (`vc-merge') now runs a "merge" operation, if it
1688is supported (currently with Bzr, Git, and Mercurial), to merge
1689changes from another branch into the current one. It prompts for
1690specifics, e.g. a merge source.
0c32ce32 1691
2afef60a 1692*** New option `vc-revert-show-diff' controls whether `vc-revert'
bbe43420 1693shows a diff while querying the user. It defaults to t.
2afef60a 1694
d4eb88c7
CY
1695*** Log entries in some Log View buffers can be toggled to display a
1696longer description by typing RET (log-view-toggle-entry-display).
dab3703d
GM
1697This is currently supported for Bzr, Git, and Mercurial (to support
1698another backend, define a `log-view-expanded-log-entry-function').
7d301ae6 1699In the Log View buffers made by C-x v L (`vc-print-root-log'), you can
d4eb88c7
CY
1700use this to display the full log entry for the revision at point.
1701
1c6c854e
CS
1702*** New command `vc-ediff' allows visual comparison of two revisions
1703of a file similar to `vc-diff', but using ediff backend.
1704
86c60681
CY
1705*** The option `vc-initial-comment' was removed in Emacs 23.2, but
1706this was not advertised at the time.
1707
86c60681
CY
1708*** `vc-toggle-read-only' is an obsolete alias for `toggle-read-only'.
1709Since Emacs 23, it has done the same thing as `toggle-read-only', but
80c6d77f
GM
1710this was not advertised at the time.
1711
041d709f
CY
1712** Obsolete modes
1713
23d70505
GM
1714*** abbrevlist.el
1715
f8ca9162 1716*** erc-hecomplete.el (use erc-pcomplete.el instead)
23d70505
GM
1717
1718*** partial-completion-mode (complete.el) is obsolete.
041d709f
CY
1719You can get a comparable behavior with:
1720(setq completion-styles '(partial-completion initials))
1721(setq completion-pcm-complete-word-inserts-delimiters t)
1722
23d70505
GM
1723*** pc-mode.el is obsolete (CUA mode is much more comprehensive).
1724
2c719188 1725*** pgg is obsolete (use EasyPG instead).
041d709f
CY
1726
1727*** sregex.el is obsolete, since rx.el is a strict superset.
1728
23d70505
GM
1729*** s-region.el and pc-select.el are obsolete.
1730They are superseded by shift-select-mode, enabled by default since 23.1.
1731
2c719188 1732*** vc-mcvs.el is obsolete (for lack of a maintainer).
ca5eed61 1733
0fe719e6
GM
1734** Miscellaneous
1735
05f77e38 1736*** The Landmark game is now invoked with `landmark', not `lm'.
c6ad2a4e 1737Its functions and variables have been similarly renamed.
05f77e38 1738
dfdb4cad 1739*** In `ido-file-completion-map', C-v is no longer bound to `ido-toggle-vc'.
05f77e38
GM
1740(This interfered with cua-mode.)
1741
9f678528
GM
1742*** f90.el has some support for Fortran 2008 syntax.
1743
0fe719e6
GM
1744*** `copyright-fix-years' can optionally convert consecutive years to ranges.
1745
5b3e6db8
GM
1746*** New command `nato-region' converts text to NATO phonetic alphabet.
1747
eb199145
GM
1748\f
1749* New Modes and Packages in Emacs 24.1
d445b3f8 1750
60e56523 1751** Occur Edit mode applies edits made in *Occur* buffers to the
8c0f49f0 1752original buffers. It is bound to "e" in Occur mode.
60e56523 1753
a075a2c5
GM
1754** New global minor mode electric-pair-mode.
1755When enabled, typing an open parenthesis automatically inserts the
1756matching closing one.
1757
1758** New global minor mode electric-indent-mode.
1759When enabled, typing certain characters triggers reindentation.
cd3308f3
GM
1760Major modes wishing to use this can set electric-indent-chars or
1761electric-indent-functions.
a075a2c5
GM
1762
1763** New global minor mode electric-layout-mode.
1764When enabled, typing certain characters automatically inserts newlines.
cd3308f3 1765Major modes wishing to use this can set electric-layout-rules.
3b843809 1766
a83ec3c9
CY
1767** tabulated-list.el provides a generic major mode for tabulated data,
1768from which other modes can be derived.
1769
d02c9bcd
SM
1770** pcase.el provides the ML-style pattern matching macro `pcase'.
1771
7725ebb7
MA
1772** secrets.el is an implementation of the Secret Service API, an
1773interface to password managers like GNOME Keyring or KDE Wallet. The
065f2743
MA
1774Secret Service API requires D-Bus for communication. The command
1775`secrets-show-secrets' offers a buffer with a visualization of the
1776secrets.
7725ebb7 1777
f9e78150
MA
1778** notifications.el provides an implementation of the Desktop
1779Notifications API. It requires D-Bus for communication.
1780
12fe5bcc
MA
1781** soap-client.el supports access to SOAP web services from Emacs.
1782soap-inspect.el is an interactive inspector for SOAP WSDL structures.
1783
ff1796f3 1784** New generic mode, xmodmap-generic-mode, for xmodmap files.
ad7d6ecb 1785
53bbe3ad 1786** New emacs-lock.el package.
7d301ae6
CY
1787The previous version has been moved to obsolete/old-emacs-lock.el.
1788Now, there is a proper minor mode `emacs-lock-mode'. Protection
1789against exiting Emacs and killing the buffer can be set separately.
1790The mechanism for automatically turning off protection for buffers
1791with dead inferior processes has been generalized.
53bbe3ad 1792
eb199145
GM
1793\f
1794* Incompatible Lisp Changes in Emacs 24.1
6dfcbe31 1795
7d301ae6
CY
1796** Passing a nil argument to a minor mode function call now ENABLES
1797the minor mode unconditionally. This is so that you can write e.g.
1798
dfdb4cad 1799 (add-hook 'text-mode-hook 'foo-mode)
7d301ae6 1800
dfdb4cad
CY
1801to enable foo-mode in Text mode buffers, removing the need for
1802`turn-on-foo-mode' style functions. This affects all mode commands
1803defined by `define-minor-mode'. If called interactively, the mode
1804command still toggles the minor mode.
7d301ae6 1805
d268b4fe
CY
1806** The return value of `backup-buffer' has changed.
1807It is now a list of three elements, where the second element is a list
1808describing the original file's SELinux context. If Emacs or the
f003f294 1809system lacks SELinux support, the context list is (nil nil nil nil).
7d301ae6 1810See "Basic SELinux support" above, under "Changes in Emacs 24.1".
d268b4fe 1811
dfdb4cad
CY
1812** `char-direction-table' and the `char-direction' function were deleted.
1813They were buggy and inferior to the new support of bidirectional
1814editing introduced in Emacs 24. If you need the bidirectional
1815properties of a character, use `get-char-code-property' with the last
1816argument `bidi-class'.
fa6996bc 1817
470d996d
TV
1818** `copy-directory' now copies the source directory as a subdirectory
1819of the target directory, if the latter is an existing directory. The
1820new optional arg COPY-CONTENTS, if non-nil, makes the function copy
1821the contents directly into a pre-existing target directory.
1822
9173a8fb
CY
1823** For mouse click input events in the text area, the Y pixel
1824coordinate in the POSITION list now counts from the top of the text
1825area, excluding any header line. Previously, it counted from the top
1826of the header line.
1827
7d301ae6
CY
1828** Support for "old-style" backquotes, obsolete for 10+ years, has
1829been further reduced. Now a backquote not followed by a space is
1830always treated as a "new-style" backquote. Please remove all
1831"old-style" backquotes from your code. If your code uses backquotes
1832as documented in the Elisp manual, and compiles without warning, then
1833you have nothing to do in this regard. Code not following the
1834appropriate conventions may fail to compile.
50ab02c5
CY
1835
1836The most common cause of trouble seems to be an old-style backquote
1837followed by a newline. Another cause of trouble is vector notation
1838for key sequence notation: instead of [(control ,)] and [(control ')],
1839you should write [(control ?,)] and [(control ?')], which will work in
7d301ae6 1840older Emacsen too.
288cf4e9 1841
520f2425
GM
1842** The macro `eval-at-startup' was removed in Emacs 23.2, but this
1843was not advertised at the time. The function `custom-initialize-delay'
1844replaced all known uses.
1845
7d301ae6
CY
1846** `view-buffer' now treats special mode-class in the same way that
1847`view-file' has since Emacs 22 (i.e. it won't enable View mode if the
1848major mode is special).
fd5c9dfa 1849
7d301ae6 1850** Menu and tool bar changes
6431f2e6 1851
7d301ae6 1852*** During startup, Emacs no longer adds entries for `menu-bar-lines'
0a19a6f8
JB
1853and `tool-bar-lines' to `default-frame-alist' and `initial-frame-alist'.
1854With these alist entries omitted, `make-frame' checks the value of the
1855variable `menu-bar-mode'/`tool-bar-mode' to determine whether to create
1856a menu-bar or tool-bar, respectively. If the alist entries are added,
1857they override the value of `menu-bar-mode'/`tool-bar-mode'.
6431f2e6 1858
7d301ae6
CY
1859*** The menu bar bindings's caches are not used any more.
1860Use (where-is-internal <def> nil t) instead.
1861
fe0aa820 1862** Regions created by mouse dragging are now normal active regions,
dfdb4cad 1863similar to those created by shift-selection (see Selection changes
7d301ae6
CY
1864above). In previous Emacs versions, these regions were delineated by
1865`mouse-drag-overlay'; that variable has been removed.
d6d8ee7a 1866
7d301ae6
CY
1867** The fourth argument of `filter-buffer-substring' has been removed.
1868If you want to remove text properties from the final result, simply
1869pass the result through substring-no-properties.
34c99998 1870
4583e796
GM
1871** cl.el no longer provides `cl-19'.
1872
7d301ae6
CY
1873** The following obsolete functions and aliases have been removed
1874(the appropriate new function is given in parentheses; "not needed"
1875means you can just remove all calls to the function in question):
1876
1877*** `comint-kill-output' (`comint-delete-output')
1878*** `decompose-composite-char' (`char-to-string')
1879*** `outline-visible' (`outline-invisible-p')
1880*** `internal-find-face' (`facep')
1881*** `internal-get-face' (`facep and check-face')
1882*** `frame-update-faces' (not needed)
1883*** `frame-update-face-colors' (`frame-set-background-mode')
1884*** `x-frob-font-weight' and `x-frob-font-slant' (`make-face-*' functions)
2c719188 1885*** `x-make-font-bold and x-make-font-demibold (`make-face-bold')
7d301ae6
CY
1886*** `x-make-font-italic' and `x-make-font-oblique' (`make-face-italic')
1887*** `x-make-font-bold-italic' (`make-face-bold-italic')
1888*** `x-make-font-unbold' (`make-face-unbold')
1889*** `x-make-font-unitalic' (`make-face-unitalic')
1890*** `mldrag-drag-mode-line' (`mouse-drag-mode-line')
1891*** `mldrag-drag-vertical-line' (`mouse-drag-vertical-line')
1892*** `iswitchb-default-keybindings' (`iswitchb-mode')
1893*** `char-bytes' (== 1)
1894*** `isearch-return-char' (`isearch-printing-char')
1895*** `make-local-hook' (not needed)
1896*** `set-screen-height' (`set-frame-height')
1897*** `set-screen-width' (`set-frame-width')
1898
7d301ae6
CY
1899** The following obsolete variables and varaliases have been removed
1900(the appropriate new variable is given in parentheses):
1901
1902*** `checkdoc-minor-keymap' (`checkdoc-minor-mode-map')
1903*** `vc-header-alist' (`vc-BACKEND-header')
1904*** `directory-sep-char' (== ?/)
1905*** `font-lock-defaults-alist' (`font-lock-defaults')
1906*** `e' (`float-e').
3226d6ca 1907
041d709f 1908** The following obsolete files were removed:
7b0e3048
GM
1909sc.el, x-menu.el, rnews.el, rnewspost.el
1910
7d301ae6
CY
1911** The format of the finder-inf.el file has changed, since the Finder
1912mechanism is now based on the package system. The variable
1913`finder-package-info' is replaced by `package--builtins' and
1914`finder-keywords-hash'.
33658d4e 1915
c2c79260
DE
1916** When generating autoloads, `update-directory-autoloads' no longer
1917assumes every inspected file is in your `load-path'. It instead
1918generates relative names according to the current `load-path'.
1919
eb199145
GM
1920\f
1921* Lisp changes in Emacs 24.1
9097e8af 1922
041d709f 1923** Code can now use lexical scoping by default instead of dynamic scoping.
dfdb4cad 1924The `lexical-binding' variable enables lexical scoping for local
48da7392 1925variables. It is typically set via a file-local variable in the first
dfdb4cad
CY
1926line of the file, in which case it applies to all the code in that
1927file.
1928
041d709f
CY
1929*** `eval' takes a new optional argument `lexical' to choose the new lexical
1930binding instead of the old dynamic binding mode.
dfdb4cad 1931
041d709f
CY
1932*** Lexically scoped interpreted functions are represented with a new form
1933of function value which looks like (closure ENV ARGS &rest BODY).
1934
1935*** New macro `letrec' to define recursive local functions.
dfdb4cad
CY
1936
1937*** `defvar' and `defconst' now mark the variable as special (dynamic).
1938So do `defcustom' and other forms that call `defvar' as a subroutine.
1939
041d709f
CY
1940*** New function `special-variable-p' to check whether a variable is
1941declared as dynamically bound.
1942
88ed9e87
SM
1943*** The form ((lambda ...) ...) is deprecated.
1944
041d709f
CY
1945** An Emacs Lisp testing tool is now included.
1946Emacs Lisp developers can use this tool to write automated tests for
1947their code. See the ERT info manual for details.
1948
1949** Changes for bidirectional display and editing
f1816485 1950
041d709f 1951*** New function `current-bidi-paragraph-direction'.
7d301ae6 1952This returns the base direction of the paragraph at point.
041d709f 1953
041d709f 1954*** New function `bidi-string-mark-left-to-right'.
dfdb4cad
CY
1955Given a string containing characters from right-to-left scripts, this
1956function returns another string which can be safely inserted into a
1957buffer, such that any following text will be always displayed to the
7d301ae6
CY
1958right of that string. (This works by appending an invisible Unicode
1959"LEFT-TO-RIGHT MARK" character if the argument string might need it.)
041d709f 1960
7d301ae6 1961This is useful when the buffer has overall left-to-right paragraph
dfdb4cad
CY
1962direction and you need to insert a string whose contents are not known
1963in advance, without disrupting the layout of the line.
041d709f 1964
bee0fcef 1965** Window changes
dfdb4cad 1966
c4682d18
MR
1967*** Window tree functions are accessible in Elisp.
1968Functions are provided to return the parent, siblings or child windows
1969of any window including internal windows (windows not associated with a
1970buffer) in the window tree.
dfdb4cad 1971
24300f5f
CY
1972**** New function `window-valid-p' gives non-nil for live and internal
1973windows.
dfdb4cad 1974
24300f5f 1975**** Window manipulation can deal with internal windows.
c4682d18
MR
1976Many window handling functions like `split-window', `delete-window', or
1977`delete-other-windows' as well as the window resizing functions can now
1978act on any window including internal ones.
dfdb4cad 1979
c4682d18
MR
1980*** window-total-height/-width vs window-body-height/-width.
1981The function `window-height' has been renamed to `window-total-height'
1982and `window-width' has been renamed to `window-body-width'. The old
1983names are provided as aliases. Two new functions `window-total-width'
1984and `window-body-height' are provided.
dfdb4cad 1985
c4682d18
MR
1986*** Window parameters specific to window handling functions.
1987For each window you can specify a parameter to override the default
1988behavior of a number of functions like `split-window', `delete-window'
ed6235ea
MR
1989and `delete-other-windows'. The variable `ignore-window-parameters'
1990allows to ignore processing such parameters.
dfdb4cad 1991
c4682d18 1992*** New semantics of third argument of `split-window'.
c4682d18
MR
1993The third argument of `split-window' has been renamed to SIDE and can be
1994set to any of the values 'below, 'right, 'above, or 'left to make the
1995new window appear on the corresponding side of the window that shall be
1996split. Any other value of SIDE will cause `split-window' to split the
1997window into two side-by-side windows as before.
dfdb4cad 1998
c4682d18 1999*** Window resizing functions.
487ffd7a 2000A new standard function for resizing windows called `window-resize' has
c4682d18
MR
2001been introduced. This and all other functions for resizing windows no
2002longer delete any windows when they become too small.
dfdb4cad 2003
b3c0dbfd
MR
2004*** Deleting the selected window now selects the most recently selected
2005live window on that frame instead.
dfdb4cad 2006
c4682d18
MR
2007*** `adjust-window-trailing-edge' adjustments.
2008`adjust-window-trailing-edge' can now deal with fixed-size windows and
2009is able to resize other windows if a window adjacent to the trailing
2010edge cannot be shrunk any more. This makes its behavior more similar to
2011that of Emacs 21 without compromising, however, its inability to delete
2012windows which was introduced in Emacs 22.
dfdb4cad 2013
c4682d18
MR
2014*** Window-local buffer lists.
2015Windows now have local buffer lists. This means that removing a buffer
2016from display in a window will preferably show the buffer previously
2017shown in that window with its previous window-start and window-point
2018positions. This also means that the same buffer may be automatically
2019shown twice even if it already appears in another window.
dfdb4cad 2020
bee0fcef
CY
2021*** `switch-to-buffer' has a new optional argument FORCE-SAME-WINDOW,
2022which if non-nil requires the buffer to be displayed in the currently
2023selected window, signaling an error otherwise. If nil, another window
2024can be used, e.g. if the selected one is strongly dedicated.
dfdb4cad 2025
0a2132ba 2026*** `split-window-vertically' and `split-window-horizontally' renamed
2d197ffb
CY
2027to `split-window-below' and `split-window-right' respectively.
2028The old names are kept as aliases.
dfdb4cad 2029
0a2132ba
CY
2030*** Display actions
2031
2032**** The second arg to `display-buffer' and `pop-to-buffer' is now
2033named ACTION, and takes a display action of the same form as
2034`display-buffer-base-action' (see Changes, above). A non-nil,
2035non-list value is treated specially, as the old meaning.
2036
2037**** New variable `display-buffer-overriding-action'.
2038
2039**** The procedure of `display-buffer' etc. to choose a window is
2040determined by combining `display-buffer-overriding-action',
2041`display-buffer-alist', the ACTION arg, `display-buffer-base-action',
2042and `display-buffer-fallback-action'. The second and fourth of these
2043are user-customizable variables.
2044
2045See the docstring of `display-buffer' for details.
bee0fcef 2046
20d2304d
CY
2047*** New functions `window-state-get' and `window-state-put'.
2048These functions allow to save and restore the state of an arbitrary
2049frame or window as an Elisp object.
2050
a2a25d24 2051** Completion
041d709f 2052
7d301ae6
CY
2053*** New variable `completion-extra-properties' used to specify extra
2054properties of the current completion:
a2a25d24
SM
2055- :annotate-function, same as the old completion-annotate-function.
2056- :exit-function, function to call after completion took place.
2057
7d301ae6
CY
2058*** Functions on `completion-at-point-functions' can return any of the
2059properties valid for `completion-extra-properties'.
a2a25d24 2060
7d301ae6 2061*** `completion-annotate-function' is obsolete.
a2a25d24 2062
620c53a6
SM
2063*** New `metadata' method for completion tables. The metadata thus returned
2064can specify various details of the data returned by `all-completions':
2065- `category' is the kind of objects returned (e.g., `buffer', `file', ...),
2066 used to select a style in completion-category-overrides.
2067- `annotation-function' to add annotations in *Completions*.
2068- `display-sort-function' to specify how to sort entries in *Completions*.
2069- `cycle-sort-function' to specify how to sort entries when cycling.
2070
7d301ae6
CY
2071*** `minibuffer-local-filename-must-match-map' is not used any more.
2072Instead, the bindings in `minibuffer-local-filename-completion-map'
2073are combined with `minibuffer-local-must-match-map'.
de09aa52
CY
2074
2075*** New variable `completing-read-function' allows overriding the
2076behavior of `completing-read'.
2077
f042970d 2078** `glyphless-char-display' can now distinguish between graphical and
16a43933
CY
2079text terminal display, via a char-table entry that is a cons cell.
2080
7d301ae6 2081** `pre-command-hook'/`post-command-hook' are not reset to nil on error.
f6d62986
SM
2082Instead, the offending function is removed.
2083
b1f6fa26
CY
2084** New hook types
2085
2086*** New function `run-hook-wrapped' for running an abnormal hook by
2087passing the hook functions as arguments to a "wrapping" function.
e7bc51d0 2088Like `run-hook-with-args-until-success', it stops at the first
5385447f 2089non-nil return value.
e7bc51d0 2090
b1f6fa26
CY
2091*** New macro `with-wrapper-hook' for running an abnormal hook as a
2092set of "wrapping" filters, similar to around advice.
54521c99
GM
2093(A version of this macro was actually added in Emacs 23.2 but was not
2094advertised at the time.)
f6d62986 2095
0b19b281 2096** Debugger changes
dfdb4cad 2097
0b19b281 2098*** New macro `condition-case-unless-debug' (this was actually added in
1be3ca5a 2099Emacs 23.1 as condition-case-no-debug, but not advertised)
dfdb4cad 2100
0b19b281 2101*** The macro `with-demoted-errors' was added in Emacs 23.1, but not advertised.
dfdb4cad 2102
0b19b281 2103*** Variable `stack-trace-on-error' removed.
dfdb4cad 2104
0b19b281
CY
2105*** The debugger can now "continue" from an error, which means it will
2106jump to the error handler as if the debugger had not been invoked
2107instead of jumping all the way to the top-level.
dfdb4cad 2108
0b19b281
CY
2109*** Set `debug-on-event' to enter the debugger on events like SIGUSR1.
2110This can be useful when `inhibit-quit' is set.
d6b1d521 2111
953cebf5 2112** The new function `server-eval-at' allows evaluation of Lisp forms on
37576acd 2113named Emacs server instances.
7deebf1b 2114
1b9f60cc
GM
2115** `call-process' and `call-process-region' allow a `(:file "file")' spec
2116to redirect STDOUT to a file.
7deebf1b 2117
7d301ae6
CY
2118** The function `format-time-string' now supports the %N directive,
2119for higher-resolution time stamps.
da97a9e6 2120
0b19b281 2121** New input reading functions
dfdb4cad 2122
0b19b281
CY
2123*** New function `read-char-choice' reads a restricted set of
2124characters, discarding any inputs not inside the set.
dfdb4cad 2125
0b19b281
CY
2126*** The command `read-color' now requires a match for a color name
2127or RGB triplet, instead of signaling an error if the user provides
2128invalid input.
dfdb4cad 2129
0b19b281 2130**** `facemenu-read-color' is now an alias for `read-color'.
3ef01959 2131
2e288d54
JB
2132** `image-library-alist' is renamed to `dynamic-library-alist'.
2133The variable is now used to load all kind of supported dynamic libraries,
2134not just image libraries. The previous name is still available as an
2135obsolete alias.
2136
0b19b281 2137** Syntax parsing changes
dfdb4cad 2138
0b19b281 2139*** New variable `syntax-propertize-function'.
04e2ce72 2140This replaces `font-lock-syntactic-keywords' which is now obsolete.
cf38dd42
SM
2141This allows syntax-table properties to be set independently from font-lock:
2142just call syntax-propertize to make sure the text is propertized.
2143Together with this new variable come a new hook
2144syntax-propertize-extend-region-functions, as well as two helper functions:
2145syntax-propertize-via-font-lock to reuse old font-lock-syntactic-keywords
2146as-is; and syntax-propertize-rules which provides a new way to specify
2147syntactic rules.
dfdb4cad 2148
0b19b281 2149*** Syntax tables support a new "comment style c" additionally to style b.
a2e5caf7 2150
7d301ae6 2151** New hook `post-self-insert-hook', run after `self-insert-command'.
041d709f 2152
4e2db1fe 2153** frame-local variables cannot be let-bound any more.
041d709f 2154
15de15c6 2155** Major and minor mode changes
dfdb4cad 2156
0b19b281
CY
2157*** `set-auto-mode' now respects mode: local variables at the end of files,
2158as well as those in the -*- line.
dfdb4cad 2159
15de15c6
CY
2160*** `prog-mode' is a new major mode from which programming modes
2161should be derived.
dfdb4cad 2162
15de15c6
CY
2163**** `prog-mode-hook' can be used to enable features for programming
2164modes, e.g. (add-hook 'prog-mode-hook 'flyspell-prog-mode) to enable
2165on-the-fly spell checking for comments and strings.
dfdb4cad 2166
15de15c6
CY
2167*** New hook `change-major-mode-after-body-hook', run by
2168`run-mode-hooks' just before any other mode hooks.
dfdb4cad 2169
7a9a2fc6
GM
2170*** Enabled globalized minor modes can be disabled in specific major modes.
2171If the global mode is global-FOO-mode, then run (FOO-mode -1) in the
2172major mode's hook, where FOO-mode toggles the mode on a per-buffer basis.
dfdb4cad 2173
feb8a83a 2174*** `define-minor-mode' accepts new keywords :variable, :after-hook.
f44379e7 2175
7d301ae6
CY
2176** File-handling changes
2177
7d301ae6 2178*** `delete-file' and `delete-directory' now accept optional arg TRASH.
f1a5d776
CY
2179Trashing is performed if TRASH and `delete-by-moving-to-trash' are
2180both non-nil. Interactively, TRASH defaults to t, unless a prefix
2181argument is supplied (see Trash changes, above).
53967e09 2182
7d301ae6 2183*** New file predicates: `file-equal-p', `file-in-directory-p'.
ec70a47d 2184
4039c786
CY
2185** Tool-bars can display separators.
2186Tool-bar separators are handled like menu separators in menu-bar maps,
94975270 2187i.e. via menu entries of the form `(menu-item "--")'.
9317e499 2188
00fe2df1
JL
2189** Image API
2190
18af70d0
CY
2191*** Animated images support (currently animated gifs only).
2192
2193**** `image-animated-p' returns non-nil if an image can be animated.
2194
2195**** `image-animate' animates a supplied image spec.
2196
2197**** `image-animate-timer' returns the timer object for an image that
2198is being animated.
00fe2df1 2199
7cb76fe0
GM
2200*** `image-extension-data' has been renamed to `image-metadata'.
2201The old name is an obsolete alias to the new one.
1546c559 2202
b4ac6e8c
GM
2203*** Image mode can view any image type that ImageMagick supports.
2204This requires Emacs to be built with ImageMagick support.
7d301ae6
CY
2205
2206**** New function `imagemagick-types', defined if ImageMagick support
2207is enabled, returns a list of image file extensions that your
2208ImageMagick installation supports.
2209
2210**** New function `imagemagick-register-types' enables ImageMagick
2211image types in Image mode and in `create-image' and other helper
2212functions.
2213
2214**** New option `imagemagick-types-inhibit' excludes certain
2215ImageMagick image types from `imagemagick-register-types'.
2216
7d301ae6
CY
2217**** With ImageMagick support, there are extra Image mode commands to
2218resize and rotate images: `image-transform-fit-to-height',
2219`image-transform-fit-to-width', `image-transform-set-rotation', and
2220`image-transform-set-scale'.
041d709f 2221
7d301ae6
CY
2222** `compose-mail' now accepts an optional 8th arg, RETURN-ACTION, and
2223passes it to the mail user agent function. This argument specifies an
2224action for returning to the caller after finishing with the mail. For
2225example, this is used by Rmail to optionally delete a mail window.
b4ac6e8c 2226
71c17aec 2227** XML and HTML parsing
483ab230
CY
2228If Emacs is compiled with libxml2 support, there are two new
2229functions: `libxml-parse-html-region' (which parses "real world" HTML)
2230and `libxml-parse-xml-region' (which parses XML). Both return an
2231Emacs Lisp parse tree.
4b9832a6 2232
7d301ae6 2233** Networking and encryption changes
e2574f2c 2234
7d301ae6
CY
2235*** `open-network-stream' can now be used to open an encrypted stream.
2236It now accepts an optional `:type' parameter for initiating a TLS
2237connection, directly or via STARTTLS. To do STARTTLS, additional
2238parameters (`:end-of-command', `:success', `:capabilities-command')
2239must also be supplied.
2240
2241*** New library gnutls.el.
dfdb4cad
CY
2242The new function `gnutls-available-p' returns non-nil if Emacs is
2243built with GnuTLS support. The main entry points are
2244`open-gnutls-stream' and `gnutls-negotiate'. It's easiest to use
2245these functions through `open-network-stream', because that can
7d301ae6
CY
2246upgrade connections through STARTTLS opportunistically or use plain
2247SSL, depending on your needs. For debugging, set `gnutls-log-level'
2248greater than 0.
2249
7d301ae6
CY
2250*** New primitive `secure-hash' that supports many secure hash algorithms:
2251md5, sha1, sha2, sha224, sha256, sha384, and sha512. The lisp library
2252sha1.el has been removed. The `sha1' feature is provided by default.
71c17aec 2253
a6020335
MH
2254** Isearch
2255
2256*** New hook `isearch-update-post-hook' that runs in `isearch-update'.
2257
9326ba26
CY
2258** Progress reporters can now "spin".
2259The MIN-VALUE and MAX-VALUE arguments of `make-progress-reporter' can
2260now be nil, or omitted. This makes a "non-numeric" reporter. Each
2261time you call `progress-reporter-update' on that progress reporter,
2262with a nil or omitted VALUE argument, the reporter message is
2263displayed with a "spinning bar".
2264
3e214b50
JB
2265** New variable `revert-buffer-in-progress-p' is true while a buffer is
2266being reverted, even if the buffer has a local `revert-buffer-function'.
2267
001bf877
GM
2268** New variables `delayed-warnings-list' and `delayed-warnings-hook'.
2269If delayed-warnings-list is non-nil, the command loop calls
7d301ae6
CY
2270`delayed-warnings-hook' after `post-command-hook'. At present, this
2271is only used by Emacs on some platforms to display warnings during
2272startup, which might otherwise not be noticed. This uses the
2273functions `display-delayed-warnings' and `collapse-delayed-warnings'.
001bf877 2274
6420d28b
CY
2275** rx.el has a new `group-n' construct for explicitly numbered groups.
2276
dac86404
GM
2277** New function `make-composed-keymap' that constructs a new keymap
2278from multiple input maps. You can use this to make a keymap that
2279inherits from multiple maps, eg:
2280 (set-keymap-parent newmap (make-composed-keymap othermap parent))
43dc9f5b 2281
c8f6ec5c
GM
2282** New function `string-prefix-p'.
2283(This was actually added in Emacs 23.2 but was not advertised at the time.)
2284
27f7ef2f 2285** New reader macro ## that stands for the empty symbol.
43dc9f5b
AS
2286This means that the empty symbol can now be read back. Also, #: by itself
2287(when not immediately followed by a possible symbol character) stands for
2288an empty uninterned symbol.
041d709f 2289
fead402d
CY
2290** New math functions `isnan', `copysign', `frexp', `ldexp'.
2291
7d301ae6 2292** The following functions and variables are obsolete:
041d709f 2293
05f77e38
GM
2294*** `tooltip-use-echo-area' is obsolete.
2295Rather than setting this to t, disable Tooltip mode instead.
2296
041d709f
CY
2297*** buffer-substring-filters is obsolete.
2298Use `filter-buffer-substring-functions' instead.
2299
2300*** `byte-compile-disable-print-circle' is obsolete.
2301
2302*** `deferred-action-list' and `deferred-action-function' are obsolete.
f160676e
GM
2303Use `post-command-hook' instead.
2304
67e729a5
CY
2305*** `font-lock-maximum-size' is obsolete.
2306
eb199145
GM
2307\f
2308* Changes in Emacs 24.1 on non-free operating systems
d53a60a6 2309
7a22e700 2310** On MS Windows, Emacs warns when using the obsolete init file _emacs,
a2f0118c
GM
2311and also when HOME is set to C:\ by default.
2312
7a22e700 2313** New configure.bat options
04779484 2314
7a22e700 2315*** --enable-checking builds Emacs with extra runtime checks.
e3aef5c6 2316
7a22e700 2317*** --distfiles specifies files to be included in binary distribution.
e2574f2c 2318
7a22e700
OK
2319*** --without-gnutls disables automatic GnuTLS detection.
2320
a0d363f4 2321*** --lib for general library linkage, works with the USER_LIBS build variable.
e2574f2c 2322
0a19a6f8 2323** New make target `dist' to create binary distribution for MS Windows.
e3aef5c6 2324
1f5e1a16
GM
2325** The Lisp function `w32-default-color-map' is now obsolete.
2326(It is only used internally in the Emacs C code.)
5430d399 2327
1f5e1a16
GM
2328** Customize ns-auto-hide-menu-bar to have the menu-bar hidden, but
2329reappear on mouse-over. (Requires OS X 10.6 or later.)
04e2ce72 2330
ad7c802c
CY
2331** On Mac OS X, dragging a file into Emacs visits the file, like on
2332other platforms, rather than inserting its contents into the buffer.
2333
05197f40 2334\f
a933dad1 2335----------------------------------------------------------------------
5b87ad55 2336This file is part of GNU Emacs.
a933dad1 2337
ab73e885 2338GNU Emacs is free software: you can redistribute it and/or modify
5b87ad55 2339it under the terms of the GNU General Public License as published by
ab73e885
GM
2340the Free Software Foundation, either version 3 of the License, or
2341(at your option) any later version.
5b87ad55
GM
2342
2343GNU Emacs is distributed in the hope that it will be useful,
2344but WITHOUT ANY WARRANTY; without even the implied warranty of
2345MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2346GNU General Public License for more details.
a933dad1 2347
5b87ad55 2348You should have received a copy of the GNU General Public License
ab73e885 2349along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
a933dad1 2350
05197f40 2351\f
a933dad1
DL
2352Local variables:
2353mode: outline
2354paragraph-separate: "[ \f]*$"
2355end: