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