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