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