More anchors for internal Glossary links.
[bpt/emacs.git] / etc / NEWS
1 GNU Emacs NEWS -- history of user-visible changes.
2
3 Copyright (C) 2010-2012 Free Software Foundation, Inc.
4 See the end of the file for license conditions.
5
6 Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
7 If possible, use M-x report-emacs-bug.
8
9 This file is about changes in Emacs version 24.
10
11 See files NEWS.23, NEWS.22, NEWS.21, NEWS.20, NEWS.19, NEWS.18,
12 and NEWS.1-17 for changes in older Emacs versions.
13
14 You can narrow news to a specific version by calling `view-emacs-news'
15 with a prefix argument or by typing C-u C-h C-n.
16
17
18 Temporary note:
19 +++ indicates that the appropriate manual has already been updated.
20 --- means no change in the manuals is called for.
21 When you add a new item, please add it without either +++ or ---
22 so we will look at it and add it to the manual.
23
24 \f
25 * Installation Changes in Emacs 24.1
26
27 ---
28 ** Emacs can be compiled with Gtk+ 3.0 if you pass --with-x-toolkit=gtk3
29 to configure. Note that other libraries used by Emacs, RSVG and GConf,
30 also depend on Gtk+. You can disable them with --without-rsvg and
31 --without-gconf.
32
33 ---
34 ** Emacs can be compiled with GnuTLS support.
35 This happens by default if a suitably recent version of the library is
36 found at build time. To prevent this, use the configure option
37 `--without-gnutls'. See below for GnuTLS features.
38
39 ---
40 ** Emacs can be compiled with SELinux support.
41 This happens by default if a suitably recent version of the library is
42 found at build time. To prevent this, use the configure option
43 `--without-selinux'. See below for SELinux features.
44
45 ---
46 ** Emacs can be compiled with ImageMagick support.
47 This happens by default if a suitably recent version of the library is
48 found at build time. To prevent this, use the configure option
49 `--without-imagemagick'. See below for ImageMagick features.
50 This feature is not available for the Nextstep or MS ports.
51
52 ---
53 ** Emacs can be compiled with libxml2 support.
54 This happens by default if a suitably recent version of the library is
55 found at build time. To prevent this, use the configure option
56 `--without-xml2'. See below for libxml2 features.
57
58 ---
59 ** By default, the installed Info and man pages are compressed.
60 You can disable this by configuring --without-compress-info.
61
62 ---
63 ** New configure option --with-wide-int.
64 With it, Emacs integers typically have 62 bits, even on 32-bit machines.
65 On 32-bit hosts, this raises the limit on buffer sizes from about 512 MiB
66 to about 2 GiB.
67
68 ---
69 ** New configure options: --with-mmdf, --with-mail-unlink, --with-mailhost.
70 These provide no new functionality, they just remove the need to edit
71 lib-src/Makefile by hand in order to use the associated features.
72
73 ---
74 ** New configure option --enable-use-lisp-union-type.
75 This is only useful for Emacs developers to debug certain types of bugs.
76 This is not a new feature; only the configure flag is new.
77
78 ---
79 ** The standalone programs digest-doc and sorted-doc are removed.
80 Emacs now uses Lisp commands `doc-file-to-man' and `doc-file-to-info'.
81
82 ---
83 ** The standalone program `fakemail' is removed.
84 If you need it, feedmail.el provides a superset of the functionality.
85
86 \f
87 * Startup Changes in Emacs 24.1
88
89 ---
90 ** The --unibyte, --multibyte, --no-multibyte, and --no-unibyte
91 command line arguments, and the EMACS_UNIBYTE environment variable, no
92 longer have any effect. (They were declared obsolete in Emacs 23.)
93
94 +++
95 ** New command line option `--no-site-lisp' removes site-lisp directories
96 from load-path. -Q now implies this. This option does not affect the
97 EMACSLOADPATH environment variable (and hence has no effect for
98 Nextstep builds).
99
100 \f
101 * Changes in Emacs 24.1
102
103 ** Completion
104
105 *** Shell mode uses pcomplete rules, with the standard completion UI.
106 +++
107 *** Many packages have been changed to use `completion-at-point'
108 rather than their own completion code.
109 +++
110 *** `completion-at-point' now handles tags and semantic completion.
111 ---
112 *** Completion in a non-minibuffer now tries to detect the end of completion
113 and pops down the *Completions* buffer accordingly.
114 +++
115 *** Completion can cycle, depending on `completion-cycle-threshold'.
116 +++
117 *** New completion style `substring'.
118 +++
119 *** Completion style can be set per-category `completion-category-overrides'.
120 +++
121 *** Completion of buffers now uses substring completion by default.
122 ---
123 *** The `widget-complete-field' option has been removed.
124
125 ** Mail changes
126 +++
127 *** The first time you try sending mail, Emacs asks for a mail method.
128 This is implemented by a new default for `send-mail-function', which
129 is `sendmail-query-once'. This offers to use the smtpmail package, or
130 to use the old defaults relying on external mail facilities
131 (`sendmail-send-it' on GNU/Linux and other Unix-like systems, and
132 `mailclient-send-it' on Windows).
133 +++
134 *** Typing C-c m in the buffer made by M-x report-emacs-bug transfers
135 the report to your desktop's preferred mail client, if there is one.
136 This uses either the "xdg-email" utility, or Mac OS's "open" command.
137 ---
138 *** See Changes in Specialized Modes and Packages for SMTPmail changes
139 and Mail mode changes
140
141 ** Emacs server and client changes
142 +++
143 *** New option `server-port' specifies the port for TCP Emacs servers.
144 +++
145 *** New emacsclient argument -q/--quiet suppresses some status messages.
146 +++
147 *** New emacsclient argument --frame-parameters specifies the frame
148 parameters of any newly-created graphical frame.
149 +++
150 *** If emacsclient shuts down as a result of Emacs signaling an
151 error, its exit status is 1.
152 +++
153 *** New emacsclient argument --parent-id ID.
154 This opens a client frame in parent X window ID, via XEmbed, similar
155 to the --parent-id argument to Emacs.
156
157 ** Internationalization changes
158
159 +++
160 *** Emacs now supports display and editing of bidirectional text.
161 Right-to-left (RTL) scripts, such as Arabic, Farsi, and Hebrew, are
162 displayed in the correct visual order as expected by users of those
163 scripts. This display reordering is a "full bidirectionality" class
164 implementation of the Unicode Bidirectional Algorithm. Buffers with
165 no RTL text should look exactly the same as before.
166
167 +++
168 **** New buffer-local variable `bidi-display-reordering'.
169 To disable display reordering in a buffer, change this to nil.
170
171 +++
172 **** New buffer-local variable `bidi-paragraph-direction'.
173 If nil (the default), Emacs determines the base direction of each
174 paragraph from its text, as specified by the Unicode Bidirectional
175 Algorithm. Setting the value to `right-to-left' or `left-to-right'
176 forces a base direction on each paragraph.
177
178 Paragraphs with right-to-left base direction are displayed starting at
179 the right window edge.
180
181 +++
182 *** Enhanced support for characters with no glyphs in available fonts.
183 If a character has no glyphs in any of the available fonts, Emacs
184 normally displays it either as a hexadecimal code in a box or as a
185 thin 1-pixel space. In addition to these two methods, Emacs can
186 display these characters as empty box, as an acronym, or not display
187 them at all. To change how these characters are displayed, customize
188 the variable `glyphless-char-display-control'.
189
190 On character terminals, these methods are used for characters that
191 cannot be encoded by the `terminal-coding-system'.
192
193 ---
194 *** New input methods: farsi, farsi-translit, bulgarian-alt-phonetic.
195
196 +++
197 *** `nobreak-char-display' now also highlights Unicode hyphen chars
198 (U+2010 and U+2011).
199
200 ---
201 *** New Hebrew translation of the Emacs Tutorial.
202 Type `C-u C-h t' to choose it in case your language setup doesn't
203 automatically select it.
204
205 ** An Emacs Lisp package manager is now included.
206 This is a convenient way to download and install additional packages,
207 from a package repository at http://elpa.gnu.org.
208 +++
209 *** M-x list-packages shows a list of packages, which can be
210 selected for installation.
211 +++
212 *** New command `describe-package', bound to `C-h P'.
213 +++
214 *** By default, all installed packages are loaded automatically when
215 Emacs starts up. To disable this, set `package-enable-at-startup' to
216 nil. To specify the packages to load, customize `package-load-list'.
217
218 ** Custom Themes
219 +++
220 *** New command `M-x customize-themes', which provides a convenient
221 interface for enabling and disabling Custom themes.
222 +++
223 *** New option `custom-theme-load-path' is the load path for themes.
224 Emacs no longer looks for custom themes in `load-path'. The default
225 is to search in `custom-theme-directory', followed by a built-in theme
226 directory named "themes/" in `data-directory'.
227 +++
228 *** New option `custom-safe-themes' records known-safe theme files.
229 If a theme is not in this list, Emacs queries before loading it, and
230 offers to save the theme to `custom-safe-themes' automatically. By
231 default, all themes included in Emacs are treated as safe.
232
233 ** Improved GTK integration
234 +++
235 *** GTK scroll-bars are now placed on the right by default.
236 Use `set-scroll-bar-mode' to change this.
237 +++
238 *** GTK tool bars can have just text, just images or images and text.
239 Customize `tool-bar-style' to choose style. On a Gnome desktop, the
240 default is taken from desktop settings.
241 ---
242 *** GTK tool bars can be placed on the left/right or top/bottom of the frame.
243 The frame-parameter tool-bar-position controls this. It takes the
244 values top, left, right or bottom. The Options => Show/Hide menu has
245 entries for this.
246 +++
247 *** The default colors for selected text (the `region' face) are taken
248 from the GTK theme when Emacs is built with GTK.
249 +++
250 *** Emacs uses GTK tooltips by default if built with GTK.
251 You can disable this by changing `x-gtk-use-system-tooltips' to nil.
252
253 ** Exiting changes
254 +++
255 *** Emacs now calls `kill-emacs' if it receives SIGTERM or SIGHUP,
256 and also if it receives a SIGINT signal in batch mode.
257 +++
258 *** `kill-emacs-hook' is now also run in batch mode.
259 Third-party code which adds to `kill-emacs-hook' should check if they
260 do the right thing in batch mode.
261
262 ** Scrolling changes
263 +++
264 *** New scrolling commands `scroll-up-command' and `scroll-down-command'
265 (bound to C-v/[next] and M-v/[prior]) do not signal errors at top/bottom
266 of buffer at first key-press (instead they move to top/bottom of buffer)
267 when `scroll-error-top-bottom' is non-nil.
268 +++
269 *** New variable `scroll-error-top-bottom' (see above).
270 +++
271 *** New scrolling commands `scroll-up-line' and `scroll-down-line'
272 scroll a line instead of full screen.
273 +++
274 *** New property `scroll-command' should be set on a command's symbol to
275 define it as a scroll command affected by `scroll-preserve-screen-position'.
276 +++
277 *** If you customize `scroll-conservatively' to a value greater than 100,
278 Emacs will never recenter point in the window when it scrolls due to
279 cursor motion commands or commands that move point (e.f., `M-g M-g').
280 Previously, you needed to use `most-positive-fixnum' as the value of
281 `scroll-conservatively' to achieve the same effect.
282 ---
283 *** "Aggressive" scrolling now honors the scroll margins.
284 If you customize `scroll-up-aggressively' or
285 `scroll-down-aggressively' and move point off the window, Emacs now
286 scrolls the window so as to avoid positioning point inside the scroll
287 margin.
288
289 +++
290 ** Basic SELinux support has been added.
291 This requires Emacs to be linked with libselinux at build time.
292
293 +++
294 *** Emacs preserves the SELinux file context when backing up, and
295 optionally when copying files. The function `copy-file' has an extra
296 optional argument for preserving SELinux context, and the return value
297 of `backup-buffer' now includes the SELinux context.
298
299 +++
300 *** The new functions file-selinux-context and set-file-selinux-context
301 get and set the SELinux context of a file.
302
303 ** Trash changes
304 +++
305 *** `delete-by-moving-to-trash' now only affects commands that specify
306 trashing. This avoids inadvertently trashing temporary files.
307 +++
308 *** Calling `delete-file' or `delete-directory' with a prefix argument
309 now forces true deletion, regardless of `delete-by-moving-to-trash'.
310
311 ** File- and directory-local variable changes
312 +++
313 *** You can stop directory local vars from applying to subdirectories.
314 Add an element (subdirs . nil) to the alist portion of any variables
315 settings to indicate that the section should not apply to
316 subdirectories.
317 +++
318 *** Directory local variables can apply to some file-less buffers.
319 Affected modes include dired, vc-dir, and log-edit. For example,
320 adding "(diff-mode . ((mode . whitespace)))" to .dir-locals.el will
321 turn on `whitespace-mode' for *vc-diff* buffers. Modes should call
322 `hack-dir-local-variables-non-file-buffer' to support this.
323 +++
324 *** Using "mode: MINOR-MODE" to enable a minor mode is deprecated.
325 Instead, use "eval: (minor-mode 1)".
326
327 +++
328 *** The variable `inhibit-first-line-modes-regexps' has been renamed
329 to `inhibit-local-variables-regexps'. As the name suggests, it now
330 applies to ALL file local variables, not just -*- mode ones.
331 The associated `inhibit-first-line-modes-suffixes' has been renamed
332 in the corresponding way.
333
334 ** Graphical interface changes
335 +++
336 *** On graphical displays, the mode-line no longer ends in dashes.
337 Also, the first dash (which does not indicate anything) is just
338 displayed as a space.
339 ---
340 *** `menu-bar-select-buffer-function' lets you choose another operation
341 instead of `switch-to-buffer' when selecting an item in the Buffers menu.
342 ---
343 *** Lucid menus and dialogs can display antialiased fonts if Emacs is
344 built with Xft. These fonts can be set via X resources, for example:
345 Emacs.pane.menubar.font: Courier-12
346
347 +++
348 ** New basic faces `error', `warning', `success'.
349 These are used to highlight text indicating failure, caution or
350 successful operation.
351
352 +++
353 ** New option `list-colors-sort' defines the color sort order
354 for `list-colors-display'.
355
356 +++
357 ** The variable `focus-follows-mouse' now always defaults to nil.
358
359 ** Window changes
360
361 +++
362 *** Resizing an Emacs frame now preserves proportional window sizes,
363 modulo restrictions like window minimum sizes and fixed-size windows.
364
365 *** The behavior of `display-buffer' is now customizable in detail.
366 +++
367 **** New option `display-buffer-base-action' specifies a list of
368 user-determined display "actions" (functions and optional arguments
369 for choosing the displaying window).
370
371 This takes precedence over the default display action, which is
372 specified by `display-buffer-fallback-action'.
373
374 +++
375 **** New option `display-buffer-alist' maps buffer name regexps to
376 display actions, taking precedence over `display-buffer-base-action'.
377
378 +++
379 *** New option `window-combination-limit'.
380 The new option `window-combination-limit' allows to return the space
381 obtained for resizing or creating a window more reliably to the window
382 from which such space was obtained.
383
384 +++
385 *** New option `window-combination-resize'.
386 The new option `window-combination-resize' allows to split a window that
387 otherwise cannot be split because it's too small by stealing space from
388 other windows in the same combination. Subsequent resizing or deletion
389 of the window will resize all windows in the same combination as well.
390
391 +++
392 *** New commands `maximize-window' and `minimize-window'.
393 These maximize and minimize the size of a window within its frame.
394
395 +++
396 *** New commands `switch-to-prev-buffer' and `switch-to-next-buffer'.
397 These functions allow to navigate through the live buffers that have
398 been shown in a specific window.
399
400 ** Minibuffer changes
401 +++
402 *** The inactive minibuffer has its own major mode `minibuffer-inactive-mode'.
403 This is handy for minibuffer-only frames, and is also used for the feature
404 where mouse-1 pops up *Messages*"', which can now easily be changed.
405
406 ---
407 *** Minibuffers set `truncate-lines' to nil.
408 If you want to change the value to something else, you could use
409 for example `minibuffer-setup-hook'.
410
411 +++
412 ** `auto-mode-case-fold' is now enabled by default.
413
414 +++
415 ** `backup-by-copying-when-mismatch' now defaults to t.
416
417 \f
418 * Editing Changes in Emacs 24.1
419
420 ** Search changes
421 +++
422 *** C-y in Isearch is now bound to isearch-yank-kill, instead of
423 isearch-yank-line.
424 +++
425 *** M-y in Isearch is now bound to isearch-yank-pop, instead of
426 isearch-yank-kill.
427 +++
428 *** M-s C-e in Isearch is now bound to isearch-yank-line.
429
430 +++
431 ** New commands `count-words-region' and `count-words'.
432 +++
433 *** M-= is bound to `count-words-region', not `count-lines-region'.
434 The `count-words-region' command, when called interactively, reports
435 the number of lines, words, and characters in the region. It is a
436 superset of the old `count-lines-region', which is now an obsolete
437 alias for it.
438
439 +++
440 ** The command `just-one-space' (M-SPC), if given a negative argument,
441 also deletes newlines around point.
442
443 ** Deletion changes
444 +++
445 *** New option `delete-active-region'.
446 If non-nil, [delete] and DEL delete the region if it is active and no
447 prefix argument is given. If set to `kill', these commands kill
448 instead.
449 +++
450 *** New command `delete-forward-char', bound to [delete].
451 This is meant for interactive use, and obeys `delete-active-region'.
452 The command `delete-char' does not obey `delete-active-region'.
453 ---
454 *** `delete-backward-char' is now a Lisp function.
455 Apart from obeying `delete-active-region', its behavior is unchanged.
456 However, the byte compiler now warns if it is called from Lisp; Lisp
457 callers should use delete-char with a negative argument instead.
458 ---
459 *** The option `mouse-region-delete-keys' has been deleted.
460
461 ** Selection changes.
462
463 The default handling of clipboard and primary selections has been
464 changed to conform with modern X applications. In short, most
465 commands for killing and yanking text now use the clipboard, while
466 mouse commands use the primary selection.
467
468 In the following, we provide a list of these changes, followed by a
469 list of steps to get the old behavior back if you prefer that.
470
471 +++
472 *** `select-active-regions' now defaults to t.
473 Merely selecting text (e.g. with drag-mouse-1) no longer puts it in
474 the kill ring. The selected text is put in the primary selection, if
475 the system possesses a separate primary selection facility (e.g. X).
476
477 +++
478 **** `select-active-regions' also accepts a new value, `only'.
479 This means to only set the primary selection for temporarily active
480 regions (usually made by mouse-dragging or shift-selection);
481 "ordinary" active regions, such as those made with C-SPC followed by
482 point motion, do not alter the primary selection.
483
484 ---
485 **** `mouse-drag-copy-region' now defaults to nil.
486
487 +++
488 *** mouse-2 is now bound to `mouse-yank-primary'.
489 This pastes from the primary selection, ignoring the kill-ring.
490 Previously, mouse-2 was bound to `mouse-yank-at-click'.
491 +++
492 *** `x-select-enable-clipboard' now defaults to t on all platforms.
493 +++
494 *** `x-select-enable-primary' now defaults to nil.
495 Thus, commands that kill text or copy it to the kill-ring (such as
496 M-w, C-w, and C-k) also use the clipboard---not the primary selection.
497
498 ---
499 **** The "Copy", "Cut", and "Paste" items in the "Edit" menu are now
500 exactly equivalent to, respectively M-w, C-w, and C-y.
501
502 ---
503 **** Note that on MS-Windows, `x-select-enable-clipboard' was already
504 non-nil by default, as Windows does not support the primary selection
505 between applications.
506
507 ---
508 *** To return to the previous behavior, do the following:
509 **** Change `select-active-regions' to nil.
510 **** Change `mouse-drag-copy-region' to t.
511 **** Change `x-select-enable-primary' to t (on X only).
512 **** Change `x-select-enable-clipboard' to nil.
513 **** Bind `mouse-yank-at-click' to mouse-2.
514
515 +++
516 *** Support for X cut buffers has been removed.
517 +++
518 *** X clipboard managers are now supported.
519 To inhibit this, change `x-select-enable-clipboard-manager' to nil.
520
521 +++
522 ** New command `rectangle-number-lines', bound to `C-x r N', numbers
523 the lines in the current rectangle. With a prefix argument, this
524 prompts for a number to count from and for a format string.
525
526 +++
527 ** `redisplay-dont-pause' now defaults to t.
528 This makes Emacs feel more responsive to editing commands that arrive
529 at high rate, e.g. if you lean on some key, because stopping redisplay
530 in the middle (when this variable is nil) forces more expensive
531 updates later on, and Emacs appears to be unable to keep up.
532
533 +++
534 ** The behavior of <TAB> for active regions in Text mode has changed.
535 In Text and related modes, typing <TAB> (`indent-for-tab-command')
536 when the region is active causes Emacs to indent all the lines in the
537 region, aligning them with the line previous to the first line in the
538 region (or with the left margin if there is no previous line).
539
540 \f
541 * Changes in Specialized Modes and Packages in Emacs 24.1
542
543 +++
544 ** Archive Mode has basic support for browsing and updating 7z archives.
545
546 ** BibTeX mode
547 ---
548 *** BibTeX mode now supports biblatex.
549 Use the variable `bibtex-dialect' to select different BibTeX dialects.
550 `bibtex-entry-field-alist' is now an obsolete alias for
551 `bibtex-BibTeX-entry-alist'.
552
553 ---
554 *** New command `bibtex-search-entries' bound to C-c C-a.
555 ---
556 *** New `bibtex-entry-format' option `sort-fields', disabled by default.
557 ---
558 *** New variable `bibtex-search-entry-globally'.
559
560 ** Browse-url
561 +++
562 *** New option `browse-url-mailto-function' specifies how to handle "mailto:"s.
563 ---
564 *** The default browser used by the package is now the "xdg-open" program,
565 on platforms that support it. This calls your desktop's preferred browser.
566
567 ** Calendar, Diary, and Appt
568
569 +++
570 *** Diary entries can contain non-printing "comments".
571 See the variable `diary-comment-start'.
572
573 +++
574 *** Appointments can specify their individual warning times.
575 See the variable `appt-warning-time-regexp'.
576
577 ---
578 *** The function specified by `appt-disp-window-function' may be passed
579 lists of arguments if multiple appointments are due at similar times.
580 If you are using a custom function for this, you should update it.
581
582 +++
583 *** New function `diary-hebrew-birthday'.
584
585 ---
586 *** Elements of `calendar-day-abbrev-array' and `calendar-month-abbrev-array'
587 may no longer be nil, but must all be strings.
588
589 ---
590 *** The obsolete (since Emacs 22.1) method of enabling the appt
591 package by adding `appt-make-list' to `diary-hook' has been removed.
592 Use `appt-activate' instead.
593
594 ---
595 *** Some appt variables (obsolete since Emacs 22.1) have been removed:
596 appt-issue-message (use the function appt-activate)
597 appt-visible/appt-msg-window (use the variable appt-display-format)
598
599 ---
600 *** Some diary function aliases (obsolete since Emacs 22.1) have been removed:
601 view-diary-entries, list-diary-entries, show-all-diary-entries
602
603 +++
604 ** CC Mode
605 *** New feature to "guess" the style in an existing buffer.
606 The main entry point is M-x c-guess.
607
608 *** Java Mode now supports Java 5.0 (Tiger) and 6 (Mustang).
609
610 *** c-beginning-of-defun and c-end-of-defun now respect nested scopes:
611 Thus C-M-a will, by default, go to the beginning of the immediate function,
612 not the top level.
613
614 *** "Macros with semicolon" can be registered, for correct indentation.
615 Where such a macro ends a line (no semicolon) the next statement is no longer
616 parsed as a statement continuation.
617
618 ** comint and modes derived from it use the generic completion code.
619
620 ** Compilation mode
621 ---
622 *** Compilation mode can be used without Font Lock mode.
623 `compilation-parse-errors-function' is now obsolete.
624
625 ---
626 *** New variable `compilation-filter-start', bound while
627 `compilation-filter-hook' runs. It records the start position of the
628 text inserted by `compilation-filter'.
629
630 ---
631 *** `compilation-error-screen-columns' and `compilation-first-column'
632 are obeyed in the editing buffer. So programming language modes can
633 set them, whereas previously only the value in the *Compilation*
634 buffer was used.
635
636 ** Customize
637
638 +++
639 *** Customize buffers now contain a search field.
640 The search is performed using `customize-apropos'.
641 To turn off the search field, set `custom-search-field' to nil.
642
643 +++
644 *** Custom options now start out hidden if at their default values.
645 Use the arrow to the left of the option name to toggle visibility.
646
647 ---
648 *** custom-buffer-sort-alphabetically now defaults to t.
649
650 +++
651 *** The color widget now has a "Choose" button, which allows you to
652 choose a color via `list-colors-display'.
653
654 ** D-Bus
655
656 +++
657 *** It is now possible to access buses other than the default system
658 or session bus.
659
660 +++
661 *** The `dbus-register-method' and `dbus-register-property' functions
662 optionally do not register names.
663
664 +++
665 *** The new function `dbus-register-service' registers a known service
666 name on a D-Bus without simultaneously registering a property or a
667 method.
668
669 ** Dired-x
670
671 ---
672 *** C-x C-j (`dired-jump') and C-x 4 C-j (`dired-jump-other-window'),
673 if called with a prefix argument, read a file name from the minibuffer
674 instead of using the current buffer.
675
676 +++
677 *** The "dired local variables" feature of Dired-x is obsolete.
678 The standard directory local variables feature replaces it.
679
680 ** ERC changes
681
682 ---
683 *** New options `erc-autojoin-timing' and `erc-autojoin-delay',
684 controlling attempts to autojoin a channel.
685
686 *** New variable `erc-coding-system-precedence': If we use `undecided'
687 as the server coding system, this variable will then be consulted.
688 The default is to decode strings that can be decoded as utf-8 as
689 utf-8, and do the normal `undecided' decoding for the rest.
690
691 ** Eshell changes
692
693 ---
694 *** The default value of `eshell-directory-name' has changed
695 to be an "eshell" directory in `user-emacs-directory'.
696 The old "~/.eshell/" directory is still used if it exists, though.
697
698 ** gdb-mi
699 +++
700 *** The GDB User Interface has been migrated to GDB Machine Interface.
701 It now supports multithread non-stop debugging and simultaneous
702 debugging of several threads.
703
704 ** Image mode
705
706 +++
707 *** RET (`image-toggle-animation') toggles animation, if applicable.
708 Animation plays once, unless the option `image-animate-loop' is non-nil.
709
710 ** Info
711
712 +++
713 *** New command M-x info-display-manual displays a named Info manual.
714 If that manual is already visited in some Info buffer, it displays
715 that buffer. (This is handy if you have many manuals in many *info*
716 buffers, and don't remember the name of the buffer visiting the manual
717 you want to consult.) Otherwise, it loads and displays the manual.
718
719 +++
720 *** `e' is now bound to `end-of-buffer' rather than to `Info-edit'.
721 This is for compatibility with the stand-alone Info reader program,
722 and also because `Info-edit' is a rarely used command that is disabled
723 by default.
724
725 ** Mail mode changes (not Message mode)
726 +++
727 *** New command M-x mail-add-attachment for adding MIME attachments
728 ---
729 *** The command `mail-attach-file' was renamed to `mail-insert-file'
730 (its name is misleading, since it has nothing to do with MIME
731 attachments). The old name is now an obsolete alias to the new name.
732
733 +++
734 ** MH-E has been upgraded to MH-E version 8.3.1.
735 See MH-E-NEWS for details.
736
737 ---
738 ** Modula-2 mode provides auto-indentation.
739
740 ---
741 ** mpc.el: Can use pseudo tags of the form tag1|tag2 as a union of two tags.
742
743 +++
744 ** nXML mode no longer binds C-RET to `nxml-complete'.
745 Completion is now performed via `completion-at-point', bound to M-TAB.
746 If `nxml-bind-meta-tab-to-complete-flag' is non-nil (the default),
747 this performs tag completion.
748
749 ---
750 ** Prolog mode has been completely revamped, with lots of additional
751 functionality such as more intelligent indentation, electricity,
752 support for more variants, including Mercury, and a lot more.
753
754 ** Rmail
755
756 +++
757 *** The command `rmail-epa-decrypt' decrypts OpenPGP data
758 in the Rmail incoming message.
759
760 ---
761 *** The variable `rmail-message-filter' no longer has any effect.
762 This change was made in Emacs 23.1 but was not advertised at the time.
763 Try using `rmail-show-message-hook' instead.
764
765 ** Shell mode
766 +++
767 *** Shell mode uses pcomplete rules, with the standard completion UI.
768 +++
769 *** The `shell' command prompts for the shell path name if the default
770 directory is a remote file name and neither the environment variable
771 $ESHELL nor the variable `explicit-shell-file-name' is set.
772
773 ** SMTPmail
774
775 +++
776 *** smtpmail now uses encrypted connections (via STARTTLS) by default
777 if the mail server supports them. This uses either built-in GnuTLS
778 support, or the starttls.el library. Customize `smtpmail-stream-type'
779 to change this.
780
781 +++
782 *** The variable `smtpmail-auth-credentials' has been removed.
783 By default, the information is now stored in the file ~/.authinfo.
784 This was the default value of smtpmail-auth-credentials.
785 If you had customized smtpmail-auth-credentials to a list of user
786 names and passwords, those settings will not be used. Your first
787 connection to the smtp server will prompt for the user name and password,
788 and then offer to save them to the ~/.authinfo file. Or you can
789 manually copy the credentials to your ~/.authinfo files. For example,
790 if you had
791
792 (setq smtpmail-auth-credentials
793 '(("mail.example.org" 25 "jim" "s!cret")))
794
795 then the equivalent line in ~/.authinfo would be
796
797 machine mail.example.org port 25 login jim password s!cret
798
799 See the auth-source manual for more information, e.g. on encrypting
800 the credentials file.
801
802 +++
803 *** The variable `smtpmail-starttls-credentials' has been removed.
804
805 If you had that set, then you need to put
806
807 machine smtp.whatever.foo port 25 key "~/.my_smtp_tls.key" cert "~/.my_smtp_tls.cert"
808
809 in your ~/.authinfo file instead.
810
811 ---
812 ** SQL mode
813
814 ---
815 *** New options `sql-port', `sql-connection-alist', `sql-send-terminator',
816 and `sql-oracle-scan-on'.
817
818 ---
819 *** New custom variables control prompting for login parameters.
820 Each supported product has a custom variable `sql-*-login-params',
821 which is a list of the parameters to be prompted for before a
822 connection is established.
823
824 ---
825 *** The command `sql-product-interactive' now takes a prefix argument,
826 which causes it to prompt for an SQL product.
827
828 ---
829 *** Product-specific SQL interactive commands now take prefix arguments.
830 These commands (`sql-sqlite', `sql-postgres', `sql-mysql', etc.),
831 given a prefix argument, prompt for a name for the SQL interactive
832 buffer. This reduces the need for calling `sql-rename-buffer'.
833
834 ---
835 *** SQL interactive modes suppress command continuation prompts, and
836 replace tabs with spaces. The first change impacts multiple line SQL
837 statements entered with C-j between each line, statements yanked into
838 the buffer and statements sent with `sql-send-*' functions. The
839 second prevents the MySQL and Postgres interpreters from listing
840 object name completions when sent text via `sql-send-*' functions.
841
842 ---
843 *** New command `sql-connect' starts a predefined SQLi session,
844 using the login parameters from `sql-connection-alist'.
845
846 ---
847 *** New "Save Connection" menu item in SQLi buffers.
848 This gathers the login params specified for the SQLi session, if it
849 was not started by a connection, and saves them as a new connection.
850
851 ---
852 *** New commands for listing database objects and details:
853 sql-list-all and sql-list-table.
854
855 ---
856 *** An API for manipulating SQL product definitions has been added.
857
858 ** TeX modes
859
860 +++
861 *** latex-electric-env-pair-mode keeps \begin..\end matched on the fly.
862
863 ** Tramp
864 ---
865 *** New inline access method "ksu" (kerberized su).
866 ---
867 *** The following access methods are discontinued: "ssh1_old",
868 "ssh2_old", "scp1_old", "scp2_old", "imap", "imaps" and "fish".
869 +++
870 *** The user option `remote-file-name-inhibit-cache' controls whether
871 remote file attributes are cached for better performance.
872 ---
873 *** The option `ange-ftp-binary-file-name-regexp' has changed its
874 default value to "".
875 ---
876 *** Handlers for `file-selinux-context' and `set-file-selinux-context'
877 for remote machines which support SELinux.
878
879 +++
880 ** New function, `url-queue-retrieve', which behaves like url-retrieve,
881 but with limits (`url-queue-parallel-processes', `url-queue-timeout') on
882 the degree of parallelism.
883
884 ** VC and related modes
885
886 +++
887 *** Support for pulling on distributed version control systems.
888 The command C-x v + (`vc-pull') runs a "pull" operation, if it is
889 supported (currently with Bzr, Git, and Mercurial), to update the
890 current branch and working tree. A prefix argument means to prompt
891 the user for specifics, e.g. a pull location.
892
893 ---
894 *** `vc-update' is now an alias for `vc-pull'.
895
896 +++
897 *** Support for merging on distributed version control systems.
898 The command C-x v m (`vc-merge') now runs a "merge" operation, if it
899 is supported (currently with Bzr, Git, and Mercurial), to merge
900 changes from another branch into the current one. It prompts for
901 specifics, e.g. a merge source.
902
903 +++
904 *** New option `vc-revert-show-diff' controls whether `vc-revert'
905 shows a diff while querying the user. It defaults to t.
906
907 +++
908 *** Log entries in some Log View buffers can be toggled to display a
909 longer description by typing RET (log-view-toggle-entry-display).
910 This is currently supported for Bzr, Git, and Mercurial (to support
911 another backend, define a `log-view-expanded-log-entry-function').
912 In the Log View buffers made by C-x v L (`vc-print-root-log'), you can
913 use this to display the full log entry for the revision at point.
914
915 +++
916 *** New command `vc-ediff' allows visual comparison of two revisions
917 of a file similar to `vc-diff', but using ediff backend.
918
919 +++
920 *** The option `vc-initial-comment' was removed in Emacs 23.2, but
921 this was not advertised at the time.
922
923 +++
924 *** `vc-toggle-read-only' is an obsolete alias for `toggle-read-only'.
925 Since Emacs 23, it has done the same thing as `toggle-read-only', but
926 this was not advertised at the time.
927
928 ** Obsolete modes
929
930 ---
931 *** abbrevlist.el
932
933 ---
934 *** erc-hecomplete.el (use erc-pcomplete.el instead)
935
936 *** partial-completion-mode (complete.el) is obsolete.
937 You can get a comparable behavior with:
938 (setq completion-styles '(partial-completion initials))
939 (setq completion-pcm-complete-word-inserts-delimiters t)
940
941 ---
942 *** pc-mode.el is obsolete (CUA mode is much more comprehensive).
943
944 +++
945 *** pgg is obsolete (use EasyPG instead)
946
947 ---
948 *** sregex.el is obsolete, since rx.el is a strict superset.
949
950 ---
951 *** s-region.el and pc-select.el are obsolete.
952 They are superseded by shift-select-mode, enabled by default since 23.1.
953
954 +++
955 *** vc-mcvs.el is obsolete (for lack of a maintainer)
956
957 ** Miscellaneous
958
959 +++
960 *** The Landmark game is now invoked with `landmark', not `lm'.
961 Its functions and variables have been similarly renamed.
962
963 ---
964 *** In `ido-file-completion-map', C-v is no longer bound to ido-toggle-vc.
965 (This interfered with cua-mode.)
966
967 +++
968 *** f90.el has some support for Fortran 2008 syntax.
969
970 ---
971 *** `copyright-fix-years' can optionally convert consecutive years to ranges.
972
973 +++
974 *** New command `nato-region' converts text to NATO phonetic alphabet.
975
976 \f
977 * New Modes and Packages in Emacs 24.1
978
979 +++
980 ** Occur Edit mode applies edits made in *Occur* buffers to the
981 original buffers. It is bound to "e" in Occur mode.
982
983 ** When `occur' is called with the prefix argument `C-u'
984 the matching strings are collected into the `*Occur*' buffer
985 without line numbers. If there are parenthesized subexpressions
986 in the specified regexp, `occur' reads replacement text that
987 may contain \\& and \\N whose convention follows `replace-match'.
988
989 +++
990 ** New global minor mode electric-pair-mode.
991 When enabled, typing an open parenthesis automatically inserts the
992 matching closing one.
993
994 +++
995 ** New global minor mode electric-indent-mode.
996 When enabled, typing certain characters triggers reindentation.
997 Major modes wishing to use this can set electric-indent-chars or
998 electric-indent-functions.
999
1000 +++
1001 ** New global minor mode electric-layout-mode.
1002 When enabled, typing certain characters automatically inserts newlines.
1003 Major modes wishing to use this can set electric-layout-rules.
1004
1005 +++
1006 ** tabulated-list.el provides a generic major mode for tabulated data,
1007 from which other modes can be derived.
1008
1009 ** pcase.el provides the ML-style pattern matching macro `pcase'.
1010
1011 +++
1012 ** secrets.el is an implementation of the Secret Service API, an
1013 interface to password managers like GNOME Keyring or KDE Wallet. The
1014 Secret Service API requires D-Bus for communication. The command
1015 `secrets-show-secrets' offers a buffer with a visualization of the
1016 secrets.
1017
1018 +++
1019 ** notifications.el provides an implementation of the Desktop
1020 Notifications API. It requires D-Bus for communication.
1021
1022 ---
1023 ** soap-client.el supports access to SOAP web services from Emacs.
1024 soap-inspect.el is an interactive inspector for SOAP WSDL structures.
1025
1026 ---
1027 ** New generic mode, xmodmap-generic-mode, for xmodmap files.
1028
1029 ---
1030 ** New emacs-lock.el package.
1031 The previous version has been moved to obsolete/old-emacs-lock.el.
1032 Now, there is a proper minor mode `emacs-lock-mode'. Protection
1033 against exiting Emacs and killing the buffer can be set separately.
1034 The mechanism for automatically turning off protection for buffers
1035 with dead inferior processes has been generalized.
1036
1037 \f
1038 * Incompatible Lisp Changes in Emacs 24.1
1039
1040 +++
1041 ** Passing a nil argument to a minor mode function call now ENABLES
1042 the minor mode unconditionally. This is so that you can write e.g.
1043
1044 (add-hook 'text-mode-hook 'foo-minor-mode)
1045
1046 to enable foo-minor-mode in Text mode buffers, removing the need for
1047 `turn-on-foo-minor-mode' style functions. This affects all mode
1048 commands defined by `define-minor-mode'. If called interactively, the
1049 mode command still toggles the minor mode.
1050
1051 +++
1052 ** The return value of `backup-buffer' has changed.
1053 It is now a list of three elements, where the second element is a list
1054 describing the original file's SELinux context. If Emacs or the
1055 system lacks SELinux support, the context list is (nil nil nil nil).
1056 See "Basic SELinux support" above, under "Changes in Emacs 24.1".
1057
1058 ---
1059 ** `char-direction-table' and the associated function `char-direction'
1060 were deleted. They were buggy and inferior to the new support of
1061 bidirectional editing introduced in Emacs 24. If you need the
1062 bidirectional properties of a character, use `get-char-code-property'
1063 with the last argument `bidi-class'.
1064
1065 +++
1066 ** `copy-directory' now copies the source directory as a subdirectory
1067 of the target directory, if the latter is an existing directory. The
1068 new optional arg COPY-CONTENTS, if non-nil, makes the function copy
1069 the contents directly into a pre-existing target directory.
1070
1071 +++
1072 ** For mouse click input events in the text area, the Y pixel
1073 coordinate in the POSITION list now counts from the top of the text
1074 area, excluding any header line. Previously, it counted from the top
1075 of the header line.
1076
1077 ---
1078 ** Support for "old-style" backquotes, obsolete for 10+ years, has
1079 been further reduced. Now a backquote not followed by a space is
1080 always treated as a "new-style" backquote. Please remove all
1081 "old-style" backquotes from your code. If your code uses backquotes
1082 as documented in the Elisp manual, and compiles without warning, then
1083 you have nothing to do in this regard. Code not following the
1084 appropriate conventions may fail to compile.
1085
1086 The most common cause of trouble seems to be an old-style backquote
1087 followed by a newline. Another cause of trouble is vector notation
1088 for key sequence notation: instead of [(control ,)] and [(control ')],
1089 you should write [(control ?,)] and [(control ?')], which will work in
1090 older Emacsen too.
1091
1092 +++
1093 ** The macro `eval-at-startup' was removed in Emacs 23.2, but this
1094 was not advertised at the time. The function `custom-initialize-delay'
1095 replaced all known uses.
1096
1097 ---
1098 ** `view-buffer' now treats special mode-class in the same way that
1099 `view-file' has since Emacs 22 (i.e. it won't enable View mode if the
1100 major mode is special).
1101
1102 ** Menu and tool bar changes
1103
1104 +++
1105 *** During startup, Emacs no longer adds entries for `menu-bar-lines'
1106 and `tool-bar-lines' to `default-frame-alist' and `initial-frame-alist'.
1107 With these alist entries omitted, `make-frame' checks the value of the
1108 variable `menu-bar-mode'/`tool-bar-mode' to determine whether to create
1109 a menu-bar or tool-bar, respectively. If the alist entries are added,
1110 they override the value of `menu-bar-mode'/`tool-bar-mode'.
1111
1112 +++
1113 *** The menu bar bindings's caches are not used any more.
1114 Use (where-is-internal <def> nil t) instead.
1115
1116 +++
1117 ** Regions created by mouse dragging are now normal active regions,
1118 similar to the ones created by shift-selection (see Selection changes
1119 above). In previous Emacs versions, these regions were delineated by
1120 `mouse-drag-overlay'; that variable has been removed.
1121
1122 +++
1123 ** The fourth argument of `filter-buffer-substring' has been removed.
1124 If you want to remove text properties from the final result, simply
1125 pass the result through substring-no-properties.
1126
1127 ---
1128 ** cl.el no longer provides `cl-19'.
1129
1130 +++
1131 ** The following obsolete functions and aliases have been removed
1132 (the appropriate new function is given in parentheses; "not needed"
1133 means you can just remove all calls to the function in question):
1134
1135 *** `comint-kill-output' (`comint-delete-output')
1136 *** `decompose-composite-char' (`char-to-string')
1137 *** `outline-visible' (`outline-invisible-p')
1138 *** `internal-find-face' (`facep')
1139 *** `internal-get-face' (`facep and check-face')
1140 *** `frame-update-faces' (not needed)
1141 *** `frame-update-face-colors' (`frame-set-background-mode')
1142 *** `x-frob-font-weight' and `x-frob-font-slant' (`make-face-*' functions)
1143 *** `x-make-font-bold and x-make-font-demibold (make-face-bold)
1144 *** `x-make-font-italic' and `x-make-font-oblique' (`make-face-italic')
1145 *** `x-make-font-bold-italic' (`make-face-bold-italic')
1146 *** `x-make-font-unbold' (`make-face-unbold')
1147 *** `x-make-font-unitalic' (`make-face-unitalic')
1148 *** `mldrag-drag-mode-line' (`mouse-drag-mode-line')
1149 *** `mldrag-drag-vertical-line' (`mouse-drag-vertical-line')
1150 *** `iswitchb-default-keybindings' (`iswitchb-mode')
1151 *** `char-bytes' (== 1)
1152 *** `isearch-return-char' (`isearch-printing-char')
1153 *** `make-local-hook' (not needed)
1154 *** `set-screen-height' (`set-frame-height')
1155 *** `set-screen-width' (`set-frame-width')
1156
1157 +++
1158 ** The following obsolete variables and varaliases have been removed
1159 (the appropriate new variable is given in parentheses):
1160
1161 *** `checkdoc-minor-keymap' (`checkdoc-minor-mode-map')
1162 *** `vc-header-alist' (`vc-BACKEND-header')
1163 *** `directory-sep-char' (== ?/)
1164 *** `font-lock-defaults-alist' (`font-lock-defaults')
1165 *** `e' (`float-e').
1166
1167 ---
1168 ** The following obsolete files were removed:
1169 sc.el, x-menu.el, rnews.el, rnewspost.el
1170
1171 ---
1172 ** The format of the finder-inf.el file has changed, since the Finder
1173 mechanism is now based on the package system. The variable
1174 `finder-package-info' is replaced by `package--builtins' and
1175 `finder-keywords-hash'.
1176
1177 ---
1178 ** When generating autoloads, `update-directory-autoloads' no longer
1179 assumes every inspected file is in your `load-path'. It instead
1180 generates relative names according to the current `load-path'.
1181
1182 \f
1183 * Lisp changes in Emacs 24.1
1184
1185 +++
1186 ** Code can now use lexical scoping by default instead of dynamic scoping.
1187 The `lexical-binding' variable lets code use lexical scoping for local
1188 variables. It is typically set via a file-local variable in the first
1189 line of the file, in which case it applies to all the code in that file.
1190 +++
1191 *** `eval' takes a new optional argument `lexical' to choose the new lexical
1192 binding instead of the old dynamic binding mode.
1193 +++
1194 *** Lexically scoped interpreted functions are represented with a new form
1195 of function value which looks like (closure ENV ARGS &rest BODY).
1196
1197 *** New macro `letrec' to define recursive local functions.
1198 +++
1199 *** New function `special-variable-p' to check whether a variable is
1200 declared as dynamically bound.
1201
1202 +++
1203 ** An Emacs Lisp testing tool is now included.
1204 Emacs Lisp developers can use this tool to write automated tests for
1205 their code. See the ERT info manual for details.
1206
1207 ** Changes for bidirectional display and editing
1208
1209 +++
1210 *** New function `current-bidi-paragraph-direction'.
1211 This returns the base direction of the paragraph at point.
1212
1213 +++
1214 *** New function `bidi-string-mark-left-to-right'.
1215 Given a string containing characters from right-to-left (RTL) scripts,
1216 this function returns another string which can be safely inserted into
1217 a buffer, such that any following text will be always displayed to the
1218 right of that string. (This works by appending an invisible Unicode
1219 "LEFT-TO-RIGHT MARK" character if the argument string might need it.)
1220
1221 This is useful when the buffer has overall left-to-right paragraph
1222 direction and you need to insert a string whose contents and
1223 directionality are not known in advance, without disrupting the layout
1224 of the line.
1225
1226 ** Window changes
1227 +++
1228 *** Window tree functions are accessible in Elisp.
1229 Functions are provided to return the parent, siblings or child windows
1230 of any window including internal windows (windows not associated with a
1231 buffer) in the window tree.
1232 +++
1233 **** New function `window-valid-p' gives non-nil for live and internal
1234 windows.
1235 +++
1236 **** Window manipulation can deal with internal windows.
1237 Many window handling functions like `split-window', `delete-window', or
1238 `delete-other-windows' as well as the window resizing functions can now
1239 act on any window including internal ones.
1240 +++
1241 *** window-total-height/-width vs window-body-height/-width.
1242 The function `window-height' has been renamed to `window-total-height'
1243 and `window-width' has been renamed to `window-body-width'. The old
1244 names are provided as aliases. Two new functions `window-total-width'
1245 and `window-body-height' are provided.
1246 +++
1247 *** Window parameters specific to window handling functions.
1248 For each window you can specify a parameter to override the default
1249 behavior of a number of functions like `split-window', `delete-window'
1250 and `delete-other-windows'. The variable `ignore-window-parameters'
1251 allows to ignore processing such parameters.
1252 +++
1253 *** New semantics of third argument of `split-window'.
1254 The third argument of `split-window' has been renamed to SIDE and can be
1255 set to any of the values 'below, 'right, 'above, or 'left to make the
1256 new window appear on the corresponding side of the window that shall be
1257 split. Any other value of SIDE will cause `split-window' to split the
1258 window into two side-by-side windows as before.
1259 +++
1260 *** Window resizing functions.
1261 A new standard function for resizing windows called `window-resize' has
1262 been introduced. This and all other functions for resizing windows no
1263 longer delete any windows when they become too small.
1264 +++
1265 *** Deleting the selected window now selects the most recently selected
1266 live window on that frame instead.
1267 +++
1268 *** `adjust-window-trailing-edge' adjustments.
1269 `adjust-window-trailing-edge' can now deal with fixed-size windows and
1270 is able to resize other windows if a window adjacent to the trailing
1271 edge cannot be shrunk any more. This makes its behavior more similar to
1272 that of Emacs 21 without compromising, however, its inability to delete
1273 windows which was introduced in Emacs 22.
1274 +++
1275 *** Window-local buffer lists.
1276 Windows now have local buffer lists. This means that removing a buffer
1277 from display in a window will preferably show the buffer previously
1278 shown in that window with its previous window-start and window-point
1279 positions. This also means that the same buffer may be automatically
1280 shown twice even if it already appears in another window.
1281 +++
1282 *** `switch-to-buffer' has a new optional argument FORCE-SAME-WINDOW,
1283 which if non-nil requires the buffer to be displayed in the currently
1284 selected window, signaling an error otherwise. If nil, another window
1285 can be used, e.g. if the selected one is strongly dedicated.
1286 +++
1287 *** `split-window-vertically' and `split-window-horizontally' renamed
1288 to `split-window-below' and `split-window-right' respectively.
1289 The old names are kept as aliases.
1290 +++
1291 *** Display actions
1292
1293 **** The second arg to `display-buffer' and `pop-to-buffer' is now
1294 named ACTION, and takes a display action of the same form as
1295 `display-buffer-base-action' (see Changes, above). A non-nil,
1296 non-list value is treated specially, as the old meaning.
1297
1298 **** New variable `display-buffer-overriding-action'.
1299
1300 **** The procedure of `display-buffer' etc. to choose a window is
1301 determined by combining `display-buffer-overriding-action',
1302 `display-buffer-alist', the ACTION arg, `display-buffer-base-action',
1303 and `display-buffer-fallback-action'. The second and fourth of these
1304 are user-customizable variables.
1305
1306 See the docstring of `display-buffer' for details.
1307
1308 +++
1309 *** New behavior of `quit-window'.
1310 The behavior of `quit-window' has been changed in order to restore the
1311 state before the last buffer display operation in that window.
1312
1313 +++
1314 *** The new option `frame-auto-hide-function' lets you choose between
1315 iconifying or deleting a frame when burying a buffer shown in a dedicated
1316 frame or quitting a window showing a buffer in a frame of its own.
1317
1318 +++
1319 *** New functions `window-state-get' and `window-state-put'.
1320 These functions allow to save and restore the state of an arbitrary
1321 frame or window as an Elisp object.
1322
1323 ** Completion
1324
1325 *** New variable `completion-extra-properties' used to specify extra
1326 properties of the current completion:
1327 - :annotate-function, same as the old completion-annotate-function.
1328 - :exit-function, function to call after completion took place.
1329
1330 *** Functions on `completion-at-point-functions' can return any of the
1331 properties valid for `completion-extra-properties'.
1332
1333 +++
1334 *** `completion-annotate-function' is obsolete.
1335
1336 *** New `metadata' method for completion tables. The metadata thus returned
1337 can specify various details of the data returned by `all-completions':
1338 - `category' is the kind of objects returned (e.g., `buffer', `file', ...),
1339 used to select a style in completion-category-overrides.
1340 - `annotation-function' to add annotations in *Completions*.
1341 - `display-sort-function' to specify how to sort entries in *Completions*.
1342 - `cycle-sort-function' to specify how to sort entries when cycling.
1343
1344 *** `minibuffer-local-filename-must-match-map' is not used any more.
1345 Instead, the bindings in `minibuffer-local-filename-completion-map'
1346 are combined with `minibuffer-local-must-match-map'.
1347
1348 *** New variable `completing-read-function' allows overriding the
1349 behavior of `completing-read'.
1350
1351 +++
1352 ** `glyphless-char-display' can now distinguish between graphical and
1353 text terminal display, via a char-table entry that is a cons cell.
1354
1355 +++
1356 ** `pre-command-hook'/`post-command-hook' are not reset to nil on error.
1357 Instead, the offending function is removed.
1358
1359 ** New hook types
1360
1361 +++
1362 *** New function `run-hook-wrapped' for running an abnormal hook by
1363 passing the hook functions as arguments to a "wrapping" function.
1364 Like `run-hook-with-args-until-success', it stops at the first
1365 non-nil return value.
1366
1367 +++
1368 *** New macro `with-wrapper-hook' for running an abnormal hook as a
1369 set of "wrapping" filters, similar to around advice.
1370 (A version of this macro was actually added in Emacs 23.2 but was not
1371 advertised at the time.)
1372
1373 ** Debugger changes
1374 +++
1375 *** New macro `condition-case-unless-debug' (this was actually added in
1376 Emacs 23.1 as condition-case-no-debug, but not advertised)
1377 +++
1378 *** The macro `with-demoted-errors' was added in Emacs 23.1, but not advertised.
1379 ---
1380 *** Variable `stack-trace-on-error' removed.
1381 +++
1382 *** The debugger can now "continue" from an error, which means it will
1383 jump to the error handler as if the debugger had not been invoked
1384 instead of jumping all the way to the top-level.
1385 +++
1386 *** Set `debug-on-event' to enter the debugger on events like SIGUSR1.
1387 This can be useful when `inhibit-quit' is set.
1388
1389 +++
1390 ** The new function `server-eval-at' allows evaluation of Lisp forms on
1391 named Emacs server instances.
1392
1393 +++
1394 ** `call-process' and `call-process-region' allow a `(:file "file")' spec
1395 to redirect STDOUT to a file.
1396
1397 +++
1398 ** The function `format-time-string' now supports the %N directive,
1399 for higher-resolution time stamps.
1400
1401 ** New input reading functions
1402 +++
1403 *** New function `read-char-choice' reads a restricted set of
1404 characters, discarding any inputs not inside the set.
1405 +++
1406 *** The command `read-color' now requires a match for a color name
1407 or RGB triplet, instead of signaling an error if the user provides
1408 invalid input.
1409 ---
1410 **** `facemenu-read-color' is now an alias for `read-color'.
1411
1412 +++
1413 ** `image-library-alist' is renamed to `dynamic-library-alist'.
1414 The variable is now used to load all kind of supported dynamic libraries,
1415 not just image libraries. The previous name is still available as an
1416 obsolete alias.
1417
1418 ** Syntax parsing changes
1419 +++
1420 *** New variable `syntax-propertize-function'.
1421 This replaces `font-lock-syntactic-keywords' which is now obsolete.
1422 This allows syntax-table properties to be set independently from font-lock:
1423 just call syntax-propertize to make sure the text is propertized.
1424 Together with this new variable come a new hook
1425 syntax-propertize-extend-region-functions, as well as two helper functions:
1426 syntax-propertize-via-font-lock to reuse old font-lock-syntactic-keywords
1427 as-is; and syntax-propertize-rules which provides a new way to specify
1428 syntactic rules.
1429 +++
1430 *** Syntax tables support a new "comment style c" additionally to style b.
1431
1432 +++
1433 ** New hook `post-self-insert-hook', run after `self-insert-command'.
1434
1435 ---
1436 ** frame-local variables cannot be let-bound any more.
1437
1438 ** Major and minor mode changes
1439 +++
1440 *** `set-auto-mode' now respects mode: local variables at the end of files,
1441 as well as those in the -*- line.
1442 +++
1443 *** `prog-mode' is a new major mode from which programming modes
1444 should be derived.
1445 +++
1446 **** `prog-mode-hook' can be used to enable features for programming
1447 modes, e.g. (add-hook 'prog-mode-hook 'flyspell-prog-mode) to enable
1448 on-the-fly spell checking for comments and strings.
1449 +++
1450 *** New hook `change-major-mode-after-body-hook', run by
1451 `run-mode-hooks' just before any other mode hooks.
1452 +++
1453 *** Enabled globalized minor modes can be disabled in specific major modes.
1454 If the global mode is global-FOO-mode, then run (FOO-mode -1) in the
1455 major mode's hook, where FOO-mode toggles the mode on a per-buffer basis.
1456 +++
1457 *** `define-minor-mode' accepts new keywords :variable, :after-hook.
1458
1459 ** File-handling changes
1460
1461 +++
1462 *** `delete-file' and `delete-directory' now accept optional arg TRASH.
1463 Trashing is performed if TRASH and `delete-by-moving-to-trash' are
1464 both non-nil. Interactively, TRASH defaults to t, unless a prefix
1465 argument is supplied (see Trash changes, above).
1466
1467 +++
1468 *** New file predicates: `file-equal-p', `file-in-directory-p'.
1469
1470 +++
1471 ** Tool-bars can display separators.
1472 Tool-bar separators are handled like menu separators in menu-bar maps,
1473 i.e. via menu entries of the form `(menu-item "--")'.
1474
1475 ** Image API
1476
1477 +++
1478 *** Animated images support (currently animated gifs only).
1479
1480 +++
1481 **** `image-animated-p' returns non-nil if an image can be animated.
1482
1483 +++
1484 **** `image-animate' animates a supplied image spec.
1485
1486 +++
1487 **** `image-animate-timer' returns the timer object for an image that
1488 is being animated.
1489
1490 ---
1491 *** `image-extension-data' has been renamed to `image-metadata'.
1492 The old name is an obsolete alias to the new one.
1493
1494 +++
1495 *** Image mode can view any image type that ImageMagick supports.
1496 This requires Emacs to be built with ImageMagick support.
1497
1498 **** New function `imagemagick-types', defined if ImageMagick support
1499 is enabled, returns a list of image file extensions that your
1500 ImageMagick installation supports.
1501
1502 **** New function `imagemagick-register-types' enables ImageMagick
1503 image types in Image mode and in `create-image' and other helper
1504 functions.
1505
1506 **** New option `imagemagick-types-inhibit' excludes certain
1507 ImageMagick image types from `imagemagick-register-types'.
1508
1509 ---
1510 **** With ImageMagick support, there are extra Image mode commands to
1511 resize and rotate images: `image-transform-fit-to-height',
1512 `image-transform-fit-to-width', `image-transform-set-rotation', and
1513 `image-transform-set-scale'.
1514
1515 ---
1516 ** `compose-mail' now accepts an optional 8th arg, RETURN-ACTION, and
1517 passes it to the mail user agent function. This argument specifies an
1518 action for returning to the caller after finishing with the mail. For
1519 example, this is used by Rmail to optionally delete a mail window.
1520
1521 +++
1522 ** XML and HTML parsing
1523 If Emacs is compiled with libxml2 support, there are two new
1524 functions: `libxml-parse-html-region' (which parses "real world" HTML)
1525 and `libxml-parse-xml-region' (which parses XML). Both return an
1526 Emacs Lisp parse tree.
1527
1528 ** Networking and encryption changes
1529
1530 +++
1531 *** `open-network-stream' can now be used to open an encrypted stream.
1532 It now accepts an optional `:type' parameter for initiating a TLS
1533 connection, directly or via STARTTLS. To do STARTTLS, additional
1534 parameters (`:end-of-command', `:success', `:capabilities-command')
1535 must also be supplied.
1536
1537 *** New library gnutls.el.
1538
1539 If Emacs is built with GnuTLS support, the function
1540 `gnutls-available-p' is defined and returns non-nil. The main entry
1541 points are `open-gnutls-stream' and `gnutls-negotiate'. It's easiest
1542 to use these functions through `open-network-stream', because that can
1543 upgrade connections through STARTTLS opportunistically or use plain
1544 SSL, depending on your needs. For debugging, set `gnutls-log-level'
1545 greater than 0.
1546
1547 +++
1548 *** New primitive `secure-hash' that supports many secure hash algorithms:
1549 md5, sha1, sha2, sha224, sha256, sha384, and sha512. The lisp library
1550 sha1.el has been removed. The `sha1' feature is provided by default.
1551
1552 ** Isearch
1553
1554 ---
1555 *** New hook `isearch-update-post-hook' that runs in `isearch-update'.
1556
1557 +++
1558 ** Progress reporters can now "spin".
1559 The MIN-VALUE and MAX-VALUE arguments of `make-progress-reporter' can
1560 now be nil, or omitted. This makes a "non-numeric" reporter. Each
1561 time you call `progress-reporter-update' on that progress reporter,
1562 with a nil or omitted VALUE argument, the reporter message is
1563 displayed with a "spinning bar".
1564
1565 +++
1566 ** New variable `revert-buffer-in-progress-p' is true while a buffer is
1567 being reverted, even if the buffer has a local `revert-buffer-function'.
1568
1569 +++
1570 ** New variables `delayed-warnings-list' and `delayed-warnings-hook'.
1571 If delayed-warnings-list is non-nil, the command loop calls
1572 `delayed-warnings-hook' after `post-command-hook'. At present, this
1573 is only used by Emacs on some platforms to display warnings during
1574 startup, which might otherwise not be noticed. This uses the
1575 functions `display-delayed-warnings' and `collapse-delayed-warnings'.
1576
1577 ---
1578 ** rx.el has a new `group-n' construct for explicitly numbered groups.
1579
1580 +++
1581 ** New function `make-composed-keymap' that constructs a new keymap
1582 from multiple input maps. You can use this to make a keymap that
1583 inherits from multiple maps, eg:
1584 (set-keymap-parent newmap (make-composed-keymap othermap parent))
1585
1586 +++
1587 ** New function `string-prefix-p'.
1588 (This was actually added in Emacs 23.2 but was not advertised at the time.)
1589
1590 +++
1591 ** New reader macro ## that stands for the empty symbol.
1592 This means that the empty symbol can now be read back. Also, #: by itself
1593 (when not immediately followed by a possible symbol character) stands for
1594 an empty uninterned symbol.
1595
1596 +++
1597 ** New math functions `isnan', `copysign', `frexp', `ldexp'.
1598
1599 ** The following functions and variables are obsolete:
1600
1601 ---
1602 *** `tooltip-use-echo-area' is obsolete.
1603 Rather than setting this to t, disable Tooltip mode instead.
1604
1605 +++
1606 *** buffer-substring-filters is obsolete.
1607 Use `filter-buffer-substring-functions' instead.
1608
1609 ---
1610 *** `byte-compile-disable-print-circle' is obsolete.
1611
1612 ---
1613 *** `deferred-action-list' and `deferred-action-function' are obsolete.
1614 Use `post-command-hook' instead.
1615
1616 +++
1617 *** `font-lock-maximum-size' is obsolete.
1618
1619 \f
1620 * Changes in Emacs 24.1 on non-free operating systems
1621
1622 ---
1623 ** On MS Windows, Emacs warns when using the obsolete init file _emacs,
1624 and also when HOME is set to C:\ by default.
1625
1626 ** New configure.bat options
1627
1628 +++
1629 *** --enable-checking builds Emacs with extra runtime checks.
1630
1631 +++
1632 *** --distfiles specifies files to be included in binary distribution.
1633
1634 +++
1635 *** --without-gnutls disables automatic GnuTLS detection.
1636
1637 +++
1638 *** --lib for general library linkage, works with the USER_LIBS build variable.
1639
1640 +++
1641 ** New make target `dist' to create binary distribution for MS Windows.
1642
1643 ---
1644 ** The Lisp function `w32-default-color-map' is now obsolete.
1645 (It is only used internally in the Emacs C code.)
1646
1647 +++
1648 ** Customize ns-auto-hide-menu-bar to have the menu-bar hidden, but
1649 reappear on mouse-over. (Requires OS X 10.6 or later.)
1650
1651 +++
1652 ** On Mac OS X, dragging a file into Emacs visits the file, like on
1653 other platforms, rather than inserting its contents into the buffer.
1654
1655 \f
1656 ----------------------------------------------------------------------
1657 This file is part of GNU Emacs.
1658
1659 GNU Emacs is free software: you can redistribute it and/or modify
1660 it under the terms of the GNU General Public License as published by
1661 the Free Software Foundation, either version 3 of the License, or
1662 (at your option) any later version.
1663
1664 GNU Emacs is distributed in the hope that it will be useful,
1665 but WITHOUT ANY WARRANTY; without even the implied warranty of
1666 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1667 GNU General Public License for more details.
1668
1669 You should have received a copy of the GNU General Public License
1670 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
1671
1672 \f
1673 Local variables:
1674 mode: outline
1675 paragraph-separate: "[ \f]*$"
1676 end: