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