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