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