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