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