* doc/lispref/modes.texi (Auto-Indentation): Mention electric-indent variables.
[bpt/emacs.git] / etc / NEWS
CommitLineData
29b7722a 1GNU Emacs NEWS -- history of user-visible changes.
5b87ad55 2
ba318903 3Copyright (C) 2010-2014 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.
3f7194ed 16
a1ed8b05 17Temporary note:
d856c4a9
GM
18+++ indicates that all necessary documentation updates are complete.
19 (This means all relevant manuals in doc/ AND lisp doc-strings.)
219afb88 20--- means no change in the manuals is needed.
d856c4a9 21When you add a new item, use the appropriate mark if you are sure it applies,
219afb88 22otherwise leave it unmarked.
a1ed8b05
GM
23
24\f
95a32efb 25* Installation Changes in Emacs 24.4
7c3d167f 26
81a15753 27---
70c8f5ca 28** Emacs can now be compiled with ACL support.
7c3d167f
RF
29This happens by default if a suitable support library is found at
30build time, like libacl on GNU/Linux. To prevent this, use the
81a15753 31configure option `--disable-acl'. See below for related features.
7c3d167f 32
81a15753 33---
70c8f5ca 34** Emacs can now be compiled with file notification support.
671d4bfc
GM
35This happens by default if a suitable system library is found at
36build time. To prevent this, use the configure option
e873a22e 37`--without-file-notification'. See below for file-notify features.
81a15753
GM
38This feature is not available for the Nextstep port.
39
40---
41** Emacs can now be compiled with zlib support.
42This happens by default if zlib is present, which it normally is.
43To prevent this, use the configure option `--without-zlib'.
44This provides the function `zlib-decompress-region'; see below for details.
2f23b3ab 45
d65a92bb 46---
70c8f5ca
CY
47** The configure option `--without-compress-info' has been generalized,
48and renamed to `--without-compress-install'. It now prevents compression
335142f9
GM
49of _any_ files during installation.
50
d65a92bb 51---
70c8f5ca 52** The configure option `--with-crt-dir' has been removed.
a22359a7 53It is no longer needed, as the crt*.o files are no longer linked specially.
f1e496a5 54
d65a92bb 55---
ae7bfbf5
JB
56** Directories passed to configure option `--enable-locallisppath' are
57no longer created during installation.
58
9524a13d 59---
8251c3f8 60** Emacs for NS (Mac OS X, GNUstep) can be built with ImageMagick support.
81a15753 61This requires pkg-config to be available at build time.
9524a13d 62
c57b2d76 63\f
95a32efb 64* Startup Changes in Emacs 24.4
c57b2d76 65
17e0445b
GM
66+++
67** When initializing `load-path', an empty element in the EMACSLOADPATH
68environment variable (either leading, e.g., ":/foo"; trailing, e.g.,
69"/foo:"; or embedded, e.g., "/foo::/bar") is replaced with the default
70load-path (the one that would have been used if EMACSLOADPATH was unset).
71This makes it easier to _extend_ the load-path via EMACSLOADPATH
72(previously, EMACSLOADPATH had to specify the complete load-path,
73including the defaults). (In older versions of Emacs, an empty element
74was replaced by ".", so use an explicit "." now if that is what you want.)
75
a0833f62
GM
76+++
77** The -L option, which normally prepends its argument to load-path,
2df10228
GM
78will instead append, if the argument begins with `:' (or `;' on MS Windows;
79i.e., `path-separator').
a0833f62 80
06a4f110
GM
81+++
82** If you use either site-load.el or site-init.el to customize the dumped
83Emacs executable, any changes to `load-path' that these files make
84will no longer be present after dumping. To affect a permanent change
85to `load-path', use the `--enable-locallisppath' option of `configure'.
86
70c8f5ca
CY
87+++
88** The user option `initial-buffer-choice' can now specify a function
89to set up the initial buffer.
90
c57b2d76 91\f
95a32efb 92* Changes in Emacs 24.4
c6c08d3f 93
d2b94b15 94+++
81a15753
GM
95** New function `zlib-decompress-region', which decompresses gzip- and
96zlib-format compressed data using built-in zlib support, if available.
97
d8a2993d
TZ
98+++
99** New option `gnutls-verify-error', if non-nil, means that Emacs
100should reject SSL/TLS certificates that GnuTLS determines as invalid.
101(This option defaults to nil at present, but this is expected to change
102in a future release.)
103
0a12fca0
EZ
104+++
105** Emacs now supports menus on text-mode terminals.
106If the terminal supports a mouse, clicking on the menu bar, or on
107sensitive portions of the mode line or header line, will drop down the
108menu defined at that position. Likewise, clicking C-mouse-2 or
109C-mouse-2 or C-mouse-3 on the text area will pop up the menus defined
110for those locations.
111
112If the text terminal does not support a mouse, you can activate the
113first menu-bar menu by typing F10, which invokes `menu-bar-open'.
114
115If you want the previous behavior, whereby F10 invoked `tmm-menubar',
116customize the option `tty-menu-open-use-tmm' to a non-nil value.
f8b18150
GM
117(Typing M-` always invokes `tmm-menubar', even if `tty-menu-open-use-tmm'
118is nil.)
0a12fca0 119
a34a0ac8 120+++
70c8f5ca
CY
121** The *Messages* buffer is created in `messages-buffer-mode',
122a new major mode, with read-only status. Any code that might create
123the *Messages* buffer should call the function `messages-buffer' to do
124so and set up the mode.
61a5bb85 125
6f876149 126+++
81a15753
GM
127** Emacs can now support ACLs (access control lists).
128This requires a suitable support library to be found at build time.
6f876149
GM
129On GNU/Linux, the POSIX ACL interface is used via libacl.
130On MS-Windows, the NT Security APIs are used to emulate the POSIX interface.
81a15753 131
7c3d167f
RF
132+++
133*** Emacs preserves the ACL entries of files when backing up.
134+++
135*** New functions `file-acl' and `set-file-acl' get and set the ACL
6f876149 136entries of a file.
7c3d167f 137
4e3f9230
YM
138** Multi-monitor support has been added.
139
915f4bce 140+++
4e3f9230
YM
141*** New functions `display-monitor-attributes-list' and
142`frame-monitor-attributes' can be used to obtain information about
143each physical monitor on multi-monitor setups.
144
7ebd57e9 145+++
cf13177e
YM
146*** The functions `display-pixel-width' and `display-pixel-height' now
147behave consistently among the platforms: they return the pixel width
148or height for all physical monitors associated with the given display
7ebd57e9 149as if they were on X. To get information for each physical
cf13177e
YM
150monitor, use the new functions above. Similar notes also apply to
151`x-display-pixel-width', `x-display-pixel-height', `display-mm-width',
152`display-mm-height', `x-display-mm-width', and `x-display-mm-height'.
153
70c8f5ca
CY
154+++
155** The cursor stops blinking after 10 blinks (by default) on X and NS.
156You can change the default by customizing `blink-cursor-blinks'.
61e56e2c 157
70c8f5ca
CY
158+++
159** In keymaps where SPC scrolls forward, S-SPC now scrolls backward.
160This affects View mode, etc.
161
162** Help changes
f88ac3bb 163
98104aea 164+++
70c8f5ca
CY
165*** The command `apropos-variable' is renamed to `apropos-user-option'.
166`apropos-user-option' shows all user options while `apropos-variable'
167shows all variables. When called with a universal prefix argument,
168the two commands swap their behaviors. When `apropos-do-all' is
169non-nil, they output the same results.
18c26d81 170
70c8f5ca
CY
171+++
172*** The key `?' now describes prefix bindings, like `C-h'.
6585d561 173
6faf982a 174---
8251c3f8 175*** The command `describe-function' has been extended for EIEIO.
3ca34b22 176Running it on constructors will show a full description of the
d6a62260 177generated class. For generic functions, it will show all
3ca34b22
DE
178implementations together with links to the source. The old commands
179`describe-class', `describe-constructor' and `describe-generic' were
180removed.
181
44e76f9d
GM
182---
183*** The function `quail-help' is no longer an interactive command.
8251c3f8 184Use `C-h C-\' (`describe-input-method') instead.
6950f152 185
b29daf07
GM
186** ImageMagick
187
4e7d26fc 188+++
8251c3f8 189*** ImageMagick images now support the :max-width and :max-height keywords.
b29daf07 190
7b997b14
GM
191+++
192*** When using `create-image' with image data, you can pass a :format
193attribute (via the property-list argument) in order to help
194ImageMagick detect the image type. The value should be a MIME
195content-type that is found in the new variable `image-format-suffixes'.
b29daf07 196
70c8f5ca 197** Frame and window changes
da9ea6d9 198
87132570
MR
199+++
200*** The function `window-in-direction' introduced in Emacs 24.1 now
1920914a 201takes additional arguments for specifying a reference point, wrapping
87132570
MR
202selection around frame borders, and specifying ways to select the
203minibuffer window.
204
70c8f5ca
CY
205+++
206*** New commands `toggle-frame-fullscreen' and `toggle-frame-maximized',
207bound to <f11> and M-<f10>, respectively.
0a749fa0 208
dc20a9d2 209+++
70c8f5ca
CY
210*** New hooks `focus-in-hook', `focus-out-hook'.
211These are normal hooks run when an Emacs frame gains or loses input focus.
212
ca58fa73
GM
213*** Emacs can now change frame sizes in units of pixels, rather than
214text rows or columns. When maximizing a frame or making it fullscreen,
215remaining extra pixels are no longer given to the minibuffer, the rightmost
216fringe, or other unusable space, but are distributed among the text
217areas of the frame's windows. If the new option `frame-resize-pixelwise'
218is non-nil, all frame size changes happen pixelwise and set the
219corresponding size hints for the window manager.
220
221*** Emacs can now change window sizes in units of pixels.
222Mouse-dragging a mode line or window divider now changes the size of
223adjacent windows pixelwise. If the new option `window-resize-pixelwise'
224is non-nil, functions like `balance-windows-area' and `fit-window-to-buffer'
225resize windows pixelwise. Most functions for changing or accessing
226window sizes now have an additional argument that allows changes to apply,
227or values to be returned, in pixels instead of lines/columns.
b7aa5ad6 228
cac0a1d6
MR
229+++
230*** The functions `window-body-height' and `window-body-width' now never
231count partially visible lines or columns if called with a nil PIXELWISE
232argument.
233
b7aa5ad6
MR
234*** Emacs can now draw dividers between adjacent windows. To put
235dividers between side-by-side/vertically stacked windows customize the
236frame parameters `right-divider-width' and `bottom-divider-width' to
237some positive integer. You can drag dividers with the mouse (they show
238a corresponding cursor when the mouse hovers over them). You can change
239the appearance of dividers by customizing the faces `window-divider',
240`window-divider-first-pixel', and `window-divider-last-pixel'. The last
241two are useful to provide a 3D effect, or to better distinguish dividers
242from surrounding display objects.
243
b7aa5ad6
MR
244*** New functions are provided to return the pixel sizes of window
245components, namely `window-scroll-bar-width', `window-mode-line-height'
246`window-header-line-height', `window-right-divider-width' and
247`window-bottom-divider-width'.
248
b7aa5ad6
MR
249*** The new function `window-text-pixel-size' returns the size of the
250text of a window's buffer in pixels. This allows functions like
251`fit-frame-to-buffer' and `fit-window-to-buffer' to accurately fit a
252window to its buffer as it will be displayed.
253
cac0a1d6 254*** `fit-window-to-buffer' can now resize windows in both dimensions.
b7aa5ad6 255This behavior is controlled by the new option
cac0a1d6
MR
256`fit-window-to-buffer-horizontally'. The new option
257`fit-frame-to-buffer' allows to fit the window's frame to its buffer.
b7aa5ad6 258
cac0a1d6
MR
259*** `fit-frame-to-buffer' now fits frames in both dimensions. The new
260options `fit-frame-to-buffer-margins' and `fit-frame-to-buffer-sizes'
b7aa5ad6
MR
261control the size of the frame and its position on screen.
262
b7aa5ad6
MR
263*** Temp Buffer Resize Mode can now adjust height and width of windows
264and frames. `temp-buffer-resize-mode' is now able to adjust the height
265and the width of a window displaying a temporary buffer. The new option
266`temp-buffer-max-width' allows to control the width of temporary buffer
267windows. Moreover, if the new option `fit-frame-to-buffer' is non-nil
268and the buffer appears in the root window of a frame, Temp Buffer Resize
269Mode will try to adjust width and/or height of the frame.
764ec9e5 270
70c8f5ca
CY
271---
272*** `split-window' is now a non-interactive function, not a command.
273As a command, it was a special case of `C-x 2' (`split-window-below'),
274and as such superfluous. After being reimplemented in Lisp, its
275interactive form was mistakenly retained.
4f0552c2 276
eed1c399 277+++
b7aa5ad6
MR
278*** The functions `window-size' and `window-total-size' now have an
279optional argument to return a rounded size value.
280
eed1c399 281+++
b7aa5ad6
MR
282*** `window-state-put' now allows to put a window state into internal
283windows too.
284
daef8ab1 285+++
70c8f5ca
CY
286*** New option `scroll-bar-adjust-thumb-portion'.
287Available only on X, this option allows to control over-scrolling
288using the scroll bar (i.e. dragging the thumb down even when the end
289of the buffer is visible).
290
eed1c399 291+++
b7aa5ad6
MR
292*** New basic action function `display-buffer-in-previous-window' has
293`display-buffer' display a buffer in a window previously showing that
294buffer.
295
eed1c399 296+++
b7aa5ad6
MR
297*** New basic action function `display-buffer-at-bottom' has
298`display-buffer' choose or make a window at the bottom of the selected
299frame.
300
ecc384ac
XF
301*** New display action function `display-buffer-no-window' to not
302display the buffer in a window.
303
304*** New display action alist entry `allow-no-window' to indicate the
305caller of `display-buffer' is ready to handle the case of not
306displaying the buffer in a window.
307
70c8f5ca 308** Lisp evaluation changes
75a1e034 309+++
70c8f5ca
CY
310*** `eval-defun' on an already defined defcustom calls the :set function,
311if there is one.
312
c51e81ef 313+++
d856c4a9 314*** The commands `eval-expression' (`M-:'), `eval-last-sexp' (`C-x C-e'),
c51e81ef
GM
315and `eval-print-last-sexp' (`C-j' in Lisp Interaction mode) can take a
316zero prefix argument. This disables truncation of lists in the output,
317equivalent to setting `(eval-expression-)print-length' and
4d000e69 318`(eval-expression-)print-level' to nil. Additionally, it causes integers
c51e81ef 319to be printed in other formats (octal, hexadecimal, and character).
70c8f5ca 320
a8cb4247 321---
6bbc0c84
GM
322*** New hook `eval-expression-minibuffer-setup-hook' run by
323`eval-expression' on entering the minibuffer.
324
70c8f5ca
CY
325---
326** `write-region-inhibit-fsync' now defaults to t in batch mode.
da048127 327
2cd12d28 328+++
314ffdb1 329** `cache-long-line-scans' is now non-nil, and renamed to `cache-long-scans',
70c8f5ca 330because it affects caching of paragraph scanning results as well.
314ffdb1 331There is no reason to set this to nil except for debugging purposes.
4e36a6a6 332
70c8f5ca
CY
333---
334** The option `set-mark-default-inactive' has been deleted.
335This unfinished feature was introduced by accident in Emacs 23.1;
336simply disabling Transient Mark mode does the same thing.
337
6faf982a 338---
8251c3f8 339** The default value of `comment-use-global-state' is now t,
70c8f5ca
CY
340and this variable has been marked obsolete.
341
8251c3f8 342---
e2a095b1
GM
343** `emacs-bzr-version' has been renamed to `emacs-repository-version',
344and works for git too, if you fetch the repository notes.
8251c3f8 345
ec918aab 346+++
a22359a7
GM
347** New option `load-prefer-newer' affects how the `load' function chooses
348the file to load. If this is non-nil, then when both .el and .elc
642d7ae8
CY
349versions of a file exist, and the caller did not explicitly specify
350which one to load, then the newer file is loaded. The default, nil,
351means to always load the .elc file.
352
70c8f5ca
CY
353\f
354* Editing Changes in Emacs 24.4
355
356** Indentation changes
357
5fb6db0d 358+++
03bc753e
GM
359*** `electric-indent-mode' is now enabled by default.
360E.g., typing RET reindents the current line and indents the new line.
361`C-j' inserts a newline but does not indent.
362
8a51e8e4 363+++
5b7853e3
GM
364*** New buffer-local `electric-indent-local-mode'.
365
70c8f5ca
CY
366+++
367*** The behavior of `C-x TAB' (`indent-rigidly') has changed.
368When invoked without a prefix argument, it now activates a transient
369mode in which typing <left>, <right>, <S-left>, and <S-right> adjusts
370the text indentation in the region. Typing any other key resumes
371normal editing behavior.
3472b6c6 372
e1e9d7cc 373+++
70c8f5ca 374*** `tab-stop-list' is now implicitly extended to infinity by repeating
8251c3f8 375the last step. Its default value is changed to nil, which means a tab
3ccc2d28 376stop every `tab-width' columns.
b7d5bd82 377
5e61c1ef
GM
378+++
379** New command `cycle-spacing' acts like a smarter `just-one-space'.
380When called in succession, it cycles between spacing conventions:
381one space, no spaces, original spacing.
70c8f5ca 382
793ffe81 383+++
5e61c1ef
GM
384** The new function `fill-single-char-nobreak-p' can stop fill from breaking
385a line after a one-letter word, which is an error in some typographical
0a60cc0d 386conventions. To use it, add it to the `fill-nobreak-predicate' hook.
37f38bca 387
30aafaf5 388+++
8251c3f8 389** Uniquify is enabled by default, with `post-forward-angle-brackets' style.
70c8f5ca 390
308d5410 391+++
70c8f5ca
CY
392** New command `C-x SPC' (`rectangle-mark-mode') makes a rectangular region.
393Most commands are still unaware of it, but kill/yank do work on the rectangle.
958614cf 394
4c672a0f
EZ
395+++
396** New option `visual-order-cursor-movement'.
397If this is non-nil, cursor motion with arrow keys will follow the
398visual order of characters on the screen: <left> always moves to the
399left, <right> always moves to the right, disregarding the surrounding
400bidirectional context.
401
70c8f5ca 402** Register changes
c8af480d 403
7c324762 404+++
da942af1
GM
405*** All interactive commands that read a register (`copy-to-register', etc.)
406now display a temporary window after `register-preview-delay' seconds
407that summarizes existing registers. To disable this, set that option to nil.
eb9b8ff6
GM
408Interactive commands that read registers and want to make use of this
409should use `register-read-with-preview' to read register names.
0b1619da 410
123c84f9 411+++
68a8b28f
GM
412*** New command `frameset-to-register' bound to `C-x r f', replacing
413`frame-configuration-to-register'. It offers similar functionality,
414plus enhancements like the ability to restore deleted frames.
415(`frame-configuration-to-register' still exists, but no longer has a
416key binding.)
417
ced5cc29
XF
418+++
419*** New command `C-x C-k x' (`kmacro-to-register') stores keyboard
420macros in registers.
ac2f8659 421
169d6004 422+++
70c8f5ca 423** New command `delete-duplicate-lines'.
169d6004
GM
424This searches the region for identical lines, and removes all but one
425copy of each repeated line. The lines need not be sorted.
ac2f8659 426
480d4f57 427+++
50d434d1
DG
428** `blink-matching-paren' now only highlights the matching open-paren
429by default, instead of moving cursor. Set this variable to `jump' to
430enable the old behavior.
431
4f0552c2 432\f
95a32efb 433* Changes in Specialized Modes and Packages in Emacs 24.4
4f0552c2 434
ece4bae5 435+++
fba1763d 436** More packages look for ~/.emacs.d/<foo> additionally to ~/.<foo>.
940e5099
SM
437Affected files:
438~/.emacs.d/timelog replaces ~/.timelog
940e5099
SM
439~/.emacs.d/vip replaces ~/.vip
440~/.emacs.d/viper replaces ~/.viper
441~/.emacs.d/ido.last replaces ~/.ido.last
442~/.emacs.d/kkcrc replaces ~/.kkcrc
443~/.emacs.d/quickurls replaces ~/.quickurls
ece4bae5 444~/.emacs.d/idlwave/ replaces ~/.idlwave/
940e5099
SM
445~/.emacs.d/bdfcache.el replaces ~/.bdfcache.el
446~/.emacs.d/places replaces ~/.emacs-places
447~/.emacs.d/shadows replaces ~/.shadows
448~/.emacs.d/shadow_todo replaces ~/.shadow_todo
449~/.emacs.d/strokes replaces ~/.strokes
450~/.emacs.d/notes replaces ~/.notes
451~/.emacs.d/type-break replaces ~/.type-break
d29bf51c
SB
452Also the following files used by the now obsolete otodo-mode.el:
453~/.emacs.d/todo-do replaces ~/.todo-do
454~/.emacs.d/todo-done replaces ~/.todo-done
455~/.emacs.d/todo-top replaces ~/.todo-top
456
70c8f5ca 457** Backtrace and debugger
e56221d5 458
c9832cd8 459+++
47a73eb0 460*** New Lisp debugger command `v' (`debugger-toggle-locals') toggles the
ace97938 461display of local variables of the current stack frame.
47a73eb0 462
6f876149 463+++
47a73eb0
GM
464*** The Lisp debugger's `e' command (`debugger-eval-expression') now includes
465the lexical environment when evaluating the code in the context at point
466(and so allows you to access lexical variables).
b14abca9 467
47a73eb0
GM
468---
469*** New minor mode `jit-lock-debug-mode' helps you debug code run via JIT Lock.
4b72c12b 470
44b9b800 471---
ece4bae5 472** Battery information can now be retrieved from BSD's `apm' utility.
19b748ad 473
ece4bae5
GM
474---
475** In the Buffer Menu, `M-s a C-o' shows matches for a regexp in marked buffers.
96673afe 476
fd3a9a6b
GM
477** Calendar and Diary
478
8d3c54a0 479---
70c8f5ca
CY
480*** New faces `calendar-weekday-header', `calendar-weekend-header',
481and `calendar-month-header'.
3b5c03d3 482
11c06c77 483+++
3b5c03d3
GM
484*** New option `calendar-day-header-array'.
485
fd3a9a6b 486+++
f8780a05 487*** New variable `diary-from-outlook-function', used by the command
fd3a9a6b
GM
488`diary-from-outlook'.
489
11c06c77 490---
70c8f5ca 491*** The variable `calendar-font-lock-keywords' is obsolete.
ba30c70f 492
0e70ce93
PE
493** Calc
494
68d01ccc 495+++
0e70ce93
PE
496*** Calc by default now uses the Gregorian calendar for all dates, and
497uses January 1, 1 AD as its day number 1. Previously Calc used the
498Julian calendar for dates before September 14, 1752, and it used
499December 31, 1 BC as its day number 1; the new scheme is more
500consistent with Calendar's calendrical system and day numbering.
501
68d01ccc
GM
502+++
503*** The new option `calc-gregorian-switch' lets you configure if
504(and when) Calc switches from the Julian to the Gregorian calendar.
0e70ce93 505
68d01ccc 506+++
86e100a6
GM
507*** Support for ISO 8601 dates.
508
70c8f5ca
CY
509** CEDET
510
511*** EDE
512
513**** The cpp-root project now supports executing a compile command.
514It can be set through the new :compile-command slot or the
515buffer-local variable `compile-command'.
516
517**** Better selection of include directories for the 'linux' project.
518Include directories now support out-of-tree build directories and
519target architecture auto-detection.
520
521*** Semantic
522
523**** Improved detection of used namespaces in current scope in C++.
524
525**** Parsing of default values for variables and function arguments in C/C++.
a22359a7 526They are also displayed by the summarize feature in the mode line.
70c8f5ca
CY
527
528**** Improved parsing of function pointers in C/C++.
529This also includes parsing of function pointers as function arguments.
530
a22359a7
GM
531**** Parsing of C/C++ preprocessor macros that open new scope.
532For example, this enables parsing of macros that open new namespaces.
70c8f5ca
CY
533
534**** Support for 'this' pointer in inline member functions in C++.
535
536** cl-lib
537
f16a3d52 538+++
8d3c54a0 539*** New macro `cl-tagbody'.
f16a3d52 540This executes statements while allowing for control transfer to labels.
70c8f5ca
CY
541
542+++
543*** letf is now just an alias for cl-letf.
544
545** CUA mode
546
6faf982a 547+++
642d7ae8 548*** CUA mode now uses `delete-selection-mode' and `shift-select-mode'.
5ad1fede
GM
549Hence, you can now enable it independently from those modes, and from
550`transient-mark-mode'.
642d7ae8 551
52695556 552---
642d7ae8
CY
553*** `cua-highlight-region-shift-only' is now obsolete.
554You can disable `transient-mark-mode' to get the same result.
70c8f5ca 555
6faf982a
SM
556+++
557*** CUA's rectangles can now be used without CUA by calling the command
558`cua-rectangle-mark-mode'.
70c8f5ca 559
d8a2993d
TZ
560** CFEngine mode
561
5ad1fede 562---
d8a2993d
TZ
563*** Support for completion, ElDoc, and Flycheck has been added.
564
5ad1fede 565---
d8a2993d
TZ
566*** The current CFEngine syntax is parsed from "cf-promises -s json".
567There is a fallback syntax available if you don't have cf-promises or
5ad1fede 568if your version doesn't support that option. See option `cfengine-cf-promises'.
d8a2993d 569
a69ecd19
GM
570---
571** Delete Selection mode can now be used without Transient Mark mode.
70c8f5ca 572
5db9dace
JL
573** Desktop
574
c863b6ad
GM
575+++
576*** `desktop-save-mode' by default now auto-saves an existing desktop file
577after `desktop-auto-save-timeout'. To disable this, customize that option
578to nil (or zero).
5db9dace 579
3e557f59 580+++
46456005
GM
581*** Desktop now saves and restores the frame/window configuration.
582To disable this, set `desktop-restore-frames' to nil.
583See also related options `desktop-restore-reuses-frames',
584`desktop-restore-in-current-display', and `desktop-restore-forces-onscreen'.
39c0e36f 585
4ed67814 586+++
52695556
GM
587** New Dired minor mode `dired-hide-details-mode' toggles whether details,
588such as file ownership or permissions, are visible.
a2a538b1 589
314ff318
GM
590---
591** You can enable ElDoc inside the `eval-expression' minibuffer with:
592 (add-hook 'eval-expression-minibuffer-setup-hook 'eldoc-mode)
593The results display in the mode line.
21859ebc 594
3b8d5131 595** Electric Pair mode
3b8d5131 596
6faf982a 597+++
8251c3f8
GM
598*** New option `electric-pair-preserve-balance', enabled by default.
599If non-nil, pairing/skipping only kicks in when that help the balance
600of parentheses and quotes, i.e. the buffer should end up at least as
3b8d5131
JT
601balanced as before.
602
da5ecfa9 603You can further control this behavior by adjusting the predicates
8251c3f8 604stored in `electric-pair-inhibit-predicate' and `electric-pair-skip-self'.
3b8d5131 605
6faf982a 606+++
8251c3f8 607*** New option `electric-pair-delete-adjacent-pairs', enabled by default.
3b8d5131
JT
608In `electric-pair-mode', the commands `backward-delete-char' and
609`backward-delete-char-untabify' are now bound to electric variants
610that delete the closer when invoked between adjacent pairs.
611
6faf982a 612+++
8251c3f8 613*** New option `electric-pair-open-newline-between-pairs', enabled by default.
3b8d5131
JT
614In `electric-pair-mode', inserting a newline between adjacent pairs
615opens an extra newline after point, which is indented if
616`electric-indent-mode' is also set.
617
6faf982a 618+++
8251c3f8
GM
619*** New option `electric-pair-skip-whitespace', enabled by default.
620This controls if skipping over closing delimiters should jump over any
621whitespace slack. Setting it to `chomp' makes it delete this
622whitespace. See also the variable `electric-pair-skip-whitespace-chars'.
3b8d5131 623
6faf982a 624---
3b8d5131 625*** New variables control the pairing in strings and comments.
3b8d5131 626You can customize `electric-pair-text-pairs' and
da5ecfa9 627`electric-pair-text-syntax-table' to tweak pairing behavior inside
3b8d5131
JT
628strings and comments.
629
79b6e0a9 630+++
b89878d3 631** New EPA option `epa-mail-aliases'.
79b6e0a9
GM
632You can set this to a list of email address aliases that `epa-mail-encrypt'
633should use to find keys.
ed02dcfa 634
23dc6d0c 635---
b89878d3 636** New ERC option `erc-accidental-paste-threshold-seconds'.
2040a2fe 637If set to a number, this can be used to avoid accidentally pasting large
70c8f5ca
CY
638amounts of data into the ERC input.
639
640+++
8251c3f8 641** New ERT macro `skip-unless' allows skipping ERT tests.
70c8f5ca
CY
642See the ERT manual for details.
643
644** Eshell
645
646+++
8251c3f8 647*** `eshell' now supports visual subcommands and options.
70c8f5ca
CY
648Eshell has been able to handle "visual" commands (interactive,
649non-line oriented commands such as top that require display
650capabilities not provided by eshell) by running them in an Emacs
651terminal emulator. See `eshell-visual-commands'.
652
653This feature has been extended to subcommands and options that make a
654usually line-oriented command a visual command. Typical examples are
8251c3f8 655"git log" and "git <command> --help", which display their output in a
70c8f5ca
CY
656pager by default. See `eshell-visual-subcommands' and
657`eshell-visual-options'.
658
659---
8251c3f8 660*** New Eshell-Tramp module.
70c8f5ca
CY
661External su and sudo commands are now the default; the internal,
662Tramp-using variants can still be used by enabling the eshell-tramp
663module.
664
70c8f5ca 665---
b89878d3 666** New F90 mode option `f90-smart-end-names'.
70c8f5ca 667
a8cb4247 668** Icomplete
68a8b28f 669Icomplete is now more similar to Ido.
8d3c54a0 670
68a8b28f 671---
a8cb4247
GM
672*** Icomplete by default now applies to all forms of minibuffer completion.
673The variable `icomplete-with-completion-tables' (now a user option)
674controls this. To restore the old behavior, set it back to
675'(internal-complete-buffer).
8d3c54a0 676
68a8b28f 677+++
a8cb4247
GM
678*** You can navigate through and select completions using the keys
679from `icomplete-minibuffer-map'.
8d3c54a0 680
a8cb4247
GM
681---
682*** The string that separates potential completions is now a customizable
683option (`icomplete-separator'). The default is " | " rather than ",".
8d3c54a0 684
a8cb4247
GM
685---
686*** New face `icomplete-first-match'; and new options
687`icomplete-hide-common-prefix' and `icomplete-show-matches-on-no-input'.
688
689---
690*** The option `icomplete-show-key-bindings' has been removed.
70c8f5ca
CY
691
692** Ido
8d3c54a0 693
fbb764b8
GM
694+++
695*** An Ido user manual is now included.
8d3c54a0 696
fbb764b8
GM
697---
698*** The option `ido-use-virtual-buffers' can now take the value `auto'.
699This means to use virtual buffers if the current ido input does not match
700an existing buffer.
8d3c54a0 701
fbb764b8
GM
702---
703*** The variable `ido-decorations' can optionally have two new elements,
704which are the brackets to use around the sole remaining completion.
70c8f5ca
CY
705
706** Image mode
707
8d3c54a0 708+++
70c8f5ca
CY
709*** New commands `n' (`image-next-file') and `p' (`image-previous-file')
710visit the next image file and the previous image file in the same
711directory, respectively.
712
a7fecaa0 713+++
70c8f5ca
CY
714*** New commands to show specific frames of multi-frame images.
715`f' (`image-next-frame') and `b' (`image-previous-frame') visit the
716next or previous frame. `F' (`image-goto-frame') shows a specific frame.
717
a7fecaa0 718+++
70c8f5ca 719*** New commands to speed up, slow down, or reverse animation.
a7fecaa0
RS
720`a +' (`image-increase-speed') and `a -' (`image-decrease-speed') to
721speed up and slow down the animation. `a r' (`image-reverse-speed')
722to reverse it and `a 0' (`image-reset-speed') to reset it.
723
70c8f5ca
CY
724---
725*** The command `image-mode-fit-frame' deletes other windows.
726When toggling, it restores the frame's previous window configuration.
727It also has an optional frame argument, which can be used by Lisp
728callers to fit the image to a frame other than the selected frame.
729
730** Hi-Lock
731
99cf3859
GM
732+++
733*** New global command `M-s h .' (`highlight-symbol-at-point') highlights
734the symbol found near point.
70c8f5ca
CY
735
736+++
99cf3859
GM
737*** New option `hi-lock-auto-select-face'. When non-nil, hi-lock commands
738will cycle through faces in `hi-lock-face-defaults' without prompting.
70c8f5ca 739
612c3e46 740---
8251c3f8 741** New Imenu option `imenu-generic-skip-comments-and-strings'.
70c8f5ca 742
d978812a
GM
743** Info
744
c9352587 745---
d978812a 746*** New Info face `info-index-match', used to highlight matches in index
70c8f5ca
CY
747entries displayed by `Info-index-next', `Info-virtual-index' and
748`info-apropos'.
749
d978812a
GM
750---
751*** The Info-edit command is obsolete. Editing Info nodes by hand
752has not been relevant for some time.
753
70c8f5ca
CY
754** JS Mode
755
ee325f58
GM
756---
757*** New option `js-switch-indent-offset'.
758
759---
70c8f5ca 760*** Better indentation of multiple-variable declarations.
ee325f58 761If a declaration spans several lines, variables on the following lines
70c8f5ca
CY
762are lined up to the first one.
763
ee325f58
GM
764---
765*** Recognition and better indentation of continuations in array comprehensions.
70c8f5ca 766
ee325f58
GM
767+++
768** MH-E has been updated to version 8.5 - see separate MH-E-NEWS file.
70c8f5ca
CY
769
770+++
771** Octave mode
8251c3f8 772
0fcfa974 773*** Font locking for Texinfo comments and new keywords.
8251c3f8
GM
774
775*** Completion in Octave file buffers.
776
314ff318 777*** ElDoc support.
8251c3f8
GM
778
779*** Jump to definition.
780
781*** Documentation lookup/search.
70c8f5ca 782
de6a923b
GM
783+++
784** OPascal mode is the new name for Delphi mode
70c8f5ca 785
de6a923b 786---
70c8f5ca 787*** All delphi-* variables and functions have been renamed to opascal-*.
de6a923b 788Obsolete aliases exist for those likely to have been used externally.
8251c3f8 789
de6a923b
GM
790---
791*** The option `delphi-newline-always-indents' has been removed.
70c8f5ca 792Use `electric-indent-mode' instead.
8251c3f8 793
de6a923b
GM
794---
795*** The TAB key runs the standard `indent-for-tab-command', not `delphi-tab'.
70c8f5ca
CY
796
797** Package
798
a215930c
GM
799+++
800*** In the `list-packages' buffer, you can use `f' (`package-menu-filter')
801to filter the list of packages by a keyword.
802
803+++
1920914a 804*** In the `describe-package' buffer, there are now buttons listing the
a215930c
GM
805keywords related to the package. Click on a button to see other packages
806related to that keyword.
807
808---
70c8f5ca
CY
809*** The format of `archive-contents' files, generated by package
810repositories, has changed to allow a new (fifth) element in the data
811vectors, containing an associative list with extra properties.
a215930c
GM
812(For example, `describe-package' uses the `:url' extra property to
813display a "Homepage" header.)
d8a2993d 814
8251c3f8
GM
815---
816** In Prolog mode, `prolog-use-smie' has been removed,
817along with the non-SMIE indentation code.
1db9ceee 818
70c8f5ca 819** Remember
f2cbfd44 820
95160c90
GM
821+++
822*** The new command `remember-notes' creates a buffer that is saved on exit.
823You can use it as a more permanent *scratch* buffer.
20de6ab6 824
a73fae1f
GM
825+++
826*** Remember can now store notes in separate files.
827To use this, add `remember-store-in-files' to the `remember-handler-functions'
828option. The files are saved in `remember-data-directory' using
829names specified by `remember-directory-file-name-format'.
c0211c4e 830
70c8f5ca
CY
831** Rmail
832
c1228e5c 833+++
70c8f5ca
CY
834*** Customize `rmail-mbox-format' to influence some minor aspects of
835how Rmail displays non-MIME messages.
3a2ddc2d 836
2a43515a 837---
70c8f5ca
CY
838*** The `unrmail' command now converts from BABYL to mboxrd format,
839rather than mboxo. Customize `unrmail-mbox-format' to change this.
2a43515a 840
70c8f5ca 841** Ruby mode
e38e6780 842
de6a923b
GM
843---
844*** Improved syntax highlighting and indentation.
e38e6780 845
de6a923b
GM
846---
847*** New `electric-indent-mode' integration.
e5e4a942 848
de6a923b
GM
849---
850*** New option `ruby-encoding-magic-comment-style'.
70c8f5ca 851
de6a923b
GM
852---
853*** New option `ruby-custom-encoding-magic-comment-template'.
70c8f5ca 854
de6a923b 855---
70c8f5ca 856*** New option `ruby-align-to-stmt-keywords'.
e5e4a942 857
2f313daf
DG
858---
859*** New option `ruby-align-chained-calls'.
860
de6a923b
GM
861---
862*** More Ruby file types have been added to `auto-mode-alist'.
6cddebc1 863
d289938a 864** Search and Replace
279f9b06 865
07e9eaa2 866+++
e5e4a942
JL
867*** New global command `M-s .' (`isearch-forward-symbol-at-point')
868starts a symbol (identifier) incremental search forward with the
869symbol found near point added to the search string initially.
870
de7ce2d1 871+++
279f9b06
JL
872*** `C-x 8 RET' in Isearch mode reads a character by its Unicode name
873and adds it to the search string.
874
3b48a331 875+++
4d49cc65 876*** `M-s i' in Isearch mode toggles whether search matches invisible text.
01dea85f 877
2501c912 878+++
d289938a
JL
879*** `query-replace' skips invisible text when `search-invisible' is nil,
880and opens overlays with hidden text when `search-invisible' is `open'.
881
57b837ab 882+++
3ee4cd64
JL
883*** A negative prefix arg of replacement commands replaces backward.
884`M-- M-%' replaces a string backward, `M-- C-M-%' replaces a regexp
885backward, `M-s w words M-- M-%' replaces a sequence of words backward.
886
80fa505f
AM
887+++
888*** By default, prefix arguments do not now terminate Isearch mode.
889Set `isearch-allow-prefix' to nil to restore old behavior.
890
de7ce2d1 891+++
6e8cfc81
JL
892*** More Isearch commands accept prefix arguments, namely
893`isearch-printing-char', `isearch-quote-char', `isearch-yank-word',
894`isearch-yank-line'.
895
de7ce2d1 896+++
a22289f7
JL
897*** Word search now matches whitespace at the beginning/end
898of the search string if it contains leading/trailing whitespace.
899In an incremental word search or when using a non-nil LAX argument
900of `word-search-regexp', the lax matching can also match part of
901the first word (in addition to the lax matching of the last word).
902The same rules are now applied to the symbol search with the difference
903that it matches symbols, and non-symbol characters between symbols.
904
70c8f5ca 905+++
a22359a7 906** New SES command `ses-rename-cell' allows assignment of names to SES cells.
6827cac1 907
de7ce2d1 908---
21cf4545 909** The shell.el option `explicit-bash-args' includes --noediting by default.
8251c3f8 910All non-ancient Bash versions support this option.
4f0552c2 911
70c8f5ca 912** Shell Script mode
8b62d742 913
a22359a7
GM
914---
915*** The SMIE indentation engine is now used by default - see `sh-use-smie'.
c38a186c 916
a22359a7
GM
917---
918*** `sh-mode' now has its own setting for `add-log-current-defun-function'.
b345c561 919
d82e752c
GM
920** SMIE
921
47b73b35
GM
922+++
923*** You can customize the SMIE indentation of a mode via `smie-config'.
d82e752c
GM
924The command `smie-config-guess' can help you derive the appropriate
925indentation settings, if you provide it with an indented sample file.
926Use `smie-config-save' to save the result.
927
47b73b35
GM
928+++
929*** You can customize the SMIE indentation of a file by adding an entry to
dffe37a8 930the file's local variables of the form: `eval: (smie-config-local '(RULES))'.
47b73b35
GM
931
932+++
d82e752c 933*** New commands `smie-config-show-indent' and `smie-config-set-indent'.
70c8f5ca 934
9b0c01f7 935---
363362c5 936** SQL mode
9b0c01f7 937
363362c5
GM
938*** Improved login monitoring and appropriate response to login failures.
939New variable `sql-login-delay' defines maximum wait time for a connection.
940
941*** Oracle support.
9b0c01f7 942SQL*Plus script placeholders are properly highlighted and identified
363362c5
GM
943in `sql-placeholders-filter'. When starting SQL*Plus, `sql-oracle-options'
944are passed before the logon parameter, as required. The default now
945includes `-L', to limit the number of logon attempts per invocation.
9b0c01f7 946
de6a923b 947---
8251c3f8 948** New Term mode option `term-suppress-hard-newline'.
ad4de702 949
303ea1dd 950+++
d29bf51c 951** Todo mode has been rewritten and enhanced.
2d3c36db
GM
952The Todo mode user manual describes all commands and most user
953options. To support some of these features, a new file format is
954used, which is incompatible with the old format; however, you can
955convert old todo and done item files to the new format on initializing
956the first new todo file, or at any later time with the provided
957conversion command. The previous version of todo-mode.el has been
303ea1dd
GM
958renamed to otodo-mode.el and is now obsolete. New features include:
959
960*** Support for multiple todo files and archive files of done items.
961
962*** Renaming, reordering, moving, merging, and deleting categories.
963
964*** Sortable tabular summaries of categories and the item types they contain.
965
966*** Cross-category lists of items filtered by specific criteria.
967
968*** More fine-grained interaction with the Emacs diary, by being able to
969decide for each todo item whether it appears in the Fancy Diary display.
970
971*** Highly flexible new item insertion and item editing.
972
973*** Moving items between categories, storing done items in their category
974or in archive files, undoing or unarchiving done items.
975
976*** Reprioritizing items by inputting a numerical priority.
977
978*** Extensive customizability of operation and display, including many faces.
2d3c36db 979
9997d7e3 980** Trace
2d3c36db 981
9997d7e3
GM
982---
983*** `trace-function' and `trace-function-background' no longer prompt for
984the output buffer. Unless you use a prefix argument, they output to
985`trace-buffer'.
2d3c36db 986
9997d7e3
GM
987---
988*** With a prefix argument, `trace-function' and `trace-function-background'
989will prompt for a "context". This is a Lisp expression, whose value at the
990time the function is entered/exited is printed along with the function's
991name and arguments.
70c8f5ca 992
aefa2ead 993** Tramp
26280467 994
65bc4bb5 995+++
2040a2fe 996*** The experimental url syntax for remote file names has been removed.
179923f7 997
aefa2ead
MA
998+++
999*** New connection method "adb", which allows to access Android
19dc8b9e
MA
1000devices by the Android Debug Bridge. The variable `tramp-adb-program'
1001can be used to adapt the path of the "adb" program, if needed.
26280467 1002
65bc4bb5 1003+++
19dc8b9e
MA
1004*** The connection methods "plink1", "ssh1", "ssh2", "scp1", "scp2",
1005"scpc" and "rsyncc" are discontinued. The ssh option
1006"ControlMaster=auto" is set automatically in all ssh-based methods,
65bc4bb5 1007when possible. See `tramp-use-ssh-controlmaster-options'.
26280467 1008
ed7367b1
MA
1009+++
1010*** Handlers for `file-acl' and `set-file-acl' for remote machines
1011which support POSIX ACLs.
aefa2ead 1012
f1c7dee9
MA
1013+++
1014*** Handlers for `file-notify-add-watch' and `file-notify-rm-watch'
1015for remote machines which support filesystem notifications.
1016
645586dc
GM
1017+++
1018** New URL command `url-cookie-list' displays the current cookies,
1019and allows you to interactively remove cookies.
b29daf07 1020
70c8f5ca 1021** VC and related modes
bb102690 1022
7899adea 1023+++
70c8f5ca
CY
1024*** In VC directory mode, `D' displays diffs between VC-controlled
1025whole tree revisions.
fa5265fc 1026
7899adea 1027+++
70c8f5ca
CY
1028*** In VC directory mode, `L' lists the change log for the current VC
1029controlled tree in a window.
fa5265fc 1030
7899adea 1031+++
70c8f5ca
CY
1032*** In VC directory mode, `I' shows a log of changes that will be
1033received with a pull operation.
fa5265fc 1034
7899adea 1035+++
70c8f5ca
CY
1036*** `C-x v G' (globally) and `G' (in VC directory mode) ignores a file
1037under current version control system. When called with a prefix
1038argument, you can remove a file from the ignored file list.
fa5265fc 1039
70c8f5ca 1040** VHDL mode
fa5265fc 1041
2040a2fe 1042---
70c8f5ca 1043*** New options: `vhdl-actual-generic-name', `vhdl-beautify-options'.
fa5265fc 1044
2040a2fe 1045---
70c8f5ca 1046*** New commands: `vhdl-fix-statement-region', `vhdl-fix-statement-buffer'.
fa5265fc 1047
03f3b318 1048---
8251c3f8 1049** The Woman commands `woman-default-faces' and `woman-monochrome-faces'
70c8f5ca 1050are obsolete. Customize the `woman-*' faces instead.
fa5265fc 1051
a22359a7 1052** Obsolete packages
770de7cf 1053
2b568bc9
GM
1054+++
1055*** iswitchb.el; use icomplete-mode.
122a7e46 1056
d978812a
GM
1057---
1058*** longlines.el; use visual-line-mode.
770de7cf 1059
2b568bc9
GM
1060---
1061*** meese.el.
1062
27c8b6eb
GM
1063+++
1064*** sup-mouse.el.
1065
5ace6c29 1066---
d978812a 1067*** terminal.el; use term.el instead.
ce3e7725 1068
303ea1dd 1069---
2b568bc9 1070*** the old version of todo-mode.el (renamed to otodo-mode.el).
d29bf51c 1071
03f3b318 1072---
d978812a 1073*** xesam.el (owing to the cancellation of the XESAM project).
30bce3f0 1074
4e16ddf4 1075+++
d978812a 1076*** yow.el; use fortune.el or cookie1.el instead.
5313bbc7 1077
4f0552c2 1078\f
95a32efb 1079* New Modes and Packages in Emacs 24.4
02f473a4 1080
548a1b28 1081+++
70c8f5ca
CY
1082** New package `eww' is a built-in web browser.
1083It is only available if Emacs is compiled with libxml2 support.
1084
6995e5d0 1085+++
2040a2fe
GM
1086** New minor mode `superword-mode'.
1087This overrides the default word motion commands to treat "symbol_words"
1088as a single word, similar to what `subword-mode' does.
002668e1 1089
122ff675 1090+++
70c8f5ca 1091** New package nadvice.el offers lighter-weight advice facilities.
231d8498 1092It is layered as:
2d3c36db
GM
1093
1094*** add-function/remove-function, which can be used to add/remove code on any
1095function-carrying place, such as process-filters or `<foo>-function' hooks.
1096
1097*** advice-add/advice-remove to add/remove a piece of advice on a named
7c324762 1098function, much like `defadvice' does.
231d8498 1099
70c8f5ca 1100** New package frameset.el.
8cd4636c
JB
1101It provides a set of operations to save a frameset (the state of all
1102or a subset of the existing frames and windows, somewhat similar to a
1103frame configuration), both in-session and persistently, and restore it
1104at some point in the future.
1105
fb830820 1106+++
70c8f5ca
CY
1107** New package filenotify.el provides an interface for file system
1108notifications. It requires that Emacs be compiled with one of the
f1c7dee9
MA
1109low-level libraries gfilenotify.c, inotify.c or w32notify.c.
1110
c57b2d76 1111\f
95a32efb 1112* Incompatible Lisp Changes in Emacs 24.4
da03ef8a 1113
c9352587 1114---
2040a2fe 1115** `kill-region' has lost its `yank-handler' optional argument.
3472b6c6 1116
c9352587 1117+++
2040a2fe
GM
1118** `(input-pending-p)' no longer runs other timers that are ready to run.
1119The new optional CHECK-TIMERS parameter allows for the prior behavior.
ef566920 1120
81c7d631 1121+++
a104f656
SM
1122** `defvar' and `defcustom' in a let-binding affect the "external" default.
1123
c9352587 1124---
707ddc7f
JB
1125** The syntax of ?» and ?« is now punctuation instead of matched parens.
1126Some languages match those as »...«, and others as «...», so it is
2040a2fe 1127better for Emacs to stay neutral by default.
db3b7db5 1128
b345c561 1129---
70c8f5ca
CY
1130** In compiled Lisp files, the header no longer includes a timestamp.
1131
c9352587 1132+++
0b31660d 1133** The default file coding for Emacs Lisp files is now utf-8.
70c8f5ca
CY
1134(See `file-coding-system-alist'.) In most cases, this change is
1135transparent, but files that contain unusual characters without
1136specifying an explicit coding system may fail to load with obscure
1137errors. You should either convert them to utf-8 or add an explicit
1138`coding:' cookie.
0b31660d 1139
c9352587 1140+++
70c8f5ca 1141** `overriding-terminal-local-map' no longer replaces the local keymaps.
bfa3acd6
SM
1142It used to disable the minor mode, major mode, and text-property keymaps,
1143whereas now it simply has higher precedence.
1144
f33095ed 1145+++
a0eb10b3 1146** Default process filters and sentinels are not nil any more.
2040a2fe 1147Instead they default to a function that does what the nil value used to do.
1aa8d505 1148
0f1d2934 1149+++
25c09217 1150** `read-event' does not return decoded chars in ttys any more.
0f1d2934
CY
1151As was the case in Emacs 22 and before, the decoding of terminal
1152input, according to `keyboard-coding-system', is not performed in
1153`read-event' any more. But unlike in Emacs 22, this decoding is still
1154done before input-decode-map, function-key-map, etc.
25c09217 1155
c9352587 1156---
2040a2fe 1157** The option `inhibit-local-menu-bar-menus' has been removed.
99d0d6dc 1158
c9352587
CY
1159---
1160** Frame-local variables that affect redisplay do not work any more.
2040a2fe 1161More specifically, redisplay does not bother to check for a frame-local
e02230bf
SM
1162value when looking up variables.
1163
0f1d2934 1164+++
642d7ae8 1165** nil and "unbound" are indistinguishable in `symbol-function'.
0f1d2934
CY
1166`symbol-function' does not signal a `void-function' error any more.
1167To determine if a symbol's function definition is void, use `fboundp'.
eadf1faa 1168
0f1d2934 1169+++
3c442f8b
SM
1170** `defadvice' does not honor the `freeze' flag and cannot advise
1171special-forms any more.
7db1bda8 1172
2200a8c9
CY
1173---
1174** `dolist' no longer binds VAR while evaluating the RESULT form,
1175when lexical binding is enabled. Previously, VAR was bound to nil,
1176which often led to spurious unused-variable warnings.
da03ef8a 1177
81c7d631 1178+++
7c3d167f
RF
1179** The return value of `backup-buffer' has changed.
1180The second argument is no longer an SELinux context, instead it is an
1181alist of extended attributes as returned by the new function
1182`file-extended-attributes'. The attributes can be applied to another
1183file using `set-file-extended-attributes'.
1184
de7ce2d1 1185+++
a560b856
PE
1186** By default `copy-file' no longer copies file permission bits to an
1187existing destination; and it sets the file permission bits of a newly
1188created destination to those of the source, masked by the default file
1189permissions. To copy the file permission bits, pass t as the
1190PRESERVE-PERMISSIONS argument of `copy-file'.
1191
4364185f 1192+++
954b166e
PE
1193** `visited-file-modtime' now returns -1 for nonexistent files.
1194Formerly it returned a list (-1 LOW USEC PSEC), but this was ambiguous
1195in the presence of files with negative time stamps.
1af4c220 1196
4364185f 1197+++
642d7ae8 1198** The cars of the elements in `interpreter-mode-alist' are now
4364185f 1199treated as regexps rather than literal strings.
1af4c220 1200
c57b2d76 1201\f
97a1cd9d 1202* Lisp Changes in Emacs 24.4
57618ecf 1203
362397ed 1204+++
642d7ae8
CY
1205** The second argument of `eval' can now specify a lexical environment.
1206
b345c561 1207+++
642d7ae8 1208** New functions `special-form-p' and `macrop'.
70c8f5ca 1209
0fcfa974 1210+++
70c8f5ca
CY
1211** New macro `define-alternatives' can be used to define generic commands.
1212Generic commands are interactive functions whose implementation can be
1213selected among several alternatives, as a matter of user preference.
1214
189e7007
GM
1215+++
1216** If you give a symbol a `defalias-fset-function' property, `defalias'
1217on that symbol will use the associated value as a function to call
1218in place of `fset'.
642d7ae8 1219
05e8f1ae 1220+++
642d7ae8
CY
1221** New variable `enable-dir-local-variables'.
1222Directory-local variables are ignored if this is nil. This may be
1223useful for modes that want to ignore directory-locals while still
1224respecting file-local variables.
70c8f5ca 1225
642d7ae8
CY
1226+++
1227** New function `get-pos-property'.
70c8f5ca 1228
2836affa 1229+++
b8630261
GM
1230** `read-regexp' now uses the new variable `read-regexp-defaults-function'
1231as a function to call to provide default values.
1232
642d7ae8 1233** Completion changes
70c8f5ca 1234
d9263618
GM
1235---
1236*** The separator used by `completing-read-multiple' is now a regexp.
1237The default `crm-separator' has been changed to allow surrounding spaces
642d7ae8 1238around the comma.
70c8f5ca 1239
8484c89b 1240+++
01f8de4c
GM
1241*** The `common-substring' argument of `display-completion-list',
1242which has been documented as obsolete since Emacs 23.1, is now _really_
8484c89b
GM
1243obsolete, and no longer advertised. Instead either call
1244`completion-hilit-commonality' to add the highlighting; or use
1245`completion-all-completions', which returns highlighted strings.
1f41ee56 1246
ea7826ba 1247+++
f8b18150
GM
1248*** New function `completion-table-with-cache' is a wrapper for
1249`completion-table-dynamic' that caches the result of the last lookup.
1250
ea7826ba 1251+++
f8b18150
GM
1252*** New function `completion-table-merge' to combine several
1253completion tables by merging their completions.
1254
4f07dcdc 1255+++
b29daf07 1256** New minor modes `prettify-symbols-mode' and `global-prettify-symbols-mode'
ea7826ba
GM
1257display specified symbols as composed characters. E.g., in Emacs Lisp mode,
1258this replaces the string "lambda" with the Greek lambda character.
b29daf07 1259
642d7ae8 1260** Terminal changes
3472b6c6 1261
2b2d19f2 1262+++
642d7ae8
CY
1263*** Functions to pop up menus and dialogs now work on all terminals,
1264including TTYs. This includes `x-popup-menu', `x-popup-dialog',
1265`message-box', `yes-or-no-p', etc.
0a12fca0 1266
ffe759eb
EZ
1267The function `display-popup-menus-p' will now return non-nil for a
1268display or frame whenever a mouse is supported on that display or
1269frame.
1270
98bd6b32
GM
1271+++
1272*** New hook `tty-setup-hook', run at the end of initializing a text terminal.
1273
1274+++
1275*** The hook `term-setup-hook' is obsolete. It is entirely equivalent
1276to `emacs-startup-hook'. See also the new `tty-setup-hook'.
642d7ae8 1277
3a6e15dd 1278+++
642d7ae8
CY
1279** New hook `pre-redisplay-function'.
1280
8fc36a68 1281+++
a22359a7 1282** New bool-vector set operation functions
3e0b94e7
DC
1283*** `bool-vector-exclusive-or'
1284*** `bool-vector-union'
1285*** `bool-vector-intersection'
1286*** `bool-vector-set-difference'
1287*** `bool-vector-not'
25201ef0 1288*** `bool-vector-subsetp'
ec2c4ee6
PE
1289*** `bool-vector-count-consecutive'
1290*** `bool-vector-count-population'
3e0b94e7 1291
3fbba716 1292+++
2040a2fe 1293** Comparison functions =, <, >, <=, >= can now take many arguments.
ebb99847 1294
642d7ae8 1295** Error-handling changes
8c27f5ff 1296
54bd972f 1297+++
642d7ae8 1298*** New function `define-error'.
54bd972f 1299
1e548e40 1300+++
642d7ae8 1301*** `with-demoted-errors' takes an additional argument `format'.
7fd72e2c 1302
de0503df 1303+++
2040a2fe
GM
1304** New macro `with-eval-after-load'.
1305This is like the old `eval-after-load', but better behaved.
de0503df 1306
64295f83
GM
1307---
1308** New library subr-x.el with miscellaneous small utility functions
7b530552
BB
1309*** `hash-table-keys'
1310*** `hash-table-values'
ee325f58
GM
1311*** `string-blank-p'
1312*** `string-empty-p'
1313*** `string-join'
1314*** `string-reverse'
b55aea38
BB
1315*** `string-trim-left'
1316*** `string-trim-right'
1317*** `string-trim'
3cbfb935
BB
1318*** `string-remove-prefix'
1319*** `string-remove-suffix'
7b530552 1320
81c7d631 1321+++
a22359a7 1322** Obsoleted functions
89561f72 1323*** `log10'
dd8791e9
SM
1324*** `dont-compile'
1325*** `lisp-complete-symbol'
1326*** `field-complete'
1327*** `minibuffer-completion-contents'
66fc57e3
JL
1328*** `isearch-nonincremental-exit-minibuffer'
1329*** `isearch-filter-visible'
e3eb1bb7 1330*** `generic-make-keywords-list'
642d7ae8 1331*** `get-upcase-table' (use `case-table-get-table' instead).
d3e9f3a8 1332
84fc911d 1333+++
d36ed1c8
SM
1334** `with-wrapper-hook' is obsoleted by `add-function'.
1335The few hooks that used with-wrapper-hook are replaced as follows:
1336*** `abbrev-expand-function' obsoletes `abbrev-expand-functions'.
1337*** `completion-in-region-function' obsoletes `completion-in-region-functions'.
1338*** `filter-buffer-substring-function' obsoletes `filter-buffer-substring-functions'.
1339
81c7d631 1340+++
2bb3a748 1341** `byte-compile-interactive-only-functions' is now obsolete.
81c7d631
CY
1342To specify that a command should only be called interactively, give it
1343a non-nil `interactive-only' property.
2bb3a748 1344
46291d11 1345+++
77c92cb9
RS
1346** `split-string' now takes an optional argument TRIM.
1347The value, if non-nil, is a regexp that specifies what to trim from
1348the start and end of each substring.
d36ed1c8 1349
fa49b469 1350+++
41ce6f70
BB
1351** New function `string-suffix-p'.
1352
70c8f5ca
CY
1353** File-handling changes
1354
882b0b86 1355+++
70c8f5ca 1356*** Support for filesystem notifications.
81606b10
RS
1357Emacs now supports notifications of filesystem changes, such as
1358creation, modification, and deletion of files. This requires the
2f23b3ab
MA
1359`glib' API, or the 'inotify' API (on GNU/Linux systems only). On
1360MS-Windows systems, this is supported for Windows XP and newer
1361versions.
81606b10 1362
882b0b86 1363+++
70c8f5ca
CY
1364*** The 9th element returned by `file-attributes' is now unspecified.
1365Formerly, it was t if the file's gid would change if file were deleted
1366and recreated. This value has been inaccurate for years on many
1367platforms, and nobody seems to have noticed or cared.
1368
882b0b86 1369+++
70c8f5ca 1370*** The 6th argument to `copy-file' has been renamed to
a560b856
PE
1371PRESERVE-PERMISSIONS as it now handles ACL entries and the traditional
1372Unix file permission bits as well as SELinux context.
70c8f5ca 1373
2d778742 1374+++
70c8f5ca
CY
1375*** The function `file-ownership-preserved-p' now has an optional
1376argument GROUP which causes it check for file group too. This can be
1377used in place of the 9th element of `file-attributes'.
1378
de7ce2d1 1379---
70c8f5ca
CY
1380*** The function `set-visited-file-modtime' now accepts a 0 or -1
1381argument, with the same interpretation as the returned value of
1382`visited-file-modtime'.
1383
2040a2fe 1384** Autorevert changes
add89f61
MA
1385
1386---
1387*** If Emacs is compiled with file notification support, notifications
1388are used instead of checking the time stamp of the files. You can
1389disable this by setting the user option `auto-revert-use-notify' to
1390nil. Alternatively, a regular expression of directories to be
1391excluded from file notifications can be specified by
1392`auto-revert-notify-exclude-dir-regexp'.
1393
1394---
1395*** The new user option `auto-revert-remote-files' enables reversion
1396of remote files when set to non-nil.
1397
1c4f115d
CY
1398** Face changes
1399
ecc384ac 1400+++
642d7ae8
CY
1401*** The function `face-spec-set' is now like `setq' for face specs.
1402Its third arg now accepts values specifying a face spec type (defface,
1403custom, or override spec), and the relevant spec is set accordingly.
1c4f115d 1404
2d778742 1405+++
70c8f5ca
CY
1406*** New function `add-face-text-property', which can be used to
1407conveniently prepend/append new face properties.
1408
b20e120e 1409---
1c4f115d 1410*** Face specs set via Custom themes now replace the `defface' spec
b20e120e 1411rather than inheriting from it. In other words, setting a face via a
185fbd27
GM
1412theme now behaves like setting it via Customize: you only need to
1413specify the attributes that you want, you don't need to unset those
1414that you don't want.
1c4f115d 1415
3b48a331 1416---
073ca75b
JL
1417*** New face characteristic (supports :underline (:style wave))
1418specifies whether or not the terminal can display a wavy line.
1419
2d778742 1420+++
3c334c14 1421*** New face spec attribute :distant-foreground
920d0654
XF
1422specifies foreground to use if background color is near the foreground
1423color that would otherwise have been used.
3c334c14 1424
f0c954fa
GM
1425** Image API
1426
1427+++
1428*** `image-animated-p' is now `image-multi-frame-p'.
1429It returns non-nil for any image that contains multiple frames,
1430whether or not it specifies a frame delay.
1431
1432+++
642d7ae8
CY
1433*** New variable `image-default-frame-delay' gives the frame delay for
1434animated images which do not specify a frame delay.
f0c954fa
GM
1435
1436+++
1437*** New functions `image-current-frame' and `image-show-frame' for getting
1438and setting the current frame of a multi-frame image.
1439
fa5265fc
DE
1440** EIEIO
1441
194a9710 1442+++
fa5265fc
DE
1443*** Namespace cleanup by obsolete-aliasing functions to use `eieio-' prefix.
1444**** object-name -> eieio-object-name
1445**** object-class -> eieio-object-class
1446**** object-class-fast -> eieio--object-class
194a9710 1447**** object-class-name -> eieio-object-class-name
fa5265fc
DE
1448**** object-name-string -> eieio-object-name-string
1449**** object-num-slots -> eieio--object-num-slots
1450**** object-set-name-string -> eieio-object-set-name-string
194a9710
DE
1451**** class-of -> eieio-object-class
1452**** class-name -> eieio-class-name
fa5265fc
DE
1453**** class-parent -> eieio-class-parent
1454**** class-parents -> eieio-class-parents
194a9710 1455**** class-parents-fast -> eieio-class-parents-fast
fa5265fc
DE
1456**** class-children -> eieio-class-children
1457**** class-num-slots -> eieio--class-num-slots
1458**** class-precedence-list -> eieio-class-precedence-list
194a9710
DE
1459**** class-direct-subclasses -> eieio-class-children
1460**** class-direct-superclasses -> eieio-class-parents
fa5265fc 1461
1b796d6b
EZ
1462** Changes in encoding and decoding of text
1463
1464---
1465*** New coding-system `prefer-utf-8'.
1466This is like `undecided' but prefers UTF-8 on decoding if the text to
1467be decoded does not contain any invalid UTF-8 sequences. On encoding,
1468any non-ASCII characters are automatically encoded as UTF-8.
1469
1470---
1471*** New attributes of coding-systems whose type is `undecided'.
1472Two new attributes, `:inhibit-null-byte-detection' and
1473`:inhibit-iso-escape-detection', determine how to detect encoding of
1474text that includes null bytes and ISO-2022 escape sequences,
1475respectively. Each of these attributes can be either nil, zero, or
1476t. If it is t, decoding text ignores null bytes and, respectively,
1477ISO-2022 sequences. If it is nil, null bytes cause text to be decoded
1478with no-conversion and ISO-2022 sequences cause Emacs to assume the
1479text is encoded in one of the ISO-2022 encodings, such as
1480iso-2022-7bit. If the value is zero, Emacs consults the variables
1481inhibit-null-byte-detection and inhibit-iso-escape-detection, which
1482see.
1483The new attribute `:prefer-utf-8', if non-nil, causes Emacs to prefer
1484UTF-8 encoding and decoding, whenever possible.
1485
1486These attributes are only meaningful for coding-systems of type
1487`undecided'. (The type of a coding-system is determined by its
1488`:coding-type' attribute and can be accessed by calling the
1489`coding-system-type' function.)
1490
96c983e0
GM
1491---
1492** The `time-to-seconds' alias to `float-time' is no longer marked obsolete.
70c8f5ca 1493
44fdad1c 1494+++
97976f9f
PE
1495** New functions `group-gid' and `group-real-gid'.
1496
a049cc96 1497---
73dbf960
PE
1498** The spelling of the rx.el category `chinese-two-byte' has been
1499corrected (the first 'e' was missing).
1500
ca5fd02c
GM
1501---
1502** Minor internal changes to the details of lock files.
1503The lock for DIR/FILE is now _always_ DIR/.#FILE.
1504If DIR/.#FILE already exists and is not an Emacs lock file,
1505Emacs makes no attempt to lock DIR/FILE. (Previously, it fell back to
1506numbered lock files DIR/.#FILE.0...).
1507On file systems that do not support symbolic links, the lock is now a
1508regular file with contents being what would have been in the symlink.
1509
8fa2654e
CS
1510** Changes to the Emacs Lisp Coding Conventions in Emacs 24.4
1511
44fdad1c 1512+++
8fa2654e 1513*** The package descriptor and name of global variables, constants,
0a2da075 1514and functions should be separated by two hyphens if the symbol is not
8fa2654e
CS
1515meant to be used by other packages.
1516
c57b2d76 1517\f
97a1cd9d 1518* Changes in Emacs 24.4 on Non-Free Operating Systems
95a32efb 1519
03f3b318 1520---
7605d081
GM
1521** The procedure for building Emacs on MS-Windows has changed.
1522It is now built by running the same configure script as on all other
1523platforms. This requires the MSYS environment and MinGW development
1524tools. See the updated instructions in nt/INSTALL for details.
671d4bfc
GM
1525
1526Using the Posix configure script and Makefile's also means a change in
1527the directory structure of the Emacs installation on Windows. It is
1528now the same as on GNU and Unix systems. In particular, the auxiliary
1529programs, such as cmdproxy.exe and hexl.exe, are in
1530libexec/emacs/VERSION/i686-pc-mingw32 (where VERSION is the Emacs
1531version), version-independent site-lisp is in share/emacs/site-lisp,
1532version-specific Lisp files are in share/emacs/VERSION/lisp and in
1533share/emacs/VERSION/site-lisp, Info docs are in share/info, and data
1534files are in share/emacs/VERSION/etc. (Emacs knows about all these
1535directories and will find the files in there automatically; there's no
1536need to set any variables due to this change.)
1537
7df14908
EZ
1538+++
1539** Emacs on Windows 2000 and later can now access files and directories
1540whose names cannot be encoded in the current system codepage.
1541
1542The new variable `w32-unicode-filenames' controls this feature: if it
1543is t, Emacs uses Unicode APIs to pass file names to system calls,
1544which lifts the limitation of file names to the current locale.
1545
5248293f
GM
1546+++
1547** The "generate a backtrace on fatal error" feature now works on MS Windows.
1548The backtrace is written to the 'emacs_backtrace.txt' file in the
1549directory where Emacs was running.
1550
8549f9e8
EZ
1551+++
1552** The variable `buffer-file-type' is no longer supported.
1553Setting it has no effect, and %t in the mode-line format is ignored.
1554Likewise, `file-name-buffer-file-type-alist' is now obsolete, and
1555modifying it has no effect.
1556
343a2aef
EZ
1557---
1558** Lock files now work on MS-Windows.
ca5fd02c 1559This helps to prevent losing your edits if the same file is being
343a2aef
EZ
1560edited in another Emacs session or by another user. See the node
1561"Interlocking" in the Emacs User Manual for the details. To disable
1562file locking, customize `create-lockfiles' to nil.
1563
2d3c36db
GM
1564** New Core Text based font backend for Mac OS X 10.5 and newer.
1565GNUstep and Mac OS X 10.4 use the old font backend.
1566To use the old backend by default, do on the command line:
1567% defaults write org.gnu.Emacs FontBackend ns
1568
c57b2d76 1569** Improved fullscreen support on Mac OS X.
2d3c36db
GM
1570Emacs supports both native (Mac OS X 10.7 and newer) and "old style" fullscreen.
1571Customize `ns-use-native-fullscreen' to change the style.
1572For Mac OS X 10.7 and newer, native is the default.
c57b2d76 1573
2d3c36db
GM
1574** On Mac OS X 10.7 and newer, Emacs uses sRGB colorspace by default.
1575Customize `ns-use-srgb-colorspace' to disable this. Note that this
1576does not apply to images.
41cf3d11 1577
95a32efb 1578\f
2a1e2476 1579* Installation Changes in Emacs 24.3
b8df54ff 1580
6bc66c10 1581** The default X toolkit is now Gtk+ version 3.
823b2fb6
GM
1582If you don't pass `--with-x-toolkit' to configure, or if you use
1583`--with-x-toolkit=gtk' or `--with-x-toolkit=yes', configure will try
1584to build with Gtk+ version 3, and if that fails, try Gtk+ version 2.
d71a6517 1585You can explicitly require a specific version by passing
823b2fb6 1586`--with-x-toolkit=gtk2' or `--with-x-toolkit=gtk3' to configure.
da3d2105 1587
6bc66c10 1588** New configure option `--enable-link-time-optimization', to utilize
da3d2105
DA
1589an appropriate feature provided by GCC since version 4.5.0.
1590
33cb2043
GM
1591** New configure option `--without-all' to disable most of the optional
1592features (image support, etc.) that are normally enabled by default.
b8df54ff 1593
33cb2043
GM
1594** New configure option `--enable-gcc-warnings' (for developing/debugging
1595Emacs). If building with GCC, this enables compile-time checks that
64420fcd
GM
1596warn/give errors about possibly-questionable C code. On a recent GNU
1597system there should be no warnings; on older and on non-GNU systems
1598the results may be useful to developers.
b8df54ff 1599
823b2fb6 1600** The configure option `--enable-use-lisp-union-type' has been
6bc66c10 1601renamed to `--enable-check-lisp-object-type', as the resulting
d71a6517
GM
1602Lisp_Object type no longer uses a union to implement the compile time
1603check that this option enables.
1604
823b2fb6 1605** The configure option `--disable-maintainer-mode' has been removed,
501390c5
PE
1606as it was confusingly-named and rarely useful.
1607
f14a4380
GM
1608** The configure options `--program-prefix', `--program-suffix', and
1609`--program-transform-name' apply to more than just the installed
1610binaries. Now they also affect the man pages, icons, and the
1611etc/emacs.desktop file; but not the info pages, since this would break
1612links between the various manuals.
1a9c6830 1613
823b2fb6
GM
1614** You can use `NO_BIN_LINK=t make install' to prevent the installation
1615overwriting "emacs" in the installation bin/ directory with a link
6bc66c10 1616to "emacs-VERSION".
823b2fb6 1617
a4a18b8b
GM
1618** Emacs uses libtinfo in preference to libncurses, if available.
1619
187e9b90
GM
1620** On FreeBSD and NetBSD, configure no longer adds /usr/local/lib and
1621/usr/pkg/lib to the linker search path. You must add them yourself if
1622you want them.
1623
6bc66c10 1624** The standalone scripts `rcs-checkin' and `vcdiff' have been removed
276d5f5d
GM
1625(from the bin and libexec directories, respectively). The former is
1626no longer relevant, the latter is replaced by lisp (in vc-sccs.el).
1627
a1ed8b05 1628\f
2a1e2476 1629* Startup Changes in Emacs 24.3
e5fcdb5e
GM
1630
1631** Emacs no longer searches for `leim-list.el' files beneath the standard
1632lisp/ directory. There should not be any there anyway. If you have
823b2fb6 1633been adding them there, put them somewhere else; e.g., site-lisp.
e5fcdb5e 1634
4107c81e
GM
1635** The `--no-site-lisp' command line option now works for Nextstep builds.
1636
a1ed8b05 1637\f
2a1e2476 1638* Changes in Emacs 24.3
a1ed8b05 1639
6bc66c10 1640** Help
c89926a5 1641
6bc66c10 1642*** `C-h f' (`describe-function') can now perform autoloading.
c89926a5
CY
1643When this command is called for an autoloaded function whose docstring
1644contains a key substitution construct, that function's library is
1645automatically loaded, so that the documentation can be shown
1646correctly. To disable this, set `help-enable-auto-load' to nil.
1647
1648*** `C-h f' now reports previously-autoloaded functions as "autoloaded",
1649even after their associated libraries have been loaded (and the
1650autoloads have been redefined as functions).
1651
6bc66c10 1652** ImageMagick
cd996018 1653
6bc66c10
GM
1654*** Images displayed via ImageMagick now support transparency and the
1655:background image specification property.
cd996018 1656
6bc66c10 1657*** When available, ImageMagick support is automatically enabled.
c505aaeb
CY
1658It is no longer necessary to call `imagemagick-register-types'
1659explicitly to install ImageMagick image types; that function is called
7d806bfe 1660automatically at startup, or when customizing an imagemagick- option.
2f940384 1661
c505aaeb 1662*** Setting `imagemagick-types-inhibit' to t now disables the use of
823b2fb6
GM
1663ImageMagick to view images. (You must call `imagemagick-register-types'
1664afterwards if you do not use customize to change this.)
2f940384 1665
7afbaca4 1666*** The new variable `imagemagick-enabled-types' also affects which
60b5f187
GM
1667ImageMagick types are treated as images. The function
1668`imagemagick-filter-types' returns the list of types that will be
1669treated as images.
c505aaeb 1670
6bc66c10
GM
1671** Minibuffer
1672
1673*** In minibuffer filename prompts, `C-M-f' and `C-M-b' now move to the
1674next and previous path separator, respectively.
c505aaeb 1675
6bc66c10
GM
1676*** `minibuffer-electric-default-mode' can shorten "(default ...)" to "[...]"
1677in minibuffer prompts. Just set `minibuffer-eldef-shorten-default'
1678non-nil before enabling the mode.
1679
1680** Mode line
1681
1682*** New option `mode-line-default-help-echo' specifies the help text
1683(shown in a tooltip or in the echo area) for any part of the mode line
1684that does not have its own specialized help text.
1685
1686*** You can now click mouse-3 in the coding system indicator to invoke
1687`set-buffer-file-coding-system'.
1688
1689** Server and client
2f940384 1690
f938eda9
CY
1691*** emacsclient now obeys string values for `initial-buffer-choice',
1692if it is told to open a new frame without specifying any file to visit
1693or expression to evaluate.
db80bdc8 1694
f938eda9 1695*** New option `server-auth-key' specifies a shared server key.
f938eda9
CY
1696
1697** Emacs now generates backtraces on fatal errors.
1698On encountering a fatal error, Emacs now outputs a textual description
1699of the fatal signal, and a short backtrace on platforms like glibc
5248293f 1700that support backtraces.
2e2d2a13 1701
6bc66c10
GM
1702** `C-x C-q' is now bound to the new minor mode `read-only-mode'.
1703This minor mode replaces `toggle-read-only', which is now obsolete.
1704
1705** Most `y-or-n' prompts now allow you to scroll the selected window.
1706Typing `C-v' or `M-v' at a y-or-n prompt scrolls forward or backward
1707respectively, without exiting from the prompt.
1708
1709** In the Package Menu, newly-available packages are listed as "new",
1710and sorted above the other "available" packages by default.
1711
9475054f 1712** If your Emacs was built from a repository checkout, the new variable
0bfbd67c 1713`emacs-bzr-version' contains information about the bzr revision used.
de6ff46d 1714
6bc66c10 1715** New option `create-lockfiles' specifies usage of lockfiles.
f938eda9
CY
1716It defaults to t. Changing it to nil inhibits the creation of lock
1717files (use this with caution).
dc0f75c8 1718
6bc66c10
GM
1719** New option `enable-remote-dir-locals', if non-nil, allows directory-local
1720variables on remote hosts.
21ffb35a 1721
f85f636a
CY
1722** The entry for PCL-CVS has been removed from the Tools menu.
1723The PCL-CVS commands are still available via the keyboard.
1724
6bc66c10
GM
1725** Using "unibyte: t" in Lisp source files is obsolete.
1726Use "coding: raw-text" instead.
1727
e78e7e48
CY
1728** In the buffer made by `M-x report-emacs-bug', the `C-c m' binding
1729has been changed to `C-c M-i' (`report-emacs-bug-insert-to-mailer').
1730The previous binding, introduced in Emacs 24.1, was a mistake, because
1731`C-c LETTER' bindings are reserved for user customizations.
1732
6bc66c10 1733** Internationalization
2f940384 1734
f938eda9 1735*** New language environment: Persian.
2f940384 1736
f938eda9
CY
1737*** New input method `vietnamese-vni'.
1738
6bc66c10 1739** Nextstep (GNUstep / Mac OS X) port
2f940384 1740
823b2fb6 1741*** Support for fullscreen and the frame parameter fullscreen.
2f940384 1742
1a9c6830
GM
1743*** A file dialog is used for open/save operations initiated from the
1744menu/toolbar.
1745
a1ed8b05 1746\f
2a1e2476 1747* Editing Changes in Emacs 24.3
c25df26e 1748
6bc66c10 1749** Search and Replace
d39d3c8e 1750
f938eda9
CY
1751*** Non-regexp Isearch now performs "lax" space matching.
1752Each sequence of spaces in the supplied search string may match any
1753sequence of one or more whitespace characters, as specified by the
1754variable `search-whitespace-regexp'. (This variable is also used by a
823b2fb6 1755similar existing feature for regexp Isearch.)
2f940384 1756
f938eda9
CY
1757*** New Isearch command `M-s SPC' toggles lax space matching.
1758This applies to both ordinary and regexp Isearch.
2f940384 1759
f938eda9
CY
1760*** New option `replace-lax-whitespace'.
1761If non-nil, `query-replace' uses flexible whitespace matching too.
1762The default is nil.
2f940384 1763
b9cb2387
JL
1764*** Global `M-s _' starts a symbol (identifier) incremental search,
1765and `M-s _' in Isearch toggles symbol search mode.
1766`M-s c' in Isearch toggles search case-sensitivity.
1767
6bc66c10 1768** Navigation commands
48de8b12 1769
6bc66c10
GM
1770*** New binding `M-g c' for `goto-char'.
1771
1772*** New binding `M-g TAB' for `move-to-column'.
1773
1774*** `M-g TAB' (`move-to-column') prompts for a column number if called
1775interactively with no prefix arg. Previously, it moved to column 1.
1776
1777** New option `yank-handled-properties' allows processing of text
1778properties on yanked text, in ways that are more general than just
1779removing them (as is done by `yank-excluded-properties').
48de8b12 1780
48de8b12
CY
1781** New option `delete-trailing-lines' specifies whether
1782M-x delete-trailing-whitespace should delete trailing lines at the end
1783of the buffer. It defaults to t.
1784
f938eda9 1785** `C-u M-=' now counts lines/words/characters in the entire buffer.
826b3235 1786
48de8b12
CY
1787** `C-x 8 RET' is now bound to `insert-char', which is now a command.
1788`ucs-insert' is now an obsolete alias for `insert-char'.
b2459884 1789
48de8b12
CY
1790** The `z' key no longer has a binding in most special modes.
1791It used to be bound to `kill-this-buffer', but `z' is too easy to
1792accidentally type.
f938eda9 1793
6bc66c10
GM
1794** New command `C-x r M-w' (`copy-rectangle-as-kill').
1795It copies the region-rectangle as the last rectangle kill.
f938eda9 1796
6bc66c10 1797** Registers
f938eda9 1798
823b2fb6 1799*** `C-x r +' is now overloaded to invoke `append-to-register'.
f938eda9 1800
f938eda9 1801*** New option `register-separator' specifies the register containing
823b2fb6
GM
1802the text to put between collected texts for use with
1803M-x append-to-register and M-x prepend-to-register.
f1f4dba0 1804
a1ed8b05 1805\f
2a1e2476 1806* Changes in Specialized Modes and Packages in Emacs 24.3
ae4969c2 1807
6bc66c10 1808** Common Lisp emulation (CL)
f938eda9 1809
89660017 1810*** CL's main entry is now (require 'cl-lib).
823b2fb6
GM
1811`cl-lib' is like the old `cl' except that it uses the namespace cleanly;
1812i.e., all its definitions have the "cl-" prefix (and internal definitions
1813use the "cl--" prefix).
7c1898a7 1814
823b2fb6
GM
1815If `cl' provided a feature under the name `foo', then `cl-lib'
1816provides it under the name `cl-foo' instead; with the exceptions of the
1817few `cl' definitions that had to use `foo*' to avoid conflicts with
1818pre-existing Elisp entities. These have been renamed to `cl-foo'
1819rather than `cl-foo*'.
7c1898a7 1820
92246540 1821The old `cl' is now deprecated and is mainly just a bunch of aliases that
823b2fb6 1822provide the old, non-prefixed names. Some exceptions are listed below:
7c1898a7 1823
89660017
SM
1824*** `cl-flet' is not like `flet' (which is deprecated).
1825Instead it obeys the behavior of Common-Lisp's `flet'.
e8693c96
GM
1826In particular, in cl-flet function definitions are lexically scoped,
1827whereas in flet the scoping is dynamic.
89660017
SM
1828
1829*** `cl-labels' is slightly different from `labels'.
823b2fb6
GM
1830The difference is that it relies on the `lexical-binding' machinery
1831(as opposed to the `lexical-let' machinery used previously) to capture
1832definitions in closures, so such closures will only work if `lexical-binding'
1833is in use.
89660017 1834
f94b04fc 1835*** `cl-letf' is not exactly like `letf'.
4ddedf94
GM
1836The only difference is in details that relate to some deprecated usage
1837of `symbol-function' in place forms.
f94b04fc 1838
89660017 1839*** `progv' was rewritten to use the `let' machinery.
823b2fb6
GM
1840A side effect is that variables without corresponding values are bound
1841to nil rather than being made unbound.
89660017 1842
9512f820
GM
1843*** The following methods of extending `setf' are obsolete
1844(use features from gv.el instead):
1845`define-modify-macro' (use `gv-letplace')
031b2ea7
GM
1846`defsetf' (use `gv-define-simple-setter' or `gv-define-setter')
1847`define-setf-expander' (use `gv-define-setter' or `gv-define-expander')
2b4da3ff 1848`get-setf-method' no longer exists (see "Incompatible Lisp Changes")
f94b04fc 1849
6bc66c10 1850** Diff mode
f938eda9 1851
6bc66c10
GM
1852*** Changes are now highlighted using the same color scheme as in
1853modern VCSes. Deletions are displayed in red (new faces
1854`diff-refine-removed' and `smerge-refined-removed', and new definition
1855of `diff-removed'), insertions in green (new faces `diff-refine-added'
1856and `smerge-refined-added', and new definition of `diff-added').
f938eda9 1857
6bc66c10
GM
1858*** The variable `diff-use-changed-face' defines whether to use the
1859face `diff-changed', or `diff-removed' and `diff-added' to highlight
1860changes in context diffs.
2f940384 1861
6bc66c10
GM
1862*** The new command `diff-delete-trailing-whitespace' removes trailing
1863whitespace introduced by a diff.
f938eda9 1864
6bc66c10
GM
1865** Ediff now uses the same color scheme as Diff mode.
1866
1867** Python mode
1868
1869A new version of python.el, which provides several new features, including:
1870per-buffer shells, better indentation, Python 3 support, and improved
1871shell-interaction compatible with iPython (and virtually any other
1872text based shell).
1873
1874*** Some user options have been replaced/renamed, including (old -> new):
1875**** python-indent -> python-indent-offset
1876**** python-guess-indent -> python-indent-guess-indent-offset
1877**** python-pdbtrack-do-tracking-p -> python-pdbtrack-activate
1878**** python-use-skeletons -> python-skeleton-autoinsert
1879
1880*** Some user options have been removed, including:
1881
1882**** `python-indent-string-contents': Strings are never indented.
1883
1884**** `python-honour-comment-indentation':
d5b1b1aa 1885Comments are always considered as indentation markers.
6bc66c10
GM
1886
1887**** `python-continuation-offset': Indentation is automatically
1888calculated in a pep8 compliant way depending on the context.
1889
1890**** `python-shell-prompt-alist', `python-shell-continuation-prompt-alist':
1891Have no direct mapping as the shell interaction is completely different.
1892
1893**** `python-python-command', `python-jython-command':
1894Replaced by `python-shell-interpreter'.
1895
1896**** `inferior-python-filter-regexp', `python-remove-cwd-from-path',
1897`python-pdbtrack-minor-mode-string', `python-source-modes':
1898No longer relevant.
1899
1900*** Some commands have been replaced (old -> new):
1901**** python-insert-class -> python-skeleton-class
1902**** python-insert-def -> python-skeleton-def
1903**** python-insert-for -> python-skeleton-for
1904**** python-insert-if -> python-skeleton-if
1905**** python-insert-try/except -> python-skeleton-try
1906**** python-insert-try/finally -> python-skeleton-try
1907**** python-insert-while -> python-skeleton-while
1908**** python-find-function -> python-nav-jump-to-defun
1909**** python-next-statement -> python-nav-forward-sentence
1910**** python-previous-statement -> python-nav-backward-sentence
1911**** python-beginning-of-defun-function -> python-nav-beginning-of-defun
1912**** python-end-of-defun-function -> python-nav-end-of-defun
1913**** python-send-buffer -> python-shell-send-buffer
1914**** python-send-defun -> python-shell-send-defun
1915**** python-send-region -> python-shell-send-region
1916**** python-send-region-and-go -> emulate with python-shell-send-region
1917and python-shell-switch-to-shell
1918**** python-send-string -> python-shell-send-string
1919**** python-switch-to-python -> python-shell-switch-to-shell
1920**** python-describe-symbol -> python-eldoc-at-point
e76f0800 1921
f938eda9
CY
1922** D-Bus
1923
f938eda9
CY
1924*** New variables `dbus-compiled-version' and `dbus-runtime-version'.
1925
f938eda9
CY
1926*** The D-Bus object manager interface is implemented.
1927
f938eda9
CY
1928*** Variables of type :(u)int32 and :(u)int64 accept floating points,
1929if their value does not fit into Emacs's integer range.
1930
823b2fb6
GM
1931*** The function `dbus-call-method' is now non-blocking.
1932It can be interrupted by `C-g'. `dbus-call-method-non-blocking' is obsolete.
f938eda9 1933
823b2fb6 1934*** Signals can also be sent as unicast messages.
f938eda9 1935
f938eda9 1936*** The argument list of `dbus-register-signal' has been extended,
6bc66c10 1937according to the new match rule types of D-Bus.
f938eda9 1938
f938eda9
CY
1939*** `dbus-init-bus' supports private connections.
1940
f938eda9
CY
1941*** There is a new function `dbus-setenv'.
1942
6bc66c10
GM
1943** `desktop-path' no longer includes the "." directory.
1944Desktop files are now located in ~/.emacs.d by default.
f938eda9
CY
1945
1946** Dired
2f940384 1947
f938eda9
CY
1948*** `dired-do-async-shell-command' executes each file sequentially
1949if the command ends in `;' (when operating on multiple files).
1950Otherwise, it executes the command on each file in parallel.
2f940384 1951
823b2fb6
GM
1952*** Typing `M-n' in the minibuffer of `dired-do-chmod', `dired-do-chgrp',
1953`dired-do-chown', and `dired-do-touch' yanks the attributes of the
f938eda9 1954file at point.
2f940384 1955
f938eda9 1956*** When the region is active, `m' (`dired-mark'), `u' (`dired-unmark'),
823b2fb6 1957`DEL' (`dired-unmark-backward'), and `d' (`dired-flag-file-deletion')
f938eda9 1958mark/unmark/flag all files in the active region.
2f940384 1959
88c45e34 1960*** The minibuffer default for `=' (`dired-diff') has changed.
f938eda9
CY
1961It is now the backup file for the file at point, if one exists.
1962In Transient Mark mode the default is the file at the active mark.
2f940384 1963
f938eda9
CY
1964*** `M-=' is no longer bound to `dired-backup-diff' in Dired buffers.
1965The global binding for `M-=', `count-words-region' is in effect.
1966
02969baf
GM
1967** ERC
1968
6e5e9b70
GM
1969*** New module "notifications", which can send a notification when you
1970receive a private message or your nickname is mentioned.
02969baf
GM
1971
1972*** ERC will look up server/channel names via auth-source and use any
1973channel keys found.
f938eda9 1974
274f5de6
GM
1975*** New option `erc-lurker-hide-list', similar to `erc-hide-list', but
1976only applies to messages sent by lurkers.
f925b109 1977
6bc66c10 1978** reStructuredText mode
f938eda9 1979
6bc66c10
GM
1980*** Keybindings (see `C-c C-h'), TAB indentation, filling and auto-filling,
1981fontification, comment handling, and customization have all been revised
1982and improved.
f938eda9 1983
6bc66c10 1984*** Support for `imenu' and `which-function-mode'.
f938eda9 1985
6bc66c10
GM
1986*** The reStructuredText syntax is more closely covered.
1987Sphinx support has been improved.
f938eda9 1988
6bc66c10 1989*** `rst-insert-list' inserts new list or continues existing lists.
f938eda9 1990
6bc66c10 1991*** A negative prefix argument always works for `rst-adjust'.
f938eda9 1992
6bc66c10 1993*** The window configuration is reset after displaying a TOC.
bc7be45d 1994
6bc66c10 1995*** The constant `rst-version' describes the rst.el package version.
358c19d9 1996
dba3cda3
GM
1997** Ruby mode
1998
1999*** Support for percent literals and recognition of regular expressions
2000in method calls without parentheses with more methods, including Cucumber
2001steps definitions.
2002
2003*** Improved syntax highlighting and indentation.
2004
2005*** New command `ruby-toggle-block', bound to `C-c {'.
2006
2007*** Some non-standard keybindings/commands have been removed:
2008
2009**** `ruby-electric-brace'; use `electric-indent-mode' instead.
2010
2011**** `ruby-mark-defun'; use `mark-defun'.
2012
2013**** `ruby-beginning-of-defun' and `ruby-end-of-defun' are replaced by
2014appropriate settings for the variables `beginning-of-defun-function'
2015and `end-of-defun-function'.
2016
2017**** Non-standard keybindings for `backward-kill-word', `comment-region',
2018`reindent-then-newline-and-indent' and `newline' have been removed.
2019
6bc66c10 2020** Shell Script mode
40d8bcb8 2021
6bc66c10 2022*** Pairing of parens/quotes uses `electric-pair-mode' instead of skeleton-pair.
40d8bcb8 2023
6bc66c10 2024*** `sh-electric-here-document-mode' now controls auto-insertion of here-docs.
40d8bcb8 2025
6bc66c10 2026*** `sh-use-smie' lets you choose a new indentation and navigation code.
40d8bcb8 2027
6bc66c10 2028** VHDL mode
40d8bcb8 2029
6bc66c10 2030*** The free software compiler GHDL is supported (and now the default).
40d8bcb8 2031
6bc66c10 2032*** Support for the VHDL-AMS packages has been added/updated.
40d8bcb8 2033
6bc66c10 2034*** Updated to the 2002 revision of the VHDL standard.
40d8bcb8 2035
6bc66c10 2036*** Accepts \r and \f as whitespace.
40d8bcb8 2037
6bc66c10 2038** Apropos
40d8bcb8 2039
6bc66c10
GM
2040*** The faces used by Apropos are now directly customizable.
2041These faces are named `apropos-symbol', `apropos-keybinding', and so on;
2042see the `apropos' Custom group for details.
d13c8be6 2043
6bc66c10 2044*** The old options whose values specified faces to use have been removed
90b43013
LI
2045(i.e. `apropos-symbol-face', `apropos-keybinding-face', `apropos-label-face',
2046`apropos-match-face' and `apropos-property-face'.).
d13c8be6 2047
6bc66c10 2048** Buffer Menu
d13c8be6 2049
6bc66c10 2050*** This package has been rewritten to use Tabulated List mode.
d13c8be6 2051
6bc66c10
GM
2052*** Option `Buffer-menu-buffer+size-width' is now obsolete.
2053Use `Buffer-menu-name-width' and `Buffer-menu-size-width' instead.
d13c8be6 2054
86e100a6
GM
2055** Calc
2056
2057*** Algebraic simplification mode is now the default.
2058To restrict to the limited simplifications given by the former
2059default simplification mode, use `m I'.
2060
6bc66c10 2061** Calendar
d13c8be6 2062
6bc66c10
GM
2063*** You can customize the header text that appears above each calendar month.
2064See the variable `calendar-month-header'.
d13c8be6 2065
6bc66c10 2066*** New LaTeX calendar style, produced by `cal-tex-cursor-week2-summary'.
ee97deee 2067
6bc66c10
GM
2068*** The calendars produced by cal-html include holidays.
2069Customize `cal-html-holidays' to change this.
8b0823d6 2070
0058cae2
GM
2071** CEDET
2072
2073*** The major modes from the parser generators "Bovine" and "Wisent"
2074are now properly integrated in Emacs. The file suffixes ".by" and ".wy"
2075are in `auto-mode-alist', and the corresponding manuals are included.
2076
2077*** EDE
2078
2079**** Menu support for the "Configuration" feature. This allows users to
2080choose the active configuration (such as debug or install) from the menu.
2081
2082**** New command `ede-set' to interactively set project-local variables.
2083
2084**** Support for compiling, debugging, and running in "generic" projects.
2085
2086**** Autoconf editing support for M4 macros with complex arguments.
2087
2088**** Compilation support for the "linux" project type.
2089
2090**** "simple" projects have been removed; use "generic" projects instead.
2091
2092*** Semantic
2093
2094**** Support for parsing #include statements inside a namespace in C/C++.
2095
2096**** Improved support for 'extern "C"' declarations in C/C++.
2097
2098**** The ability to ignore more common special C/C++ preprocessor symbols,
2099such as '__nonnull' and '__asm'. Add '__cplusplus' macro when parsing C++.
2100If available, include cdefs.h as an additional source of preprocessor symbols.
2101
2102**** Improved C/C++ function pointer parsing.
2103
2104**** In Python, support for converting imports to include file names.
2105
2106**** Ability to dynamically determine the Python load path.
2107
2108**** Support for the Python 'WITH' and 'AT' keywords.
2109
2110**** Improved tooltip completion.
2111
2112*** SRecode
2113
2114**** The SRecode manual is now included.
2115
2116**** Tag generation supports constructor/destructor settings and system
2117include differentiation.
2118
2119**** Addition of 'Framework' support: Frameworks are specified when a
2120particular kind of library (such as Android) is needed in a common language
2121mode (like Java).
2122
2123**** Support for nested templates and let variables override based on priority.
2124
2125**** Support for merging tables from multiple related modes, such as
2126default -> c++ -> arduino.
2127
6bc66c10 2128** Compile has a new option `compilation-always-kill'.
42917e79 2129
6bc66c10 2130** Customize
35d98877 2131
6bc66c10 2132*** `custom-reset-button-menu' now defaults to t.
35d98877 2133
6bc66c10
GM
2134*** Non-option variables are never matched in `customize-apropos' and
2135`customize-apropos-options' (i.e., the prefix argument does nothing for
2136these commands now).
782fbf2a 2137
f938eda9 2138** Term
782fbf2a 2139
823b2fb6
GM
2140*** The variables `term-default-fg-color' and `term-default-bg-color'
2141are now deprecated in favor of the customizable face `term'.
fc72b15c 2142
02969baf
GM
2143*** You can customize how to display ANSI terminal colors and styles
2144by customizing the corresponding `term-color-<COLOR>',
2145`term-color-underline' and `term-color-bold' faces.
cf20dee0 2146
05ecb497 2147** Tramp
2f940384 2148
02969baf 2149*** The syntax has been extended in order to allow ad-hoc proxy definitions.
05ecb497 2150
823b2fb6 2151*** Remote processes are now also supported on remote MS-Windows hosts.
05ecb497 2152
ce7b18ec 2153** URL
2f940384 2154
ce7b18ec
CY
2155*** Structs made by `url-generic-parse-url' have nil `attributes' slot.
2156Previously, this slot stored semicolon-separated attribute-value pairs
2157appended to some imap URLs, but this is not compatible with RFC 3986.
823b2fb6 2158So now the `filename' slot stores the entire path and query components,
ce7b18ec 2159and the `attributes' slot is always nil.
2f940384 2160
ce7b18ec
CY
2161*** New function `url-encode-url' for encoding a URI string.
2162The `url-retrieve' function now uses this to encode its URL argument,
2163in case that is not properly encoded.
2164
6bc66c10
GM
2165** notifications.el supports now version 1.2 of the Notifications API.
2166The function `notifications-get-capabilities' returns the supported
2167server properties.
f938eda9 2168
6bc66c10
GM
2169** Flymake uses fringe bitmaps to indicate errors and warnings.
2170See `flymake-fringe-indicator-position', `flymake-error-bitmap' and
2171`flymake-warning-bitmap'.
f938eda9 2172
6bc66c10
GM
2173** The FFAP option `ffap-url-unwrap-remote' can now be a list of strings,
2174specifying URL types that should be converted to remote file names at
2175the FFAP prompt. The default is now '("ftp").
f938eda9 2176
6bc66c10
GM
2177** New Ibuffer `derived-mode' filter, bound to `/ M'.
2178The old binding for `/ M' (filter by used-mode) is now bound to `/ m'.
f938eda9 2179
6bc66c10
GM
2180** New option `mouse-avoidance-banish-position' specifies where the
2181`banish' mouse avoidance setting moves the mouse.
ce7b18ec 2182
6bc66c10
GM
2183** In Perl mode, new option `perl-indent-parens-as-block' causes non-block
2184closing brackets to be aligned with the line of the opening bracket.
f938eda9 2185
6bc66c10 2186** In Proced mode, new command `proced-renice' renices marked processes.
f938eda9 2187
6bc66c10
GM
2188** New option `async-shell-command-buffer' specifies the buffer to use
2189for a new asynchronous `shell-command' when the default output buffer
2190`*Async Shell Command*' is already in use.
f938eda9 2191
6bc66c10
GM
2192** SQL mode has a new option `sql-db2-escape-newlines'.
2193If non-nil, newlines sent to the command interpreter will be escaped
2194by a backslash. The default does not escape the newlines and assumes
2195that the sql statement will be terminated by a semicolon.
f938eda9 2196
6bc66c10
GM
2197** New command `tabulated-list-sort', bound to `S' in Tabulated List mode
2198(and modes that derive from it), sorts the column at point, or the Nth
2199column if a numeric prefix argument is given.
f938eda9 2200
02969baf 2201** `which-func-modes' now defaults to t, so Which Function mode, when
05b621a6 2202enabled, applies to all applicable major modes.
f938eda9 2203
6bc66c10 2204** `winner-mode-hook' now runs when the mode is disabled, as well as when
823b2fb6 2205it is enabled.
f938eda9 2206
6bc66c10
GM
2207** Follow mode no longer works by using advice.
2208The option `follow-intercept-processes' has been removed.
2209
2210** `javascript-generic-mode' is now an obsolete alias for `js-mode'.
f938eda9 2211
d1069532
SM
2212** Hooks renamed to avoid obsolete "-hooks" suffix:
2213*** semantic-lex-reset-hooks -> semantic-lex-reset-functions
2214*** semantic-change-hooks -> semantic-change-functions
2215*** semantic-edits-new-change-hooks -> semantic-edits-new-change-functions
2216*** semantic-edits-delete-change-hooks -> semantic-edits-delete-change-functions
2217*** semantic-edits-reparse-change-hooks -> semantic-edits-reparse-change-functions
2218*** semanticdb-save-database-hooks -> semanticdb-save-database-functions
2219*** c-prepare-bug-report-hooks -> c-prepare-bug-report-hook
2220*** rcirc-sentinel-hooks -> rcirc-sentinel-functions
2221*** rcirc-receive-message-hooks -> rcirc-receive-message-functions
2222*** rcirc-activity-hooks -> rcirc-activity-functions
2223*** rcirc-print-hooks -> rcirc-print-functions
2224*** dbus-event-error-hooks -> dbus-event-error-functions
2225*** eieio-pre-method-execution-hooks -> eieio-pre-method-execution-functions
2226*** checkdoc-style-hooks -> checkdoc-style-functions
2227*** checkdoc-comment-style-hooks -> checkdoc-comment-style-functions
2228*** archive-extract-hooks -> archive-extract-hook
2229*** filesets-cache-fill-content-hooks -> filesets-cache-fill-content-hook
2230*** hfy-post-html-hooks -> hfy-post-html-hook
2231*** nndiary-request-create-group-hooks -> nndiary-request-create-group-functions
2232*** nndiary-request-update-info-hooks -> nndiary-request-update-info-functions
2233*** nndiary-request-accept-article-hooks -> nndiary-request-accept-article-functions
2234*** gnus-subscribe-newsgroup-hooks -> gnus-subscribe-newsgroup-functions
f938eda9 2235
6bc66c10 2236** Obsolete packages
2f940384 2237
797e6e88
SM
2238*** assoc.el
2239In most cases, assoc+member+push+delq work just as well.
2240And in any case it's just a terrible package: ugly semantics, terrible
2241inefficiency, and not namespace-clean.
3c74813a 2242*** bruce.el
b4617547 2243*** cust-print.el
daed4003 2244*** ledit.el
82f289a4 2245*** mailpost.el
d57de7fe 2246*** mouse-sel.el
3c74813a 2247*** patcomp.el
1a9c6830 2248
a1ed8b05 2249\f
2a1e2476 2250* Incompatible Lisp Changes in Emacs 24.3
b4d3bc10 2251
6bc66c10
GM
2252** Docstrings starting with `*' no longer indicate user options.
2253Only variables defined using `defcustom' are considered user options.
2254The function `user-variable-p' is now an obsolete alias for
2255`custom-variable-p'.
090cf9db 2256
6bc66c10
GM
2257** The return values of `defalias', `defun' and `defmacro' have changed,
2258and are now undefined. For backwards compatibility, `defun' and
2259`defmacro' currently return the name of the newly defined
2260function/macro, but this should not be relied upon.
090cf9db 2261
823b2fb6
GM
2262** `random' by default now returns a different random sequence in
2263every Emacs run. Use `(random S)', where S is a string, to set the
0e23ef9d
PE
2264random seed to a value based on S, in order to get a repeatable
2265sequence in later calls.
2266
d32e47af
LM
2267** If the NEWTEXT arg to `replace-match' contains a substring "\?",
2268that substring is inserted literally even if the LITERAL arg is
2269non-nil, instead of causing an error to be signaled.
2270
2cec368c
MR
2271** `select-window' now always makes the window's buffer current.
2272It does so even if the window was selected before.
2273
6bc66c10
GM
2274** The function `x-select-font' can return a font spec, instead of a
2275font name as a string. Whether it returns a font spec or a font name
2276depends on the graphical library.
bbf908bc 2277
eeddc531
CY
2278** `face-spec-set' no longer sets frame-specific attributes when the
2279third argument is a frame (that usage was obsolete since Emacs 22.2).
2280
6bc66c10 2281** `set-buffer-multibyte' now signals an error in narrowed buffers.
a59d531e 2282
ab7f1c43
GM
2283** The CL package's `get-setf-method' function no longer exists.
2284Generalized variables are now part of core Emacs Lisp, and implemented
2285differently to the way cl.el used to do it. It is not possible to
2286define a compatible replacement for `get-setf-method'. See the file
2287gv.el for internal details of the new implementation.
2288
6bc66c10
GM
2289** The arguments of `dbus-register-signal' are no longer just strings,
2290but keywords or keyword-string pairs. The old argument list will
2291still be supported for Emacs 24.x.
72b255c7 2292
6bc66c10 2293** Miscellaneous name changes
823b2fb6
GM
2294Some Lisp symbols have been renamed to correct their spelling,
2295or to be more consistent with standard Emacs terminology.
72b255c7 2296
72b255c7 2297*** Renamed functions
72b255c7
PE
2298**** hangul-input-method-inactivate -> hangul-input-method-deactivate
2299**** inactivate-input-method -> deactivate-input-method
2300**** quail-inactivate -> quail-deactivate
2301**** robin-inactivate -> robin-deactivate
2302**** viper-inactivate-input-method -> viper-deactivate-input-method
2303**** viper-inactivate-input-method-action ->
2304 viper-deactivate-input-method-action
2305**** ucs-input-inactivate -> ucs-input-deactivate
2306
2307*** Renamed hooks
2308The old hooks are still supported for backward compatibility, but they
2309are deprecated and will be removed eventually.
72b255c7
PE
2310**** input-method-inactivate-hook -> input-method-deactivate-hook
2311**** robin-inactivate-hook -> robin-deactivate-hook
2312**** quail-inactivate-hook -> quail-deactivate-hook
2313
6bc66c10 2314*** Renamed variables
72b255c7
PE
2315**** follow-deactive-menu -> follow-inactive-menu
2316**** inactivate-current-input-method-function ->
2317 deactivate-current-input-method-function
2318
02969baf
GM
2319** Some obsolete functions, variables, and faces have been removed:
2320*** `last-input-char', `last-command-char', `unread-command-char'
78f3273a
CY
2321*** `facemenu-unlisted-faces'
2322*** `rmail-decode-mime-charset'
a5f2b6ec
CY
2323*** `iswitchb-read-buffer'
2324*** `sc-version', `sc-submit-bug-report'
2325*** `set-char-table-default'
02969baf 2326*** `string-to-sequence' (use `string-to-list' or `string-to-vector')
a5f2b6ec 2327*** `compile-internal'
02969baf 2328*** `modeline'
59f7af81 2329*** `mode-line-inverse-video'
02969baf 2330*** `follow-mode-off-hook'
a5f2b6ec 2331*** `cvs-commit-buffer-require-final-newline'
63820c5c 2332(use `log-edit-require-final-newline' instead)
a5f2b6ec
CY
2333*** `cvs-changelog-full-paragraphs'
2334(use `log-edit-changelog-full-paragraphs' instead)
2335*** `cvs-diff-ignore-marks', `cvs-diff-buffer-name'
2336*** `vc-ignore-vc-files' (use `vc-handled-backends' instead)
2337*** `vc-master-templates' (use `vc-handled-backends' instead)
2338*** `vc-checkout-carefully'
78f3273a 2339
a1ed8b05 2340\f
93e0bed6 2341* Lisp Changes in Emacs 24.3
ef24141c 2342
2ee3d7f0 2343** CL-style generalized variables are now in core Elisp.
f938eda9 2344`setf' is autoloaded; `push' and `pop' accept generalized variables.
ebdbfb95
GM
2345You can define your own generalized variables using `gv-define-simple-setter',
2346`gv-define-setter', etc.
2ee3d7f0 2347
6bc66c10
GM
2348** Emacs tries to macroexpand interpreted (non-compiled) files during load.
2349This can significantly speed up execution of non-byte-compiled code,
2350but can also bump into previously unnoticed cyclic dependencies.
2351These are generally harmless: they will simply cause the macro calls
2352to be left for later expansion (as before), but will result in a
2353warning ("Eager macro-expansion skipped due to cycle") describing the cycle.
2354You may wish to restructure your code so this does not happen.
2355
2356** New sampling-based Elisp profiler.
2357Try M-x profiler-start, do some work, and then call M-x profiler-report.
2358When finished, use M-x profiler-stop. The sampling rate can be based on
2359CPU time or memory allocations.
2360
500fcedc
SM
2361** `defun' also accepts a (declare DECLS) form, like `defmacro'.
2362The interpretation of the DECLS is determined by `defun-declarations-alist'.
2363
6bc66c10
GM
2364** New macros `setq-local' and `defvar-local'.
2365
2366** Face underlining can now use a wave.
2f940384 2367
6bc66c10 2368** `read-regexp' has a new argument HISTORY; the first argument PROMPT
cd996018 2369of `read-regexp' accepts a string ending with a colon and space, and its
823b2fb6 2370second argument DEFAULTS can be a list of strings accessible via `M-n'
cd996018
CY
2371in the minibuffer ahead of other hard-coded useful regexp-related values.
2372More commands use `read-regexp' now to read their regexp arguments.
2373
f938eda9 2374** Completion
500fcedc 2375
f938eda9
CY
2376*** New function `completion-table-with-quoting' to handle completion
2377in the presence of quoting, such as file completion in shell buffers.
f95e9344 2378
f938eda9
CY
2379*** New function `completion-table-subvert' to use an existing completion
2380table, but with a different prefix.
2381
6bc66c10 2382** Debugger
f95e9344 2383
f938eda9
CY
2384*** New error type and new function `user-error'.
2385These do not trigger the debugger.
f95e9344 2386
57fc0fee
GM
2387*** New option `debugger-bury-or-kill', saying what to do with the
2388debugger buffer when exiting debug.
45b82ad0
SM
2389
2390*** Set `debug-on-message' to enter the debugger when a certain
2391message is displayed in the echo area. This can be useful when trying
2392to work out which code is doing something.
2f940384 2393
45b82ad0
SM
2394*** New var `inhibit-debugger', automatically set to prevent accidental
2395recursive invocations.
fa2bcf43 2396
6bc66c10 2397** Window handling
2f940384 2398
6bc66c10
GM
2399*** New command `fit-frame-to-buffer' adjusts the frame height to
2400fit the contents.
2f940384 2401
6bc66c10
GM
2402*** The command `fit-window-to-buffer' can adjust the frame height
2403if the new option `fit-frame-to-buffer' is non-nil.
8e17c9ba 2404
7fe37cfc
GM
2405*** New macro `with-temp-buffer-window', similar to
2406`with-output-to-temp-buffer'.
fa2bcf43 2407
8e17c9ba
MR
2408*** `temp-buffer-resize-mode' no longer resizes windows that have been
2409reused.
c5e28e39 2410
823b2fb6 2411*** New option `switch-to-buffer-preserve-window-point' to restore a
43bcfda6 2412window's point when switching buffers.
7c82753d 2413
6bc66c10
GM
2414*** New display action alist entries `window-height' and `window-width'
2415specify the size of new windows created by `display-buffer'.
2416
2417*** New display action alist entry `pop-up-frame-parameters', if
2418non-nil, specifies frame parameters to give any newly-created frame.
7c82753d 2419
fa2bcf43
MR
2420*** New display action alist entry `inhibit-switch-frame', if non-nil,
2421tells display action functions to avoid changing which frame is
2422selected.
2f940384 2423
fa2bcf43
MR
2424*** New display action alist entry `previous-window', if non-nil,
2425specifies window to reuse in `display-buffer-in-previous-window'.
2f940384 2426
6bc66c10
GM
2427*** New display action functions `display-buffer-below-selected',
2428and `display-buffer-in-previous-window'.
2429
2430*** The functions `get-lru-window', `get-mru-window' and `get-largest-window'
2431now accept a third argument to avoid choosing the selected window.
2432
2433*** Additional values recognized for option `window-combination-limit'.
5938d519 2434
77f1f99c
CY
2435*** The following variables are obsolete, as they can be replaced by
2436appropriate entries in the `display-buffer-alist' function introduced
2437in Emacs 24.1:
823b2fb6 2438**** `dired-shrink-to-fit'
77f1f99c 2439**** `display-buffer-reuse-frames'
823b2fb6 2440**** `display-buffer-function'
77f1f99c 2441**** `special-display-buffer-names'
823b2fb6 2442**** `special-display-frame-alist'
77f1f99c 2443**** `special-display-function'
823b2fb6 2444**** `special-display-regexps'
77f1f99c 2445
ab0fa4e4 2446** Time
2f940384 2447
ab0fa4e4
PE
2448*** `current-time-string' no longer requires that its argument's year
2449must be in the range 1000..9999. It now works with any year supported
2450by the underlying C implementation.
2f940384 2451
f938eda9
CY
2452*** `current-time' now returns extended-format time stamps
2453(HIGH LOW USEC PSEC), where the new PSEC slot specifies picoseconds.
2454PSEC is typically a multiple of 1000 on current machines. Other
823b2fb6
GM
2455functions that use this format, such as `file-attributes' and
2456`format-time-string', have been changed accordingly. Old-format time
f938eda9 2457stamps are still accepted.
2f940384 2458
823b2fb6 2459*** The format of timers in `timer-list' and `timer-idle-list' is now
f938eda9
CY
2460[TRIGGERED-P HI-SECS LO-SECS USECS REPEAT-DELAY FUNCTION ARGS IDLE-DELAY PSECS].
2461The PSECS slot is new, and uses picosecond resolution. It can be
823b2fb6 2462accessed via the new `timer--psecs' accessor.
2f940384 2463
c4132fd4
PE
2464*** Last-modified time stamps in undo lists now are of the form
2465(t HI-SECS LO-SECS USECS PSECS) instead of (t HI-SECS . LO-SECS).
2466
0058cae2
GM
2467** EIEIO
2468
2469*** Improved security when handling persistent objects:
2470
2471**** `eieio-persistent-read' now features optional arguments for specifying
2472the class to load, as well as a flag stating whether subclasses are allowed;
2473if provided, other classes will be rejected by the reader. For
2474compatibility with existing code, if the class is omitted only a
2475warning is issued.
2476
2477**** New specialized reader for pulling in classes and signaling errors
2478without evaluation of suspicious code.
2479
2480**** All slots that contain objects must have a :type. Slots with lists
2481of objects must use a new type predicate for a list of an object type.
2482
2483*** Support for `find-function' and similar utilities, through the addition
2484of filename support to generated symbols.
2485
f938eda9 2486** Floating point functions now always return special values like NaN,
823b2fb6 2487instead of signaling errors, if given invalid args; e.g., (log -1.0).
f938eda9
CY
2488Previously, they returned NaNs on some platforms but signaled errors
2489on others. The affected functions are acos, asin, tan, exp, expt,
2490log, log10, sqrt, and mod.
2491
6bc66c10 2492** New fringe bitmap `exclamation-mark'.
f938eda9 2493
6bc66c10
GM
2494** Miscellaneous changes to special forms and macros
2495
2496*** `defun' and `defmacro' are now macros rather than special forms.
2497
2498*** `kbd' is now a function rather than a macro.
2499
2500** Miscellaneous new functions
2501
b29daf07
GM
2502*** `set-temporary-overlay-map' sets up a temporary keymap that
2503takes precedence over most other maps for a short while (normally one key).
f938eda9 2504
847a0561 2505*** `autoloadp' tests if its argument is an autoloaded object.
2f940384 2506
847a0561 2507*** `autoload-do-load' performs the autoloading operation.
2f940384 2508
f938eda9 2509*** `buffer-narrowed-p' tests if the buffer is narrowed.
2f940384 2510
f938eda9 2511*** `file-name-base' returns a file name sans directory and extension.
2f940384 2512
f938eda9 2513*** `function-get' fetches a function property, following aliases.
c990426a 2514
f938eda9 2515*** `posnp' tests if an object is a `posn'.
f938eda9 2516
f938eda9 2517*** `system-users' returns the user names on the system.
547d6865 2518
f938eda9 2519*** `system-groups' returns the group names on the system.
f938eda9 2520
f938eda9 2521*** `tty-top-frame' returns the topmost frame of a text terminal.
c990426a 2522
f938eda9 2523** The following functions and variables are obsolete:
847a0561 2524*** `automount-dir-prefix' (use `directory-abbrev-alist')
f938eda9 2525*** `buffer-has-markers-at'
1a9c6830 2526*** `macro-declaration-function' (use `macro-declarations-alist')
847a0561 2527*** `window-system-version' (provides no useful information)
93cacb6d 2528*** `dired-pop-to-buffer' (use `dired-mark-pop-up')
0e2ae83d 2529*** `query-replace-interactive'
49238e7f 2530*** `font-list-limit' (has had no effect since Emacs < 23)
86aa551c 2531
adce950d 2532\f
93e0bed6 2533* Changes in Emacs 24.3 on Non-Free Operating Systems
9078ead6 2534
4e98ad15 2535** Cygwin builds can use the native MS Windows user interface.
823b2fb6 2536Pass `--with-w32' to configure. The default remains the X11 interface.
53a63be6 2537
1a9c6830 2538** Two new functions are available in Cygwin builds:
6e9f7997
DC
2539`cygwin-convert-file-name-from-windows' and
2540`cygwin-convert-file-name-to-windows'. These functions allow Lisp
2541code to access the Cygwin file-name mapping machinery to convert
2542between Cygwin and Windows-native file and directory names.
de6e3a60 2543
4e98ad15 2544** When invoked with the -nw switch to run on the Windows text-mode terminal,
1ab0c851 2545Emacs now supports `mouse-highlight', help-echo (in the echo area), and
4e98ad15
GM
2546`mouse-autoselect-window'.
2547
1a9c6830 2548** On MS Windows Vista and later Emacs now supports symbolic links.
4e98ad15 2549
823b2fb6 2550** On MS Windows, you can pass `--without-libxml2' to configure.bat to omit
4e98ad15
GM
2551support for libxml2, even if its presence is detected.
2552
4e98ad15
GM
2553** On Mac OS X, the Nextstep port requires OS X 10.4 or later.
2554
823b2fb6 2555** On Mac OS X, configure no longer automatically adds the Fink "/sw"
4e98ad15
GM
2556directories to the search path. You must add them yourself if you want them.
2557
2a1e2476
GM
2558\f
2559* Changes in Emacs 24.2
2560
5190da91 2561** This is mainly a bug-fix release.
6dad7178 2562
9078ead6 2563\f
eb199145 2564* Installation Changes in Emacs 24.1
09e18d03 2565
31fd3586
GM
2566** Emacs can be compiled with Gtk+ 3.0 if you pass --with-x-toolkit=gtk3
2567to configure. Note that other libraries used by Emacs, RSVG and GConf,
2568also depend on Gtk+. You can disable them with --without-rsvg and
2569--without-gconf.
338648ad 2570
31fd3586
GM
2571** Emacs can be compiled with GnuTLS support.
2572This happens by default if a suitably recent version of the library is
2573found at build time. To prevent this, use the configure option
2574`--without-gnutls'. See below for GnuTLS features.
338648ad 2575
31fd3586
GM
2576** Emacs can be compiled with SELinux support.
2577This happens by default if a suitably recent version of the library is
2578found at build time. To prevent this, use the configure option
2579`--without-selinux'. See below for SELinux features.
aded53ff 2580
31fd3586
GM
2581** Emacs can be compiled with ImageMagick support.
2582This happens by default if a suitably recent version of the library is
2583found at build time. To prevent this, use the configure option
2584`--without-imagemagick'. See below for ImageMagick features.
c1f10868 2585This feature is not available for the Nextstep or MS ports.
d9170db5 2586
043efd56
GM
2587** Emacs can be compiled with libxml2 support.
2588This happens by default if a suitably recent version of the library is
2589found at build time. To prevent this, use the configure option
2590`--without-xml2'. See below for libxml2 features.
2591
7d301ae6
CY
2592** By default, the installed Info and man pages are compressed.
2593You can disable this by configuring --without-compress-info.
2594
7d301ae6 2595** New configure option --with-wide-int.
81eafe29 2596With it, Emacs integers typically have 62 bits, even on 32-bit machines.
0a768890
PE
2597On 32-bit hosts, this raises the limit on buffer sizes from about 512 MiB
2598to about 2 GiB.
81eafe29 2599
7d301ae6 2600** New configure options: --with-mmdf, --with-mail-unlink, --with-mailhost.
31fd3586
GM
2601These provide no new functionality, they just remove the need to edit
2602lib-src/Makefile by hand in order to use the associated features.
2603
7d301ae6 2604** New configure option --enable-use-lisp-union-type.
31fd3586
GM
2605This is only useful for Emacs developers to debug certain types of bugs.
2606This is not a new feature; only the configure flag is new.
041d709f
CY
2607
2608** The standalone programs digest-doc and sorted-doc are removed.
2609Emacs now uses Lisp commands `doc-file-to-man' and `doc-file-to-info'.
2610
041d709f
CY
2611** The standalone program `fakemail' is removed.
2612If you need it, feedmail.el provides a superset of the functionality.
2613
0bfd685e 2614\f
eb199145 2615* Startup Changes in Emacs 24.1
4a263588 2616
198a7a97 2617** The --unibyte, --multibyte, --no-multibyte, and --no-unibyte
adbf62ff
GM
2618command line arguments, and the EMACS_UNIBYTE environment variable, no
2619longer have any effect. (They were declared obsolete in Emacs 23.)
198a7a97 2620
66b7b0fe 2621** New command line option `--no-site-lisp' removes site-lisp directories
1b5e5b0c
GM
2622from load-path. -Q now implies this. This option does not affect the
2623EMACSLOADPATH environment variable (and hence has no effect for
c8d59ba3 2624Nextstep builds).
66b7b0fe 2625
0bfd685e 2626\f
eb199145 2627* Changes in Emacs 24.1
7841339b 2628
a2a25d24 2629** Completion
fdeb32ec 2630
dfdb4cad
CY
2631*** Many packages now use the `completion-at-point' command,
2632rather than implementing separate completion commands.
2633
de0bde62 2634*** `completion-at-point' now handles tags and semantic completion.
dfdb4cad 2635
a2a25d24
SM
2636*** Completion in a non-minibuffer now tries to detect the end of completion
2637and pops down the *Completions* buffer accordingly.
dfdb4cad
CY
2638
2639*** New option `completion-cycle-threshold' allows completion cycling.
2640
2641*** New option `completion-category-overrides' for overriding the
2c719188 2642default completion style in certain circumstances.
dfdb4cad 2643
a2a25d24 2644*** New completion style `substring'.
dfdb4cad
CY
2645
2646*** Completion of buffer names uses `substring' completion by default.
2647
2648*** The option `widget-complete-field' has been removed.
620c53a6 2649
6870aaef 2650** Mail changes
dfdb4cad 2651
7d301ae6
CY
2652*** The first time you try sending mail, Emacs asks for a mail method.
2653This is implemented by a new default for `send-mail-function', which
2654is `sendmail-query-once'. This offers to use the smtpmail package, or
2655to use the old defaults relying on external mail facilities
2656(`sendmail-send-it' on GNU/Linux and other Unix-like systems, and
2657`mailclient-send-it' on Windows).
dfdb4cad 2658
e78e7e48
CY
2659*** Typing `C-c m' in the buffer made by `M-x report-emacs-bug'
2660transfers the report to your desktop's preferred mail client, if there
2661is one. This uses either the "xdg-email" utility, or Mac OS's "open"
2662command.
dfdb4cad 2663
7d301ae6
CY
2664*** See Changes in Specialized Modes and Packages for SMTPmail changes
2665and Mail mode changes
3f88cd72 2666
041d709f 2667** Emacs server and client changes
dfdb4cad 2668
7d301ae6 2669*** New option `server-port' specifies the port for TCP Emacs servers.
dfdb4cad 2670
041d709f 2671*** New emacsclient argument -q/--quiet suppresses some status messages.
dfdb4cad 2672
7d301ae6
CY
2673*** New emacsclient argument --frame-parameters specifies the frame
2674parameters of any newly-created graphical frame.
dfdb4cad
CY
2675
2676*** If emacsclient shuts down due to Emacs signaling an error,
2677its exit status is 1.
2678
041d709f
CY
2679*** New emacsclient argument --parent-id ID.
2680This opens a client frame in parent X window ID, via XEmbed, similar
2681to the --parent-id argument to Emacs.
2682
d0ce9f8c
MB
2683** Internationalization changes
2684
d0ce9f8c 2685*** Emacs now supports display and editing of bidirectional text.
7d301ae6
CY
2686Right-to-left (RTL) scripts, such as Arabic, Farsi, and Hebrew, are
2687displayed in the correct visual order as expected by users of those
dfdb4cad
CY
2688scripts. The display reordering is a "full bidirectionality" class
2689implementation of the Unicode Bidirectional Algorithm (UBA). Buffers
2690with no RTL text should look exactly the same as before.
f4b6ba46 2691
041d709f 2692**** New buffer-local variable `bidi-display-reordering'.
7d301ae6 2693To disable display reordering in a buffer, change this to nil.
d20e1419 2694
041d709f
CY
2695**** New buffer-local variable `bidi-paragraph-direction'.
2696If nil (the default), Emacs determines the base direction of each
dfdb4cad
CY
2697paragraph from its text, as specified by the UBA. Setting the value
2698to `right-to-left' or `left-to-right' forces a base direction on each
2699paragraph.
f4b6ba46 2700
7d301ae6
CY
2701Paragraphs with right-to-left base direction are displayed starting at
2702the right window edge.
f1816485 2703
dfdb4cad
CY
2704*** Enhanced support for characters with no glyphs in available fonts,
2705or, on text terminals, characters that cannot be encoded by the
2706terminal coding system. The new option `glyphless-char-display-control'
2707specifies how to display them: as a hexadecimal code in a box, a thin
27081-pixel space, an empty box, etc.
d0ce9f8c 2709
9702b7a1
GM
2710*** New input methods for Farsi and Bulgarian
2711(farsi-isiri-9147, farsi-transliterate-banan, bulgarian-alt-phonetic).
041d709f 2712
939db9ac
CY
2713*** `nobreak-char-display' now also highlights Unicode hyphen chars
2714(U+2010 and U+2011).
2715
7d301ae6 2716*** New Hebrew translation of the Emacs Tutorial.
31fd3586
GM
2717Type `C-u C-h t' to choose it in case your language setup doesn't
2718automatically select it.
2719
7d301ae6
CY
2720** An Emacs Lisp package manager is now included.
2721This is a convenient way to download and install additional packages,
2722from a package repository at http://elpa.gnu.org.
dfdb4cad 2723
7d301ae6
CY
2724*** M-x list-packages shows a list of packages, which can be
2725selected for installation.
dfdb4cad 2726
7d301ae6 2727*** New command `describe-package', bound to `C-h P'.
dfdb4cad 2728
7d301ae6
CY
2729*** By default, all installed packages are loaded automatically when
2730Emacs starts up. To disable this, set `package-enable-at-startup' to
2731nil. To specify the packages to load, customize `package-load-list'.
16a91140 2732
dfdb4cad
CY
2733** Custom theme changes
2734
7d301ae6
CY
2735*** New command `M-x customize-themes', which provides a convenient
2736interface for enabling and disabling Custom themes.
dfdb4cad 2737
7d301ae6 2738*** New option `custom-theme-load-path' is the load path for themes.
dfdb4cad
CY
2739Emacs no longer looks for Custom themes in `load-path'. The default
2740value of `custom-theme-load-path' says to look for themes in
2741`custom-theme-directory', followed by a subdirectory of
2742`data-directory' named "themes/", which contains a small selection of
2743built-in Custom themes.
2744
7d301ae6
CY
2745*** New option `custom-safe-themes' records known-safe theme files.
2746If a theme is not in this list, Emacs queries before loading it, and
2747offers to save the theme to `custom-safe-themes' automatically. By
2748default, all themes included in Emacs are treated as safe.
b7d65a5f 2749
7d301ae6 2750** Improved GTK integration
dfdb4cad 2751
7d301ae6 2752*** GTK scroll-bars are now placed on the right by default.
dfdb4cad
CY
2753The function `set-scroll-bar-mode' can change this.
2754
7d301ae6 2755*** GTK tool bars can have just text, just images or images and text.
dfdb4cad
CY
2756Customize `tool-bar-style' to choose the style. On a Gnome desktop,
2757the default is taken from desktop settings.
2758
2759*** GTK tool bars can be placed on any edge of the frame.
7d301ae6
CY
2760The frame-parameter tool-bar-position controls this. It takes the
2761values top, left, right or bottom. The Options => Show/Hide menu has
2762entries for this.
dfdb4cad 2763
7d301ae6
CY
2764*** The default colors for selected text (the `region' face) are taken
2765from the GTK theme when Emacs is built with GTK.
dfdb4cad 2766
7d301ae6
CY
2767*** Emacs uses GTK tooltips by default if built with GTK.
2768You can disable this by changing `x-gtk-use-system-tooltips' to nil.
a5bee597 2769
dfdb4cad
CY
2770** Graphical interface changes
2771
2772*** On graphical displays, the mode-line no longer ends in dashes.
2773Also, the first dash (which does not indicate anything) is just
2774displayed as a space.
2775
2776*** `menu-bar-select-buffer-function' lets you choose another operation
2777instead of `switch-to-buffer' when selecting an item in the Buffers menu.
2778
2779*** Lucid menus and dialogs can display antialiased fonts if Emacs is
2780built with Xft. These fonts can be set via X resources, for example:
2781Emacs.pane.menubar.font: Courier-12
2782
7d301ae6 2783** Exiting changes
dfdb4cad 2784
7d301ae6 2785*** Emacs now calls `kill-emacs' if it receives SIGTERM or SIGHUP,
dfdb4cad
CY
2786or if it receives a SIGINT signal in batch mode.
2787
7d301ae6
CY
2788*** `kill-emacs-hook' is now also run in batch mode.
2789Third-party code which adds to `kill-emacs-hook' should check if they
2790do the right thing in batch mode.
9c524fcb 2791
041d709f 2792** Scrolling changes
dfdb4cad 2793
041d709f 2794*** New scrolling commands `scroll-up-command' and `scroll-down-command'
0a19a6f8 2795(bound to C-v/[next] and M-v/[prior]) do not signal errors at top/bottom
7d301ae6 2796of buffer at first key-press (instead they move to top/bottom of buffer)
550f41cd 2797when `scroll-error-top-bottom' is non-nil.
dfdb4cad
CY
2798
2799*** New option `scroll-error-top-bottom' (see above).
2800
041d709f 2801*** New scrolling commands `scroll-up-line' and `scroll-down-line'
5a97d2da 2802scroll a line instead of full screen.
dfdb4cad 2803
041d709f 2804*** New property `scroll-command' should be set on a command's symbol to
b2957ea8 2805define it as a scroll command affected by `scroll-preserve-screen-position'.
dfdb4cad 2806
041d709f 2807*** If you customize `scroll-conservatively' to a value greater than 100,
d0f69533
EZ
2808Emacs will never recenter point in the window when it scrolls due to
2809cursor motion commands or commands that move point (e.f., `M-g M-g').
2810Previously, you needed to use `most-positive-fixnum' as the value of
2811`scroll-conservatively' to achieve the same effect.
dfdb4cad 2812
7d301ae6 2813*** "Aggressive" scrolling now honors the scroll margins.
d0f69533
EZ
2814If you customize `scroll-up-aggressively' or
2815`scroll-down-aggressively' and move point off the window, Emacs now
2816scrolls the window so as to avoid positioning point inside the scroll
2817margin.
2818
7d301ae6
CY
2819** Basic SELinux support has been added.
2820This requires Emacs to be linked with libselinux at build time.
f1a5d776 2821
dfdb4cad
CY
2822*** Emacs preserves the SELinux file context when backing up.
2823Also, the function `copy-file' has an extra optional argument for
2824preserving SELinux context, and the return value of `backup-buffer'
2825now includes the SELinux context.
f0bf7c8e 2826
dfdb4cad 2827*** New functions `file-selinux-context' and `set-file-selinux-context'
7d301ae6 2828get and set the SELinux context of a file.
44198b6e 2829
7d301ae6 2830** Trash changes
dfdb4cad 2831
7d301ae6
CY
2832*** `delete-by-moving-to-trash' now only affects commands that specify
2833trashing. This avoids inadvertently trashing temporary files.
dfdb4cad 2834
7d301ae6
CY
2835*** Calling `delete-file' or `delete-directory' with a prefix argument
2836now forces true deletion, regardless of `delete-by-moving-to-trash'.
278f6845 2837
041d709f 2838** File- and directory-local variable changes
dfdb4cad 2839
041d709f
CY
2840*** You can stop directory local vars from applying to subdirectories.
2841Add an element (subdirs . nil) to the alist portion of any variables
2842settings to indicate that the section should not apply to
2843subdirectories.
dfdb4cad 2844
041d709f
CY
2845*** Directory local variables can apply to some file-less buffers.
2846Affected modes include dired, vc-dir, and log-edit. For example,
2847adding "(diff-mode . ((mode . whitespace)))" to .dir-locals.el will
2848turn on `whitespace-mode' for *vc-diff* buffers. Modes should call
2849`hack-dir-local-variables-non-file-buffer' to support this.
dfdb4cad 2850
041d709f
CY
2851*** Using "mode: MINOR-MODE" to enable a minor mode is deprecated.
2852Instead, use "eval: (minor-mode 1)".
c136e5cd 2853
7b447e9b
GM
2854*** The variable `inhibit-first-line-modes-regexps' has been renamed
2855to `inhibit-local-variables-regexps'. As the name suggests, it now
dfdb4cad
CY
2856applies to ALL file local variables, not just -*- lines. The
2857associated `inhibit-first-line-modes-suffixes' has been renamed in the
2858corresponding way.
5d907d6c 2859
0a2132ba
CY
2860** Window changes
2861
91b65361
CY
2862*** The `quit-window' command now restores the last buffer displayed
2863in the quitted window.
2864
0a2132ba
CY
2865*** Resizing an Emacs frame now preserves proportional window sizes,
2866modulo restrictions like window minimum sizes and fixed-size windows.
2867
2868*** The behavior of `display-buffer' is now customizable in detail.
dfdb4cad 2869
0a2132ba
CY
2870**** New option `display-buffer-base-action' specifies a list of
2871user-determined display "actions" (functions and optional arguments
2872for choosing the displaying window).
2873
2874This takes precedence over the default display action, which is
2875specified by `display-buffer-fallback-action'.
2876
2877**** New option `display-buffer-alist' maps buffer name regexps to
2878display actions, taking precedence over `display-buffer-base-action'.
2879
a0c2d0ae
MR
2880*** New option `window-combination-limit'.
2881The new option `window-combination-limit' allows to return the space
2882obtained for resizing or creating a window more reliably to the window
2883from which such space was obtained.
0a2132ba 2884
a0c2d0ae
MR
2885*** New option `window-combination-resize'.
2886The new option `window-combination-resize' allows to split a window that
2887otherwise cannot be split because it's too small by stealing space from
2888other windows in the same combination. Subsequent resizing or deletion
2889of the window will resize all windows in the same combination as well.
0a2132ba 2890
91b65361
CY
2891*** New option `frame-auto-hide-function' lets you choose between
2892iconifying or deleting a frame when burying a buffer in a dedicated
2893frame, or quitting a window showing a buffer in a frame of its own.
2894
0a2132ba 2895*** New commands `maximize-window' and `minimize-window'.
53964682 2896These maximize and minimize the size of a window within its frame.
0a2132ba 2897
0a2132ba
CY
2898*** New commands `switch-to-prev-buffer' and `switch-to-next-buffer'.
2899These functions allow to navigate through the live buffers that have
2900been shown in a specific window.
2901
7d301ae6 2902** Minibuffer changes
dfdb4cad 2903
7d301ae6 2904*** The inactive minibuffer has its own major mode `minibuffer-inactive-mode'.
104dc9c6
GM
2905This is handy for minibuffer-only frames, and is also used for the feature
2906where mouse-1 pops up *Messages*"', which can now easily be changed.
041d709f 2907
7d301ae6 2908*** Minibuffers set `truncate-lines' to nil.
f66eca26 2909If you want to change the value to something else, you could use
7d301ae6
CY
2910for example `minibuffer-setup-hook'.
2911
7d301ae6
CY
2912** `auto-mode-case-fold' is now enabled by default.
2913
7d301ae6 2914** `backup-by-copying-when-mismatch' now defaults to t.
f66eca26 2915
dfdb4cad
CY
2916** New basic faces `error', `warning', `success'.
2917These are used to highlight text indicating failure, caution or
2918successful operation.
2919
2920** New option `list-colors-sort' defines the color sort order
2921for `list-colors-display'.
2922
2923** The variable `focus-follows-mouse' now always defaults to nil.
2924
0bfd685e 2925\f
eb199145 2926* Editing Changes in Emacs 24.1
b350bdf2 2927
892777ba 2928** Search changes
dfdb4cad
CY
2929
2930*** C-y in Isearch is now bound to `isearch-yank-kill', instead of
2931`isearch-yank-line'.
2932
2933*** M-y in Isearch is now bound to `isearch-yank-pop', instead of
2934`isearch-yank-kill'.
2935
2936*** M-s C-e in Isearch is now bound to `isearch-yank-line'.
2937
b2b0776e 2938** New commands `count-words-region' and `count-words'.
dfdb4cad 2939
10607bea
CY
2940*** M-= is bound to `count-words-region', not `count-lines-region'.
2941The `count-words-region' command, when called interactively, reports
2942the number of lines, words, and characters in the region. It is a
2943superset of the old `count-lines-region', which is now an obsolete
2944alias for it.
ea4f7750 2945
ec9da840 2946** The command `just-one-space' (M-SPC), if given a negative argument,
1c708c1a
CY
2947also deletes newlines around point.
2948
b9229673 2949** Deletion changes
dfdb4cad 2950
b9229673 2951*** New option `delete-active-region'.
ddb54206 2952If non-nil, [delete] and DEL delete the region if it is active and no
dfdb4cad 2953prefix argument is given. If set to `kill', those commands kill
ddb54206 2954instead.
dfdb4cad 2955
59ee0542 2956*** New command `delete-forward-char', bound to [delete].
42d9cffa
CY
2957This is meant for interactive use, and obeys `delete-active-region'.
2958The command `delete-char' does not obey `delete-active-region'.
dfdb4cad 2959
b9229673
CY
2960*** `delete-backward-char' is now a Lisp function.
2961Apart from obeying `delete-active-region', its behavior is unchanged.
7d301ae6
CY
2962However, the byte compiler now warns if it is called from Lisp; Lisp
2963callers should use delete-char with a negative argument instead.
dfdb4cad 2964
b9229673
CY
2965*** The option `mouse-region-delete-keys' has been deleted.
2966
f9d71b42
CY
2967** Selection changes.
2968
7d301ae6
CY
2969The default handling of clipboard and primary selections has been
2970changed to conform with modern X applications. In short, most
2971commands for killing and yanking text now use the clipboard, while
2972mouse commands use the primary selection.
b1ab31ae
CY
2973
2974In the following, we provide a list of these changes, followed by a
2975list of steps to get the old behavior back if you prefer that.
2976
b1ab31ae
CY
2977*** `select-active-regions' now defaults to t.
2978Merely selecting text (e.g. with drag-mouse-1) no longer puts it in
963578d3 2979the kill ring. The selected text is put in the primary selection, if
b1ab31ae
CY
2980the system possesses a separate primary selection facility (e.g. X).
2981
2982**** `select-active-regions' also accepts a new value, `only'.
2983This means to only set the primary selection for temporarily active
2984regions (usually made by mouse-dragging or shift-selection);
2985"ordinary" active regions, such as those made with C-SPC followed by
2986point motion, do not alter the primary selection.
2987
963578d3
CY
2988**** `mouse-drag-copy-region' now defaults to nil.
2989
b1ab31ae
CY
2990*** mouse-2 is now bound to `mouse-yank-primary'.
2991This pastes from the primary selection, ignoring the kill-ring.
2992Previously, mouse-2 was bound to `mouse-yank-at-click'.
dfdb4cad 2993
b1ab31ae 2994*** `x-select-enable-clipboard' now defaults to t on all platforms.
dfdb4cad 2995
b1ab31ae
CY
2996*** `x-select-enable-primary' now defaults to nil.
2997Thus, commands that kill text or copy it to the kill-ring (such as
2998M-w, C-w, and C-k) also use the clipboard---not the primary selection.
2999
3000**** The "Copy", "Cut", and "Paste" items in the "Edit" menu are now
dfdb4cad 3001exactly equivalent to M-w, C-w, and C-y respectively.
b1ab31ae
CY
3002
3003**** Note that on MS-Windows, `x-select-enable-clipboard' was already
3004non-nil by default, as Windows does not support the primary selection
3005between applications.
3006
3007*** To return to the previous behavior, do the following:
dfdb4cad 3008
104c2fe9 3009**** Change `select-active-regions' to nil.
b1ab31ae
CY
3010**** Change `mouse-drag-copy-region' to t.
3011**** Change `x-select-enable-primary' to t (on X only).
3012**** Change `x-select-enable-clipboard' to nil.
3013**** Bind `mouse-yank-at-click' to mouse-2.
f9d71b42 3014
084e6df3 3015*** Support for X cut buffers has been removed.
dfdb4cad 3016
3fd50d5c
CY
3017*** X clipboard managers are now supported.
3018To inhibit this, change `x-select-enable-clipboard-manager' to nil.
4b80f674 3019
dfdb4cad
CY
3020** New command `C-x r N' (`rectangle-number-lines') numbers the lines
3021in the current rectangle. With a prefix argument, this prompts for a
3022number to count from and for a format string.
99f053cf 3023
7d301ae6 3024** `redisplay-dont-pause' now defaults to t.
6bf7006f
EZ
3025This makes Emacs feel more responsive to editing commands that arrive
3026at high rate, e.g. if you lean on some key, because stopping redisplay
3027in the middle (when this variable is nil) forces more expensive
3028updates later on, and Emacs appears to be unable to keep up.
3029
e70b5064
CY
3030** The behavior of <TAB> for active regions in Text mode has changed.
3031In Text and related modes, typing <TAB> (`indent-for-tab-command')
3032when the region is active causes Emacs to indent all the lines in the
3033region, aligning them with the line previous to the first line in the
3034region (or with the left margin if there is no previous line).
3035
dfdb4cad
CY
3036** When `occur' is called with a prefix argument, matching strings are
3037collected into the `*Occur*' buffer without line numbers. If there
3038are parenthesized subexpressions in the specified regexp, `occur'
3039reads replacement text that may contain \\& and \\N whose convention
3040follows `replace-match'.
3041
9bae34bf 3042\f
eb199145 3043* Changes in Specialized Modes and Packages in Emacs 24.1
efeb796b 3044
041d709f 3045** Archive Mode has basic support for browsing and updating 7z archives.
d76674bb 3046
b7c3692a 3047** BibTeX mode
dfdb4cad 3048
2de69e00 3049*** BibTeX mode now supports biblatex.
7d301ae6
CY
3050Use the variable `bibtex-dialect' to select different BibTeX dialects.
3051`bibtex-entry-field-alist' is now an obsolete alias for
3052`bibtex-BibTeX-entry-alist'.
3053
dfdb4cad
CY
3054*** New command `bibtex-search-entries', bound to C-c C-a.
3055
b7c3692a 3056*** New `bibtex-entry-format' option `sort-fields', disabled by default.
dfdb4cad 3057
022fe7ce
RW
3058*** New variable `bibtex-search-entry-globally'.
3059
7d301ae6 3060** Browse-url
dfdb4cad 3061
7d301ae6 3062*** New option `browse-url-mailto-function' specifies how to handle "mailto:"s.
dfdb4cad 3063
7d301ae6
CY
3064*** The default browser used by the package is now the "xdg-open" program,
3065on platforms that support it. This calls your desktop's preferred browser.
3066
86e100a6
GM
3067** Calc
3068
3069*** Support for musical notes.
3070
3071*** Support for logarithmic units.
3072
3073*** No longer uses the tex prefix for TeX specific unit names when
3074using TeX or LaTeX mode.
3075
3076*** New option to highlight selections using faces.
3077
3078*** `calc-histogram' has the option of using a vector to determine the bins.
3079
3080*** New "O" option prefix.
3081
3082*** Use the "O" prefix to "d r" (`calc-radix') to turn on twos-complement mode.
3083
cf16af42
GM
3084** Calendar, Diary, and Appt
3085
7d301ae6 3086*** Diary entries can contain non-printing "comments".
548d0a63
GM
3087See the variable `diary-comment-start'.
3088
5006e634
GM
3089*** Appointments can specify their individual warning times.
3090See the variable `appt-warning-time-regexp'.
3091
0a2bb1a9
GM
3092*** The function specified by `appt-disp-window-function' may be passed
3093lists of arguments if multiple appointments are due at similar times.
3094If you are using a custom function for this, you should update it.
3095
7454f200
GM
3096*** New function `diary-hebrew-birthday'.
3097
e565dd37
GM
3098*** Elements of `calendar-day-abbrev-array' and `calendar-month-abbrev-array'
3099may no longer be nil, but must all be strings.
3100
7d301ae6
CY
3101*** The obsolete (since Emacs 22.1) method of enabling the appt
3102package by adding `appt-make-list' to `diary-hook' has been removed.
3103Use `appt-activate' instead.
cf16af42 3104
cf16af42
GM
3105*** Some appt variables (obsolete since Emacs 22.1) have been removed:
3106appt-issue-message (use the function appt-activate)
3107appt-visible/appt-msg-window (use the variable appt-display-format)
3108
cf16af42
GM
3109*** Some diary function aliases (obsolete since Emacs 22.1) have been removed:
3110view-diary-entries, list-diary-entries, show-all-diary-entries
3111
551b046f 3112** CC Mode
dfdb4cad 3113
551b046f 3114*** New feature to "guess" the style in an existing buffer.
7d301ae6 3115The main entry point is M-x c-guess.
041d709f 3116
551b046f
AM
3117*** Java Mode now supports Java 5.0 (Tiger) and 6 (Mustang).
3118
dfdb4cad 3119*** `c-beginning-of-defun' and `c-end-of-defun' now respect nested scopes.
551b046f
AM
3120Thus C-M-a will, by default, go to the beginning of the immediate function,
3121not the top level.
3122
dfdb4cad 3123*** "Macros with semicolons" can be registered for correct indentation.
551b046f
AM
3124Where such a macro ends a line (no semicolon) the next statement is no longer
3125parsed as a statement continuation.
3126
dfdb4cad 3127** Comint and modes derived from it use the standard completion code.
041d709f
CY
3128
3129** Compilation mode
dfdb4cad 3130
7d301ae6 3131*** Compilation mode can be used without Font Lock mode.
041d709f
CY
3132`compilation-parse-errors-function' is now obsolete.
3133
dfdb4cad 3134*** New variable `compilation-filter-start', which is bound while
7d301ae6
CY
3135`compilation-filter-hook' runs. It records the start position of the
3136text inserted by `compilation-filter'.
041d709f 3137
47a6a35f
GM
3138*** `compilation-error-screen-columns' and `compilation-first-column'
3139are obeyed in the editing buffer. So programming language modes can
7d301ae6
CY
3140set them, whereas previously only the value in the *Compilation*
3141buffer was used.
1dce7193 3142
52834b6b
CY
3143** Customize
3144
3145*** Customize buffers now contain a search field.
3146The search is performed using `customize-apropos'.
7d301ae6 3147To turn off the search field, set `custom-search-field' to nil.
52834b6b 3148
8d5dd370 3149*** Options in customize group buffers start out hidden if not customized.
52834b6b
CY
3150Use the arrow to the left of the option name to toggle visibility.
3151
3152*** custom-buffer-sort-alphabetically now defaults to t.
3153
3154*** The color widget now has a "Choose" button, which allows you to
7d301ae6 3155choose a color via `list-colors-display'.
52834b6b 3156
041d709f
CY
3157** D-Bus
3158
5da3be7f
GM
3159*** It is now possible to access buses other than the default system
3160or session bus.
041d709f 3161
7d301ae6 3162*** The `dbus-register-method' and `dbus-register-property' functions
5da3be7f 3163optionally do not register names.
041d709f 3164
7d301ae6 3165*** The new function `dbus-register-service' registers a known service
dfdb4cad 3166name on a D-Bus without also registering a property or a method.
041d709f 3167
f5d6548a 3168** Dired-x
425a25f1 3169
7d301ae6
CY
3170*** C-x C-j (`dired-jump') and C-x 4 C-j (`dired-jump-other-window'),
3171if called with a prefix argument, read a file name from the minibuffer
3172instead of using the current buffer.
f5d6548a 3173
7d301ae6 3174*** The "dired local variables" feature of Dired-x is obsolete.
817b48a7 3175The standard directory local variables feature replaces it.
8117868f 3176
041d709f 3177** ERC changes
7492acc9 3178
c4077254
GM
3179*** New options `erc-autojoin-timing' and `erc-autojoin-delay',
3180controlling attempts to autojoin a channel.
041d709f
CY
3181
3182*** New variable `erc-coding-system-precedence': If we use `undecided'
3183as the server coding system, this variable will then be consulted.
3184The default is to decode strings that can be decoded as utf-8 as
3185utf-8, and do the normal `undecided' decoding for the rest.
7492acc9 3186
041d709f 3187** Eshell changes
7492acc9 3188
05f77e38
GM
3189*** The default value of `eshell-directory-name' has changed
3190to be an "eshell" directory in `user-emacs-directory'.
3191The old "~/.eshell/" directory is still used if it exists, though.
041d709f
CY
3192
3193** gdb-mi
dfdb4cad
CY
3194
3195*** The M-x gdb command now uses the GDB Machine Interface protocol.
05f77e38
GM
3196It now supports multithread non-stop debugging and simultaneous
3197debugging of several threads.
7492acc9 3198
18af70d0
CY
3199** Image mode
3200
05f77e38
GM
3201*** RET (`image-toggle-animation') toggles animation, if applicable.
3202Animation plays once, unless the option `image-animate-loop' is non-nil.
18af70d0 3203
041d709f 3204** Info
723ee192 3205
7d301ae6 3206*** New command M-x info-display-manual displays a named Info manual.
2ebc3b94
GM
3207If that manual is already visited in some Info buffer, it displays
3208that buffer. (This is handy if you have many manuals in many *info*
3209buffers, and don't remember the name of the buffer visiting the manual
3210you want to consult.) Otherwise, it loads and displays the manual.
691cf4a0 3211
24ea72d3
EZ
3212*** `e' is now bound to `end-of-buffer' rather than to `Info-edit'.
3213This is for compatibility with the stand-alone Info reader program,
3214and also because `Info-edit' is a rarely used command that is disabled
3215by default.
3216
7d301ae6 3217** Mail mode changes (not Message mode)
dfdb4cad 3218
7d301ae6 3219*** New command M-x mail-add-attachment for adding MIME attachments
7d301ae6 3220
dfdb4cad
CY
3221*** The command M-x mail-attach-file was renamed to M-x mail-insert-file.
3222(Its name is misleading, since it has nothing to do with MIME
3223attachments.) The old name is now an obsolete alias to the new name.
3224
f2c3a9eb 3225** MH-E has been updated to MH-E version 8.3.1.
041d709f 3226See MH-E-NEWS for details.
37221432 3227
041d709f 3228** Modula-2 mode provides auto-indentation.
37221432 3229
041d709f 3230** mpc.el: Can use pseudo tags of the form tag1|tag2 as a union of two tags.
3c3d4f5b 3231
5d1ac394 3232** nXML mode no longer binds C-RET to `nxml-complete'.
dfdb4cad
CY
3233Completion is now performed via `completion-at-point', bound to C-M-i
3234or M-TAB. If `nxml-bind-meta-tab-to-complete-flag' is non-nil (the
3235default), this performs tag completion.
5d1ac394 3236
f2c3a9eb
CY
3237** Org mode has been updated to version 7.8.09.
3238See ORG-NEWS for details.
3239
041d709f 3240** Prolog mode has been completely revamped, with lots of additional
7d301ae6
CY
3241functionality such as more intelligent indentation, electricity,
3242support for more variants, including Mercury, and a lot more.
041d709f
CY
3243
3244** Rmail
3245
3246*** The command `rmail-epa-decrypt' decrypts OpenPGP data
3247in the Rmail incoming message.
3248
50419064
GM
3249*** The variable `rmail-message-filter' no longer has any effect.
3250This change was made in Emacs 23.1 but was not advertised at the time.
3251Try using `rmail-show-message-hook' instead.
3252
717a1362 3253** Shell mode
dfdb4cad
CY
3254
3255*** M-x shell prompts for the shell path name if the default directory
3256is a remote file name and neither the environment variable $ESHELL nor
3257the variable `explicit-shell-file-name' is set.
3258
3259*** TAB is now bound to the standard `completion-at-point' command,
3260which now implements the pcomplete rules for shell command completion.
717a1362 3261
7d301ae6
CY
3262** SMTPmail
3263
dfdb4cad 3264*** SMTPmail now uses encrypted connections (via STARTTLS) by default
7d301ae6
CY
3265if the mail server supports them. This uses either built-in GnuTLS
3266support, or the starttls.el library. Customize `smtpmail-stream-type'
3267to change this.
3268
7d301ae6
CY
3269*** The variable `smtpmail-auth-credentials' has been removed.
3270By default, the information is now stored in the file ~/.authinfo.
dfdb4cad
CY
3271This was the default value of smtpmail-auth-credentials. If you had
3272customized smtpmail-auth-credentials to a list of user names and
3273passwords, those settings are not used. During your first connection
3274to the smtp server, Emacs will prompt for the user name and password,
3275and offer to save them to ~/.authinfo. Or you can manually copy the
3276credentials to ~/.authinfo. For example, if you had
7d301ae6
CY
3277
3278 (setq smtpmail-auth-credentials
3279 '(("mail.example.org" 25 "jim" "s!cret")))
3280
3281then the equivalent line in ~/.authinfo would be
3282
3283 machine mail.example.org port 25 login jim password s!cret
3284
3285See the auth-source manual for more information, e.g. on encrypting
3286the credentials file.
3287
7d301ae6 3288*** The variable `smtpmail-starttls-credentials' has been removed.
dfdb4cad 3289If you had that set, you need to put
7d301ae6
CY
3290
3291 machine smtp.whatever.foo port 25 key "~/.my_smtp_tls.key" cert "~/.my_smtp_tls.cert"
3292
3293in your ~/.authinfo file instead.
3294
8ce192e3
LI
3295*** SMTPmail defaults to using the address in the From: header as the
3296SMTP MAIL FROM envelope. To override this, set `mail-envelope-from'
3297to the address you wish to use instead.
3298
34e8a2da 3299** SQL mode
041d709f 3300
34e8a2da
GM
3301*** New options `sql-port', `sql-connection-alist', `sql-send-terminator',
3302and `sql-oracle-scan-on'.
041d709f 3303
dfdb4cad 3304*** New options controlling prompting for login parameters.
34e8a2da
GM
3305Each supported product has a custom variable `sql-*-login-params',
3306which is a list of the parameters to be prompted for before a
3307connection is established.
041d709f
CY
3308
3309*** The command `sql-product-interactive' now takes a prefix argument,
34e8a2da 3310which causes it to prompt for an SQL product.
041d709f 3311
34e8a2da 3312*** Product-specific SQL interactive commands now take prefix arguments.
041d709f
CY
3313These commands (`sql-sqlite', `sql-postgres', `sql-mysql', etc.),
3314given a prefix argument, prompt for a name for the SQL interactive
3315buffer. This reduces the need for calling `sql-rename-buffer'.
3316
3317*** SQL interactive modes suppress command continuation prompts, and
3318replace tabs with spaces. The first change impacts multiple line SQL
3319statements entered with C-j between each line, statements yanked into
3320the buffer and statements sent with `sql-send-*' functions. The
34e8a2da
GM
3321second prevents the MySQL and Postgres interpreters from listing
3322object name completions when sent text via `sql-send-*' functions.
041d709f
CY
3323
3324*** New command `sql-connect' starts a predefined SQLi session,
3325using the login parameters from `sql-connection-alist'.
3326
3327*** New "Save Connection" menu item in SQLi buffers.
3328This gathers the login params specified for the SQLi session, if it
3329was not started by a connection, and saves them as a new connection.
3330
34e8a2da
GM
3331*** New commands for listing database objects and details:
3332sql-list-all and sql-list-table.
041d709f
CY
3333
3334*** An API for manipulating SQL product definitions has been added.
3335
3336** TeX modes
3337
3338*** latex-electric-env-pair-mode keeps \begin..\end matched on the fly.
412b9ee5 3339
459bba37 3340** Tramp
dfdb4cad 3341
7d301ae6 3342*** New inline access method "ksu" (kerberized su).
dfdb4cad 3343
459bba37 3344*** The following access methods are discontinued: "ssh1_old",
ea843702 3345"ssh2_old", "scp1_old", "scp2_old", "imap", "imaps" and "fish".
dfdb4cad 3346
b011fbfe
GM
3347*** The user option `remote-file-name-inhibit-cache' controls whether
3348remote file attributes are cached for better performance.
dfdb4cad 3349
58f74fe4
MA
3350*** The option `ange-ftp-binary-file-name-regexp' has changed its
3351default value to "".
dfdb4cad 3352
7d301ae6
CY
3353*** Handlers for `file-selinux-context' and `set-file-selinux-context'
3354for remote machines which support SELinux.
58f74fe4 3355
dfdb4cad 3356** New function `url-queue-retrieve', which behaves like url-retrieve,
a48ec60c
GM
3357but with limits (`url-queue-parallel-processes', `url-queue-timeout') on
3358the degree of parallelism.
177549d0 3359
0c32ce32
CY
3360** VC and related modes
3361
3362*** Support for pulling on distributed version control systems.
7d301ae6
CY
3363The command C-x v + (`vc-pull') runs a "pull" operation, if it is
3364supported (currently with Bzr, Git, and Mercurial), to update the
3365current branch and working tree. A prefix argument means to prompt
3366the user for specifics, e.g. a pull location.
0c32ce32 3367
dab3703d 3368*** `vc-update' is now an alias for `vc-pull'.
0c32ce32
CY
3369
3370*** Support for merging on distributed version control systems.
7d301ae6
CY
3371The command C-x v m (`vc-merge') now runs a "merge" operation, if it
3372is supported (currently with Bzr, Git, and Mercurial), to merge
3373changes from another branch into the current one. It prompts for
3374specifics, e.g. a merge source.
0c32ce32 3375
2afef60a 3376*** New option `vc-revert-show-diff' controls whether `vc-revert'
bbe43420 3377shows a diff while querying the user. It defaults to t.
2afef60a 3378
d4eb88c7
CY
3379*** Log entries in some Log View buffers can be toggled to display a
3380longer description by typing RET (log-view-toggle-entry-display).
dab3703d
GM
3381This is currently supported for Bzr, Git, and Mercurial (to support
3382another backend, define a `log-view-expanded-log-entry-function').
7d301ae6 3383In the Log View buffers made by C-x v L (`vc-print-root-log'), you can
d4eb88c7
CY
3384use this to display the full log entry for the revision at point.
3385
1c6c854e
CS
3386*** New command `vc-ediff' allows visual comparison of two revisions
3387of a file similar to `vc-diff', but using ediff backend.
3388
86c60681
CY
3389*** The option `vc-initial-comment' was removed in Emacs 23.2, but
3390this was not advertised at the time.
3391
86c60681
CY
3392*** `vc-toggle-read-only' is an obsolete alias for `toggle-read-only'.
3393Since Emacs 23, it has done the same thing as `toggle-read-only', but
80c6d77f
GM
3394this was not advertised at the time.
3395
041d709f
CY
3396** Obsolete modes
3397
23d70505
GM
3398*** abbrevlist.el
3399
f8ca9162 3400*** erc-hecomplete.el (use erc-pcomplete.el instead)
23d70505
GM
3401
3402*** partial-completion-mode (complete.el) is obsolete.
041d709f
CY
3403You can get a comparable behavior with:
3404(setq completion-styles '(partial-completion initials))
3405(setq completion-pcm-complete-word-inserts-delimiters t)
3406
23d70505
GM
3407*** pc-mode.el is obsolete (CUA mode is much more comprehensive).
3408
2c719188 3409*** pgg is obsolete (use EasyPG instead).
041d709f
CY
3410
3411*** sregex.el is obsolete, since rx.el is a strict superset.
3412
23d70505
GM
3413*** s-region.el and pc-select.el are obsolete.
3414They are superseded by shift-select-mode, enabled by default since 23.1.
3415
2c719188 3416*** vc-mcvs.el is obsolete (for lack of a maintainer).
ca5eed61 3417
0fe719e6
GM
3418** Miscellaneous
3419
05f77e38 3420*** The Landmark game is now invoked with `landmark', not `lm'.
c6ad2a4e 3421Its functions and variables have been similarly renamed.
05f77e38 3422
dfdb4cad 3423*** In `ido-file-completion-map', C-v is no longer bound to `ido-toggle-vc'.
05f77e38
GM
3424(This interfered with cua-mode.)
3425
9f678528
GM
3426*** f90.el has some support for Fortran 2008 syntax.
3427
0fe719e6
GM
3428*** `copyright-fix-years' can optionally convert consecutive years to ranges.
3429
5b3e6db8
GM
3430*** New command `nato-region' converts text to NATO phonetic alphabet.
3431
eb199145
GM
3432\f
3433* New Modes and Packages in Emacs 24.1
d445b3f8 3434
60e56523 3435** Occur Edit mode applies edits made in *Occur* buffers to the
8c0f49f0 3436original buffers. It is bound to "e" in Occur mode.
60e56523 3437
a075a2c5
GM
3438** New global minor mode electric-pair-mode.
3439When enabled, typing an open parenthesis automatically inserts the
3440matching closing one.
3441
3442** New global minor mode electric-indent-mode.
3443When enabled, typing certain characters triggers reindentation.
cd3308f3
GM
3444Major modes wishing to use this can set electric-indent-chars or
3445electric-indent-functions.
a075a2c5
GM
3446
3447** New global minor mode electric-layout-mode.
3448When enabled, typing certain characters automatically inserts newlines.
cd3308f3 3449Major modes wishing to use this can set electric-layout-rules.
3b843809 3450
a83ec3c9
CY
3451** tabulated-list.el provides a generic major mode for tabulated data,
3452from which other modes can be derived.
3453
d02c9bcd
SM
3454** pcase.el provides the ML-style pattern matching macro `pcase'.
3455
7725ebb7
MA
3456** secrets.el is an implementation of the Secret Service API, an
3457interface to password managers like GNOME Keyring or KDE Wallet. The
065f2743
MA
3458Secret Service API requires D-Bus for communication. The command
3459`secrets-show-secrets' offers a buffer with a visualization of the
3460secrets.
7725ebb7 3461
f9e78150
MA
3462** notifications.el provides an implementation of the Desktop
3463Notifications API. It requires D-Bus for communication.
3464
12fe5bcc
MA
3465** soap-client.el supports access to SOAP web services from Emacs.
3466soap-inspect.el is an interactive inspector for SOAP WSDL structures.
3467
ff1796f3 3468** New generic mode, xmodmap-generic-mode, for xmodmap files.
ad7d6ecb 3469
53bbe3ad 3470** New emacs-lock.el package.
7d301ae6
CY
3471The previous version has been moved to obsolete/old-emacs-lock.el.
3472Now, there is a proper minor mode `emacs-lock-mode'. Protection
3473against exiting Emacs and killing the buffer can be set separately.
3474The mechanism for automatically turning off protection for buffers
3475with dead inferior processes has been generalized.
53bbe3ad 3476
eb199145
GM
3477\f
3478* Incompatible Lisp Changes in Emacs 24.1
6dfcbe31 3479
7d301ae6
CY
3480** Passing a nil argument to a minor mode function call now ENABLES
3481the minor mode unconditionally. This is so that you can write e.g.
3482
dfdb4cad 3483 (add-hook 'text-mode-hook 'foo-mode)
7d301ae6 3484
dfdb4cad
CY
3485to enable foo-mode in Text mode buffers, removing the need for
3486`turn-on-foo-mode' style functions. This affects all mode commands
3487defined by `define-minor-mode'. If called interactively, the mode
3488command still toggles the minor mode.
7d301ae6 3489
d268b4fe
CY
3490** The return value of `backup-buffer' has changed.
3491It is now a list of three elements, where the second element is a list
3492describing the original file's SELinux context. If Emacs or the
f003f294 3493system lacks SELinux support, the context list is (nil nil nil nil).
7d301ae6 3494See "Basic SELinux support" above, under "Changes in Emacs 24.1".
d268b4fe 3495
dfdb4cad
CY
3496** `char-direction-table' and the `char-direction' function were deleted.
3497They were buggy and inferior to the new support of bidirectional
3498editing introduced in Emacs 24. If you need the bidirectional
3499properties of a character, use `get-char-code-property' with the last
3500argument `bidi-class'.
fa6996bc 3501
470d996d
TV
3502** `copy-directory' now copies the source directory as a subdirectory
3503of the target directory, if the latter is an existing directory. The
3504new optional arg COPY-CONTENTS, if non-nil, makes the function copy
3505the contents directly into a pre-existing target directory.
3506
9173a8fb
CY
3507** For mouse click input events in the text area, the Y pixel
3508coordinate in the POSITION list now counts from the top of the text
3509area, excluding any header line. Previously, it counted from the top
3510of the header line.
3511
7d301ae6
CY
3512** Support for "old-style" backquotes, obsolete for 10+ years, has
3513been further reduced. Now a backquote not followed by a space is
3514always treated as a "new-style" backquote. Please remove all
3515"old-style" backquotes from your code. If your code uses backquotes
3516as documented in the Elisp manual, and compiles without warning, then
3517you have nothing to do in this regard. Code not following the
3518appropriate conventions may fail to compile.
50ab02c5
CY
3519
3520The most common cause of trouble seems to be an old-style backquote
3521followed by a newline. Another cause of trouble is vector notation
3522for key sequence notation: instead of [(control ,)] and [(control ')],
3523you should write [(control ?,)] and [(control ?')], which will work in
7d301ae6 3524older Emacsen too.
288cf4e9 3525
520f2425
GM
3526** The macro `eval-at-startup' was removed in Emacs 23.2, but this
3527was not advertised at the time. The function `custom-initialize-delay'
3528replaced all known uses.
3529
7d301ae6
CY
3530** `view-buffer' now treats special mode-class in the same way that
3531`view-file' has since Emacs 22 (i.e. it won't enable View mode if the
3532major mode is special).
fd5c9dfa 3533
7d301ae6 3534** Menu and tool bar changes
6431f2e6 3535
7d301ae6 3536*** During startup, Emacs no longer adds entries for `menu-bar-lines'
0a19a6f8
JB
3537and `tool-bar-lines' to `default-frame-alist' and `initial-frame-alist'.
3538With these alist entries omitted, `make-frame' checks the value of the
3539variable `menu-bar-mode'/`tool-bar-mode' to determine whether to create
3540a menu-bar or tool-bar, respectively. If the alist entries are added,
3541they override the value of `menu-bar-mode'/`tool-bar-mode'.
6431f2e6 3542
7d301ae6
CY
3543*** The menu bar bindings's caches are not used any more.
3544Use (where-is-internal <def> nil t) instead.
3545
fe0aa820 3546** Regions created by mouse dragging are now normal active regions,
dfdb4cad 3547similar to those created by shift-selection (see Selection changes
7d301ae6
CY
3548above). In previous Emacs versions, these regions were delineated by
3549`mouse-drag-overlay'; that variable has been removed.
d6d8ee7a 3550
7d301ae6
CY
3551** The fourth argument of `filter-buffer-substring' has been removed.
3552If you want to remove text properties from the final result, simply
3553pass the result through substring-no-properties.
34c99998 3554
4583e796
GM
3555** cl.el no longer provides `cl-19'.
3556
7d301ae6
CY
3557** The following obsolete functions and aliases have been removed
3558(the appropriate new function is given in parentheses; "not needed"
3559means you can just remove all calls to the function in question):
3560
3561*** `comint-kill-output' (`comint-delete-output')
3562*** `decompose-composite-char' (`char-to-string')
3563*** `outline-visible' (`outline-invisible-p')
3564*** `internal-find-face' (`facep')
3565*** `internal-get-face' (`facep and check-face')
3566*** `frame-update-faces' (not needed)
3567*** `frame-update-face-colors' (`frame-set-background-mode')
3568*** `x-frob-font-weight' and `x-frob-font-slant' (`make-face-*' functions)
ee325f58 3569*** `x-make-font-bold' and `x-make-font-demibold' (`make-face-bold')
7d301ae6
CY
3570*** `x-make-font-italic' and `x-make-font-oblique' (`make-face-italic')
3571*** `x-make-font-bold-italic' (`make-face-bold-italic')
3572*** `x-make-font-unbold' (`make-face-unbold')
3573*** `x-make-font-unitalic' (`make-face-unitalic')
3574*** `mldrag-drag-mode-line' (`mouse-drag-mode-line')
3575*** `mldrag-drag-vertical-line' (`mouse-drag-vertical-line')
3576*** `iswitchb-default-keybindings' (`iswitchb-mode')
3577*** `char-bytes' (== 1)
3578*** `isearch-return-char' (`isearch-printing-char')
3579*** `make-local-hook' (not needed)
3580*** `set-screen-height' (`set-frame-height')
3581*** `set-screen-width' (`set-frame-width')
3582
7d301ae6
CY
3583** The following obsolete variables and varaliases have been removed
3584(the appropriate new variable is given in parentheses):
3585
3586*** `checkdoc-minor-keymap' (`checkdoc-minor-mode-map')
3587*** `vc-header-alist' (`vc-BACKEND-header')
3588*** `directory-sep-char' (== ?/)
3589*** `font-lock-defaults-alist' (`font-lock-defaults')
3590*** `e' (`float-e').
3226d6ca 3591
041d709f 3592** The following obsolete files were removed:
7b0e3048
GM
3593sc.el, x-menu.el, rnews.el, rnewspost.el
3594
7d301ae6
CY
3595** The format of the finder-inf.el file has changed, since the Finder
3596mechanism is now based on the package system. The variable
3597`finder-package-info' is replaced by `package--builtins' and
3598`finder-keywords-hash'.
33658d4e 3599
c2c79260
DE
3600** When generating autoloads, `update-directory-autoloads' no longer
3601assumes every inspected file is in your `load-path'. It instead
3602generates relative names according to the current `load-path'.
3603
eb199145 3604\f
93e0bed6 3605* Lisp Changes in Emacs 24.1
9097e8af 3606
041d709f 3607** Code can now use lexical scoping by default instead of dynamic scoping.
dfdb4cad 3608The `lexical-binding' variable enables lexical scoping for local
48da7392 3609variables. It is typically set via a file-local variable in the first
dfdb4cad
CY
3610line of the file, in which case it applies to all the code in that
3611file.
3612
041d709f
CY
3613*** `eval' takes a new optional argument `lexical' to choose the new lexical
3614binding instead of the old dynamic binding mode.
dfdb4cad 3615
041d709f
CY
3616*** Lexically scoped interpreted functions are represented with a new form
3617of function value which looks like (closure ENV ARGS &rest BODY).
3618
3619*** New macro `letrec' to define recursive local functions.
dfdb4cad
CY
3620
3621*** `defvar' and `defconst' now mark the variable as special (dynamic).
3622So do `defcustom' and other forms that call `defvar' as a subroutine.
3623
041d709f
CY
3624*** New function `special-variable-p' to check whether a variable is
3625declared as dynamically bound.
3626
88ed9e87
SM
3627*** The form ((lambda ...) ...) is deprecated.
3628
041d709f
CY
3629** An Emacs Lisp testing tool is now included.
3630Emacs Lisp developers can use this tool to write automated tests for
3631their code. See the ERT info manual for details.
3632
3633** Changes for bidirectional display and editing
f1816485 3634
041d709f 3635*** New function `current-bidi-paragraph-direction'.
7d301ae6 3636This returns the base direction of the paragraph at point.
041d709f 3637
041d709f 3638*** New function `bidi-string-mark-left-to-right'.
dfdb4cad
CY
3639Given a string containing characters from right-to-left scripts, this
3640function returns another string which can be safely inserted into a
3641buffer, such that any following text will be always displayed to the
7d301ae6
CY
3642right of that string. (This works by appending an invisible Unicode
3643"LEFT-TO-RIGHT MARK" character if the argument string might need it.)
041d709f 3644
7d301ae6 3645This is useful when the buffer has overall left-to-right paragraph
dfdb4cad
CY
3646direction and you need to insert a string whose contents are not known
3647in advance, without disrupting the layout of the line.
041d709f 3648
bee0fcef 3649** Window changes
dfdb4cad 3650
c4682d18
MR
3651*** Window tree functions are accessible in Elisp.
3652Functions are provided to return the parent, siblings or child windows
3653of any window including internal windows (windows not associated with a
3654buffer) in the window tree.
dfdb4cad 3655
24300f5f
CY
3656**** New function `window-valid-p' gives non-nil for live and internal
3657windows.
dfdb4cad 3658
24300f5f 3659**** Window manipulation can deal with internal windows.
c4682d18
MR
3660Many window handling functions like `split-window', `delete-window', or
3661`delete-other-windows' as well as the window resizing functions can now
3662act on any window including internal ones.
dfdb4cad 3663
c4682d18
MR
3664*** window-total-height/-width vs window-body-height/-width.
3665The function `window-height' has been renamed to `window-total-height'
3666and `window-width' has been renamed to `window-body-width'. The old
3667names are provided as aliases. Two new functions `window-total-width'
3668and `window-body-height' are provided.
dfdb4cad 3669
c4682d18
MR
3670*** Window parameters specific to window handling functions.
3671For each window you can specify a parameter to override the default
3672behavior of a number of functions like `split-window', `delete-window'
ed6235ea
MR
3673and `delete-other-windows'. The variable `ignore-window-parameters'
3674allows to ignore processing such parameters.
dfdb4cad 3675
c4682d18 3676*** New semantics of third argument of `split-window'.
c4682d18
MR
3677The third argument of `split-window' has been renamed to SIDE and can be
3678set to any of the values 'below, 'right, 'above, or 'left to make the
3679new window appear on the corresponding side of the window that shall be
3680split. Any other value of SIDE will cause `split-window' to split the
3681window into two side-by-side windows as before.
dfdb4cad 3682
c4682d18 3683*** Window resizing functions.
487ffd7a 3684A new standard function for resizing windows called `window-resize' has
c4682d18
MR
3685been introduced. This and all other functions for resizing windows no
3686longer delete any windows when they become too small.
dfdb4cad 3687
b3c0dbfd
MR
3688*** Deleting the selected window now selects the most recently selected
3689live window on that frame instead.
dfdb4cad 3690
c4682d18
MR
3691*** `adjust-window-trailing-edge' adjustments.
3692`adjust-window-trailing-edge' can now deal with fixed-size windows and
3693is able to resize other windows if a window adjacent to the trailing
3694edge cannot be shrunk any more. This makes its behavior more similar to
3695that of Emacs 21 without compromising, however, its inability to delete
3696windows which was introduced in Emacs 22.
dfdb4cad 3697
c4682d18
MR
3698*** Window-local buffer lists.
3699Windows now have local buffer lists. This means that removing a buffer
3700from display in a window will preferably show the buffer previously
3701shown in that window with its previous window-start and window-point
3702positions. This also means that the same buffer may be automatically
3703shown twice even if it already appears in another window.
dfdb4cad 3704
bee0fcef
CY
3705*** `switch-to-buffer' has a new optional argument FORCE-SAME-WINDOW,
3706which if non-nil requires the buffer to be displayed in the currently
3707selected window, signaling an error otherwise. If nil, another window
3708can be used, e.g. if the selected one is strongly dedicated.
dfdb4cad 3709
0a2132ba 3710*** `split-window-vertically' and `split-window-horizontally' renamed
2d197ffb
CY
3711to `split-window-below' and `split-window-right' respectively.
3712The old names are kept as aliases.
dfdb4cad 3713
0a2132ba
CY
3714*** Display actions
3715
3716**** The second arg to `display-buffer' and `pop-to-buffer' is now
3717named ACTION, and takes a display action of the same form as
3718`display-buffer-base-action' (see Changes, above). A non-nil,
3719non-list value is treated specially, as the old meaning.
3720
3721**** New variable `display-buffer-overriding-action'.
3722
3723**** The procedure of `display-buffer' etc. to choose a window is
3724determined by combining `display-buffer-overriding-action',
3725`display-buffer-alist', the ACTION arg, `display-buffer-base-action',
3726and `display-buffer-fallback-action'. The second and fourth of these
3727are user-customizable variables.
3728
3729See the docstring of `display-buffer' for details.
bee0fcef 3730
20d2304d
CY
3731*** New functions `window-state-get' and `window-state-put'.
3732These functions allow to save and restore the state of an arbitrary
3733frame or window as an Elisp object.
3734
a2a25d24 3735** Completion
041d709f 3736
7d301ae6
CY
3737*** New variable `completion-extra-properties' used to specify extra
3738properties of the current completion:
a2a25d24
SM
3739- :annotate-function, same as the old completion-annotate-function.
3740- :exit-function, function to call after completion took place.
3741
7d301ae6
CY
3742*** Functions on `completion-at-point-functions' can return any of the
3743properties valid for `completion-extra-properties'.
a2a25d24 3744
7d301ae6 3745*** `completion-annotate-function' is obsolete.
a2a25d24 3746
620c53a6
SM
3747*** New `metadata' method for completion tables. The metadata thus returned
3748can specify various details of the data returned by `all-completions':
3749- `category' is the kind of objects returned (e.g., `buffer', `file', ...),
3750 used to select a style in completion-category-overrides.
3751- `annotation-function' to add annotations in *Completions*.
3752- `display-sort-function' to specify how to sort entries in *Completions*.
3753- `cycle-sort-function' to specify how to sort entries when cycling.
3754
7d301ae6
CY
3755*** `minibuffer-local-filename-must-match-map' is not used any more.
3756Instead, the bindings in `minibuffer-local-filename-completion-map'
3757are combined with `minibuffer-local-must-match-map'.
de09aa52
CY
3758
3759*** New variable `completing-read-function' allows overriding the
3760behavior of `completing-read'.
3761
f042970d 3762** `glyphless-char-display' can now distinguish between graphical and
16a43933
CY
3763text terminal display, via a char-table entry that is a cons cell.
3764
7d301ae6 3765** `pre-command-hook'/`post-command-hook' are not reset to nil on error.
f6d62986
SM
3766Instead, the offending function is removed.
3767
b1f6fa26
CY
3768** New hook types
3769
3770*** New function `run-hook-wrapped' for running an abnormal hook by
3771passing the hook functions as arguments to a "wrapping" function.
e7bc51d0 3772Like `run-hook-with-args-until-success', it stops at the first
5385447f 3773non-nil return value.
e7bc51d0 3774
b1f6fa26
CY
3775*** New macro `with-wrapper-hook' for running an abnormal hook as a
3776set of "wrapping" filters, similar to around advice.
54521c99
GM
3777(A version of this macro was actually added in Emacs 23.2 but was not
3778advertised at the time.)
f6d62986 3779
0b19b281 3780** Debugger changes
dfdb4cad 3781
0b19b281 3782*** New macro `condition-case-unless-debug' (this was actually added in
1be3ca5a 3783Emacs 23.1 as condition-case-no-debug, but not advertised)
dfdb4cad 3784
0b19b281 3785*** The macro `with-demoted-errors' was added in Emacs 23.1, but not advertised.
dfdb4cad 3786
0b19b281 3787*** Variable `stack-trace-on-error' removed.
dfdb4cad 3788
0b19b281
CY
3789*** The debugger can now "continue" from an error, which means it will
3790jump to the error handler as if the debugger had not been invoked
3791instead of jumping all the way to the top-level.
dfdb4cad 3792
0b19b281
CY
3793*** Set `debug-on-event' to enter the debugger on events like SIGUSR1.
3794This can be useful when `inhibit-quit' is set.
d6b1d521 3795
953cebf5 3796** The new function `server-eval-at' allows evaluation of Lisp forms on
37576acd 3797named Emacs server instances.
7deebf1b 3798
1b9f60cc
GM
3799** `call-process' and `call-process-region' allow a `(:file "file")' spec
3800to redirect STDOUT to a file.
7deebf1b 3801
7d301ae6
CY
3802** The function `format-time-string' now supports the %N directive,
3803for higher-resolution time stamps.
da97a9e6 3804
0b19b281 3805** New input reading functions
dfdb4cad 3806
0b19b281
CY
3807*** New function `read-char-choice' reads a restricted set of
3808characters, discarding any inputs not inside the set.
dfdb4cad 3809
0b19b281
CY
3810*** The command `read-color' now requires a match for a color name
3811or RGB triplet, instead of signaling an error if the user provides
3812invalid input.
dfdb4cad 3813
0b19b281 3814**** `facemenu-read-color' is now an alias for `read-color'.
3ef01959 3815
2e288d54
JB
3816** `image-library-alist' is renamed to `dynamic-library-alist'.
3817The variable is now used to load all kind of supported dynamic libraries,
3818not just image libraries. The previous name is still available as an
3819obsolete alias.
3820
0b19b281 3821** Syntax parsing changes
dfdb4cad 3822
0b19b281 3823*** New variable `syntax-propertize-function'.
04e2ce72 3824This replaces `font-lock-syntactic-keywords' which is now obsolete.
cf38dd42
SM
3825This allows syntax-table properties to be set independently from font-lock:
3826just call syntax-propertize to make sure the text is propertized.
3827Together with this new variable come a new hook
3828syntax-propertize-extend-region-functions, as well as two helper functions:
3829syntax-propertize-via-font-lock to reuse old font-lock-syntactic-keywords
3830as-is; and syntax-propertize-rules which provides a new way to specify
3831syntactic rules.
dfdb4cad 3832
0b19b281 3833*** Syntax tables support a new "comment style c" additionally to style b.
a2e5caf7 3834
7d301ae6 3835** New hook `post-self-insert-hook', run after `self-insert-command'.
041d709f 3836
4e2db1fe 3837** frame-local variables cannot be let-bound any more.
041d709f 3838
15de15c6 3839** Major and minor mode changes
dfdb4cad 3840
0b19b281
CY
3841*** `set-auto-mode' now respects mode: local variables at the end of files,
3842as well as those in the -*- line.
dfdb4cad 3843
15de15c6
CY
3844*** `prog-mode' is a new major mode from which programming modes
3845should be derived.
dfdb4cad 3846
15de15c6
CY
3847**** `prog-mode-hook' can be used to enable features for programming
3848modes, e.g. (add-hook 'prog-mode-hook 'flyspell-prog-mode) to enable
3849on-the-fly spell checking for comments and strings.
dfdb4cad 3850
15de15c6
CY
3851*** New hook `change-major-mode-after-body-hook', run by
3852`run-mode-hooks' just before any other mode hooks.
dfdb4cad 3853
7a9a2fc6
GM
3854*** Enabled globalized minor modes can be disabled in specific major modes.
3855If the global mode is global-FOO-mode, then run (FOO-mode -1) in the
3856major mode's hook, where FOO-mode toggles the mode on a per-buffer basis.
dfdb4cad 3857
feb8a83a 3858*** `define-minor-mode' accepts new keywords :variable, :after-hook.
f44379e7 3859
7d301ae6
CY
3860** File-handling changes
3861
7d301ae6 3862*** `delete-file' and `delete-directory' now accept optional arg TRASH.
f1a5d776
CY
3863Trashing is performed if TRASH and `delete-by-moving-to-trash' are
3864both non-nil. Interactively, TRASH defaults to t, unless a prefix
3865argument is supplied (see Trash changes, above).
53967e09 3866
7d301ae6 3867*** New file predicates: `file-equal-p', `file-in-directory-p'.
ec70a47d 3868
4039c786
CY
3869** Tool-bars can display separators.
3870Tool-bar separators are handled like menu separators in menu-bar maps,
94975270 3871i.e. via menu entries of the form `(menu-item "--")'.
9317e499 3872
00fe2df1
JL
3873** Image API
3874
18af70d0
CY
3875*** Animated images support (currently animated gifs only).
3876
3877**** `image-animated-p' returns non-nil if an image can be animated.
3878
3879**** `image-animate' animates a supplied image spec.
3880
3881**** `image-animate-timer' returns the timer object for an image that
3882is being animated.
00fe2df1 3883
7cb76fe0
GM
3884*** `image-extension-data' has been renamed to `image-metadata'.
3885The old name is an obsolete alias to the new one.
1546c559 3886
b4ac6e8c
GM
3887*** Image mode can view any image type that ImageMagick supports.
3888This requires Emacs to be built with ImageMagick support.
7d301ae6
CY
3889
3890**** New function `imagemagick-types', defined if ImageMagick support
3891is enabled, returns a list of image file extensions that your
3892ImageMagick installation supports.
3893
3894**** New function `imagemagick-register-types' enables ImageMagick
3895image types in Image mode and in `create-image' and other helper
3896functions.
3897
3898**** New option `imagemagick-types-inhibit' excludes certain
3899ImageMagick image types from `imagemagick-register-types'.
3900
7d301ae6
CY
3901**** With ImageMagick support, there are extra Image mode commands to
3902resize and rotate images: `image-transform-fit-to-height',
3903`image-transform-fit-to-width', `image-transform-set-rotation', and
3904`image-transform-set-scale'.
041d709f 3905
7d301ae6
CY
3906** `compose-mail' now accepts an optional 8th arg, RETURN-ACTION, and
3907passes it to the mail user agent function. This argument specifies an
3908action for returning to the caller after finishing with the mail. For
3909example, this is used by Rmail to optionally delete a mail window.
b4ac6e8c 3910
71c17aec 3911** XML and HTML parsing
483ab230
CY
3912If Emacs is compiled with libxml2 support, there are two new
3913functions: `libxml-parse-html-region' (which parses "real world" HTML)
3914and `libxml-parse-xml-region' (which parses XML). Both return an
3915Emacs Lisp parse tree.
4b9832a6 3916
7d301ae6 3917** Networking and encryption changes
e2574f2c 3918
7d301ae6
CY
3919*** `open-network-stream' can now be used to open an encrypted stream.
3920It now accepts an optional `:type' parameter for initiating a TLS
3921connection, directly or via STARTTLS. To do STARTTLS, additional
3922parameters (`:end-of-command', `:success', `:capabilities-command')
3923must also be supplied.
3924
3925*** New library gnutls.el.
dfdb4cad
CY
3926The new function `gnutls-available-p' returns non-nil if Emacs is
3927built with GnuTLS support. The main entry points are
3928`open-gnutls-stream' and `gnutls-negotiate'. It's easiest to use
3929these functions through `open-network-stream', because that can
7d301ae6
CY
3930upgrade connections through STARTTLS opportunistically or use plain
3931SSL, depending on your needs. For debugging, set `gnutls-log-level'
3932greater than 0.
3933
7d301ae6
CY
3934*** New primitive `secure-hash' that supports many secure hash algorithms:
3935md5, sha1, sha2, sha224, sha256, sha384, and sha512. The lisp library
3936sha1.el has been removed. The `sha1' feature is provided by default.
71c17aec 3937
a6020335
MH
3938** Isearch
3939
3940*** New hook `isearch-update-post-hook' that runs in `isearch-update'.
3941
9326ba26
CY
3942** Progress reporters can now "spin".
3943The MIN-VALUE and MAX-VALUE arguments of `make-progress-reporter' can
3944now be nil, or omitted. This makes a "non-numeric" reporter. Each
3945time you call `progress-reporter-update' on that progress reporter,
3946with a nil or omitted VALUE argument, the reporter message is
3947displayed with a "spinning bar".
3948
3e214b50
JB
3949** New variable `revert-buffer-in-progress-p' is true while a buffer is
3950being reverted, even if the buffer has a local `revert-buffer-function'.
3951
001bf877
GM
3952** New variables `delayed-warnings-list' and `delayed-warnings-hook'.
3953If delayed-warnings-list is non-nil, the command loop calls
7d301ae6
CY
3954`delayed-warnings-hook' after `post-command-hook'. At present, this
3955is only used by Emacs on some platforms to display warnings during
3956startup, which might otherwise not be noticed. This uses the
3957functions `display-delayed-warnings' and `collapse-delayed-warnings'.
001bf877 3958
6420d28b
CY
3959** rx.el has a new `group-n' construct for explicitly numbered groups.
3960
dac86404
GM
3961** New function `make-composed-keymap' that constructs a new keymap
3962from multiple input maps. You can use this to make a keymap that
3963inherits from multiple maps, eg:
3964 (set-keymap-parent newmap (make-composed-keymap othermap parent))
43dc9f5b 3965
c8f6ec5c
GM
3966** New function `string-prefix-p'.
3967(This was actually added in Emacs 23.2 but was not advertised at the time.)
3968
27f7ef2f 3969** New reader macro ## that stands for the empty symbol.
43dc9f5b
AS
3970This means that the empty symbol can now be read back. Also, #: by itself
3971(when not immediately followed by a possible symbol character) stands for
3972an empty uninterned symbol.
041d709f 3973
fead402d
CY
3974** New math functions `isnan', `copysign', `frexp', `ldexp'.
3975
7d301ae6 3976** The following functions and variables are obsolete:
041d709f 3977
05f77e38
GM
3978*** `tooltip-use-echo-area' is obsolete.
3979Rather than setting this to t, disable Tooltip mode instead.
3980
041d709f
CY
3981*** buffer-substring-filters is obsolete.
3982Use `filter-buffer-substring-functions' instead.
3983
3984*** `byte-compile-disable-print-circle' is obsolete.
3985
3986*** `deferred-action-list' and `deferred-action-function' are obsolete.
f160676e
GM
3987Use `post-command-hook' instead.
3988
67e729a5
CY
3989*** `font-lock-maximum-size' is obsolete.
3990
eb199145 3991\f
93e0bed6 3992* Changes in Emacs 24.1 on Non-Free Operating Systems
d53a60a6 3993
7a22e700 3994** On MS Windows, Emacs warns when using the obsolete init file _emacs,
a2f0118c
GM
3995and also when HOME is set to C:\ by default.
3996
7a22e700 3997** New configure.bat options
04779484 3998
7a22e700 3999*** --enable-checking builds Emacs with extra runtime checks.
e3aef5c6 4000
7a22e700 4001*** --distfiles specifies files to be included in binary distribution.
e2574f2c 4002
7a22e700
OK
4003*** --without-gnutls disables automatic GnuTLS detection.
4004
a0d363f4 4005*** --lib for general library linkage, works with the USER_LIBS build variable.
e2574f2c 4006
0a19a6f8 4007** New make target `dist' to create binary distribution for MS Windows.
e3aef5c6 4008
1f5e1a16
GM
4009** The Lisp function `w32-default-color-map' is now obsolete.
4010(It is only used internally in the Emacs C code.)
5430d399 4011
1f5e1a16
GM
4012** Customize ns-auto-hide-menu-bar to have the menu-bar hidden, but
4013reappear on mouse-over. (Requires OS X 10.6 or later.)
04e2ce72 4014
ad7c802c
CY
4015** On Mac OS X, dragging a file into Emacs visits the file, like on
4016other platforms, rather than inserting its contents into the buffer.
4017
05197f40 4018\f
a933dad1 4019----------------------------------------------------------------------
5b87ad55 4020This file is part of GNU Emacs.
a933dad1 4021
ab73e885 4022GNU Emacs is free software: you can redistribute it and/or modify
5b87ad55 4023it under the terms of the GNU General Public License as published by
ab73e885
GM
4024the Free Software Foundation, either version 3 of the License, or
4025(at your option) any later version.
5b87ad55
GM
4026
4027GNU Emacs is distributed in the hope that it will be useful,
4028but WITHOUT ANY WARRANTY; without even the implied warranty of
4029MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4030GNU General Public License for more details.
a933dad1 4031
5b87ad55 4032You should have received a copy of the GNU General Public License
ab73e885 4033along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
a933dad1 4034
05197f40 4035\f
a933dad1
DL
4036Local variables:
4037mode: outline
4038paragraph-separate: "[ \f]*$"
4039end: