| 1 | GNU Emacs NEWS -- history of user-visible changes. |
| 2 | |
| 3 | Copyright (C) 2007-2013 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 23. |
| 10 | |
| 11 | See files NEWS.22, NEWS.21, NEWS.20, NEWS.19, NEWS.18, and NEWS.1-17 |
| 12 | 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 | \f |
| 18 | * Installation Changes in Emacs 23.4 |
| 19 | |
| 20 | ** The MS-Windows build prefers libpng version 1.14 or later. |
| 21 | Versions of libpng before 1.14 had security issues, so we now |
| 22 | recommend to use version 1.14 or later. Precompiled Windows binaries |
| 23 | require version 1.14 or later. See README.W32 and nt/INSTALL for |
| 24 | details and pointers to URLs where the latest libpng can be |
| 25 | downloaded. |
| 26 | |
| 27 | * Changes in Specialized Modes and Packages in Emacs 23.4 |
| 28 | |
| 29 | ** EDE |
| 30 | |
| 31 | *** New variable `ede-project-directories'. |
| 32 | EDE now refuses to automatically load a project file (Project.ede) |
| 33 | unless the file is in one of the directories specified by this |
| 34 | variable. This reduces the risk of inadvertently loading malicious |
| 35 | project files. The commands `M-x ede-new' and `M-x ede' now offer to |
| 36 | save directories to `ede-project-directories'. |
| 37 | |
| 38 | * Changes in Emacs 23.4 on non-free operating systems |
| 39 | |
| 40 | ** The MS-Windows port can now use more than 500MB of heap. |
| 41 | Depending on the available virtual memory, Emacs on Windows can now |
| 42 | have up to 2GB of heap space. This allows, e.g., visiting several |
| 43 | large (> 256MB) files in the same session. |
| 44 | |
| 45 | \f |
| 46 | * Installation Changes in Emacs 23.3 |
| 47 | |
| 48 | ** New configure option --with-crt-dir specifies the location of your |
| 49 | crt*.o files, if they are in a non-standard location. This is only |
| 50 | used on x86-64 and s390x GNU/Linux architectures. |
| 51 | |
| 52 | * Changes in Emacs 23.3 |
| 53 | |
| 54 | ** The last-resort backup file `%backup%~' is now written to |
| 55 | `user-emacs-directory', instead of the user's home directory. |
| 56 | |
| 57 | ** If Emacs creates `user-emacs-directory', that directory's |
| 58 | permissions are now set to rwx------, ignoring the umask. |
| 59 | |
| 60 | \f |
| 61 | * Changes in Specialized Modes and Packages in Emacs 23.3 |
| 62 | |
| 63 | ** Calendar and diary |
| 64 | |
| 65 | *** The appt-add command takes an optional argument, the warning time. |
| 66 | This can be used in place of the default appt-message-warning-time. |
| 67 | |
| 68 | ** Python mode |
| 69 | |
| 70 | *** You can allow inferior Python processes to load modules from the |
| 71 | current directory by setting `python-remove-cwd-from-path' to nil. |
| 72 | |
| 73 | ** Rmail |
| 74 | |
| 75 | *** The default value of `rmail-enable-mime' is now t. Rmail decodes |
| 76 | MIME contents automatically. You can customize the variable |
| 77 | `rmail-enable-mime' back to `nil' to disable this automatic MIME |
| 78 | decoding. |
| 79 | |
| 80 | *** The command `rmail-mime' change the displaying of a MIME message |
| 81 | between decoded presentation form and raw data if `rmail-enable-mime' |
| 82 | is non-nil. And, with prefix argument, it change only the displaying |
| 83 | of the MIME entity at point. |
| 84 | |
| 85 | *** The new command `rmail-mime-next-item' (bound to TAB) moves point |
| 86 | to the next item of MIME message. |
| 87 | |
| 88 | *** The new command `rmail-mime-previous-item' (bound to backtab) moves |
| 89 | point to the previous item of MIME message. |
| 90 | |
| 91 | *** The new command `rmail-mime-toggle-hidden' (RET) hide or show the |
| 92 | body of the MIME entity at point. |
| 93 | |
| 94 | ** VC and related modes |
| 95 | |
| 96 | *** New VC command `vc-log-incoming', bound to `C-x v I'. |
| 97 | This shows a log of changes to be received with a pull operation. |
| 98 | For Git, this runs "git fetch" to make the necessary data available |
| 99 | locally; this requires version 1.7 or newer. |
| 100 | |
| 101 | *** New VC command `vc-log-outgoing', bound to `C-x v O'. |
| 102 | This shows a log of changes to be sent in the next commit. |
| 103 | |
| 104 | *** New VC command vc-find-conflicted-file. |
| 105 | |
| 106 | *** The 'g' key in VC diff, log, log-incoming and log-outgoing buffers |
| 107 | reruns the corresponding VC command to compute an up to date version |
| 108 | of the buffer. |
| 109 | |
| 110 | *** vc-dir for Bzr supports viewing shelve contents and shelving snapshots. |
| 111 | |
| 112 | *** Special markup can be added to log-edit buffers. |
| 113 | You can add headers specifying additional information to be supplied |
| 114 | to the version control system. For example: |
| 115 | |
| 116 | Author: J. R. Hacker <jrh@example.com> |
| 117 | Fixes: 4204 |
| 118 | Actual text of log entry... |
| 119 | |
| 120 | Bazaar recognizes the headers "Author", "Date" and "Fixes". |
| 121 | Git, Mercurial, and Monotone recognize "Author" and "Date". |
| 122 | Any unknown header is left as is in the message, so it is not lost. |
| 123 | |
| 124 | ** Obsolete packages |
| 125 | |
| 126 | *** lmenu.el and cl-compat.el are now obsolete. |
| 127 | |
| 128 | \f |
| 129 | * New Modes and Packages in Emacs 23.3 |
| 130 | |
| 131 | ** smie.el is a generic navigation and indentation engine. |
| 132 | It takes a simple BNF description of the grammar, and provides both |
| 133 | sexp-style navigation (jumping over begin..end pairs) as well as |
| 134 | indentation, which can be adjusted via ad-hoc indentation rules. |
| 135 | |
| 136 | \f |
| 137 | * Incompatible Lisp Changes in Emacs 23.3 |
| 138 | |
| 139 | ** posn-col-row now excludes the header line from the row count |
| 140 | If the frame has a header line, posn-col-row will count row numbers |
| 141 | starting from the first line of text below the header line. |
| 142 | |
| 143 | \f |
| 144 | * Lisp changes in Emacs 23.3 |
| 145 | |
| 146 | ** `e' and `pi' are now called `float-e' and `float-pi'. |
| 147 | The old names are obsolete. |
| 148 | |
| 149 | ** The use of unintern without an obarray arg is now obsolete. |
| 150 | |
| 151 | ** The function `princ-list' is now obsolete. |
| 152 | |
| 153 | ** The yank-handler argument to kill-region and friends is now obsolete. |
| 154 | |
| 155 | ** New function byte-to-string, like char-to-string but for bytes. |
| 156 | |
| 157 | \f |
| 158 | * Changes in Emacs 23.3 on non-free operating systems |
| 159 | |
| 160 | ** The NeXTstep port can have different modifiers for the left and right |
| 161 | alt/option key by customizing the value for ns-right-alternate-modifier. |
| 162 | |
| 163 | \f |
| 164 | * Installation Changes in Emacs 23.2 |
| 165 | |
| 166 | ** New configure options for Emacs developers. |
| 167 | These are not new features; only the configure flags are new. |
| 168 | |
| 169 | *** --enable-profiling builds Emacs with profiling enabled. |
| 170 | This might not work on all platforms. |
| 171 | |
| 172 | *** --enable-checking[=OPTIONS] builds emacs with extra runtime checks. |
| 173 | |
| 174 | ** `make install' now consistently ignores umask, creating a |
| 175 | world-readable install. |
| 176 | |
| 177 | ** Emacs compiles with Gconf support, if it is detected. |
| 178 | Use the configure option --without-gconf to disable this. |
| 179 | This is used by the `font-use-system-font' feature (see below). |
| 180 | |
| 181 | * Startup Changes in Emacs 23.2 |
| 182 | |
| 183 | ** The command-line option -Q (--quick) also inhibits loading X resources. |
| 184 | However, if Emacs is compiled with the Lucid or Motif toolkit, X |
| 185 | resource settings for the graphical widgets are still applied. |
| 186 | On Windows, the -Q option causes Emacs to ignore Registry settings, |
| 187 | but environment variables set on the Registry are still honored. |
| 188 | |
| 189 | *** The new variable `inhibit-x-resources' shows whether X resources |
| 190 | were loaded. |
| 191 | |
| 192 | ** New command-line option -mm (--maximized) maximizes the initial frame. |
| 193 | |
| 194 | * Changes in Emacs 23.2 |
| 195 | |
| 196 | ** The maximum size of buffers (and the largest fixnum) is doubled. |
| 197 | On typical 32bit systems, buffers can now be up to 512MB. |
| 198 | |
| 199 | ** The default value of `trash-directory' is now nil. |
| 200 | This means that `move-file-to-trash' trashes files according to |
| 201 | freedesktop.org specifications, the same method used by the Gnome, |
| 202 | KDE, and XFCE desktops. (This change has no effect on Windows, which |
| 203 | uses `system-move-file-to-trash' for trashing.) |
| 204 | |
| 205 | ** The pointer now becomes invisible when typing. |
| 206 | Customize `make-pointer-invisible' to disable this feature. |
| 207 | |
| 208 | ** Font changes |
| 209 | |
| 210 | *** Emacs can use the system default monospaced font in Gnome. |
| 211 | To enable this feature, set `font-use-system-font' to non-nil (it is |
| 212 | nil by default). If the system default changes, Emacs changes also. |
| 213 | This feature requires Gconf support, which is automatically included |
| 214 | at compile-time if configure detects the gconf libraries (you can |
| 215 | disable this with the configure option --without-gconf). |
| 216 | |
| 217 | *** On X11, Emacs reacts to Xft changes made by configuration tools, |
| 218 | via the XSETTINGS mechanism. This includes antialias, hinting, |
| 219 | hintstyle, RGBA, DPI and lcdfilter changes. |
| 220 | |
| 221 | ** Killing a buffer with a running process now asks for confirmation. |
| 222 | To remove this query, remove `process-kill-buffer-query-function' from |
| 223 | `kill-buffer-query-functions', or set the appropriate process flag |
| 224 | with `set-process-query-on-exit-flag'. |
| 225 | |
| 226 | ** File-local variable changes |
| 227 | |
| 228 | *** Specifying a minor mode as a local variables enables that mode, |
| 229 | unconditionally. The previous behavior, toggling the mode, was |
| 230 | neither reliable nor generally desirable. |
| 231 | |
| 232 | *** There are new commands for adding and removing file-local variables: |
| 233 | `add-file-local-variable', `delete-file-local-variable', |
| 234 | `add-file-local-variable-prop-line', and |
| 235 | `delete-file-local-variable-prop-line'. |
| 236 | |
| 237 | *** There are new commands for adding and removing directory-local variables, |
| 238 | and copying them to and from file-local variable lists: |
| 239 | `add-dir-local-variable', `delete-dir-local-variable', |
| 240 | `copy-dir-locals-to-file-locals', |
| 241 | `copy-dir-locals-to-file-locals-prop-line' and |
| 242 | `copy-file-locals-to-dir-locals'. |
| 243 | |
| 244 | ** Internationalization changes |
| 245 | |
| 246 | *** Unibyte sessions are now considered obsolete. |
| 247 | This refers to the EMACS_UNIBYTE environment variable as well as the |
| 248 | --unibyte, --multibyte, --no-multibyte, and --no-unibyte command line |
| 249 | arguments. Customizing enable-multibyte-characters and setting |
| 250 | default-enable-multibyte-characters are also deprecated. |
| 251 | |
| 252 | *** New coding system `utf-8-hfs'. |
| 253 | This is suitable for default-file-name-coding-system on Mac OS X; see |
| 254 | international/ucs-normalize.el. |
| 255 | |
| 256 | ** Function arguments in *Help* buffers are now shown in upper-case. |
| 257 | Customize `help-downcase-arguments' to t to show them in lower-case. |
| 258 | |
| 259 | ** New command `async-shell-command', bound globally to `M-&'. |
| 260 | This executes the command asynchronously, similar to calling `M-!' and |
| 261 | manually adding an ampersand to the end of the command. With `M-&', |
| 262 | you don't need the ampersand. The output appears in the buffer |
| 263 | `*Async Shell Command*'. |
| 264 | |
| 265 | ** When running in a new enough xterm (newer than version 242), Emacs |
| 266 | asks xterm what the background color is and it sets up faces |
| 267 | accordingly for a dark background if needed (the current default is to |
| 268 | consider the background light). |
| 269 | |
| 270 | \f |
| 271 | * Editing Changes in Emacs 23.2 |
| 272 | |
| 273 | ** Kill-ring and selection changes |
| 274 | |
| 275 | *** If `select-active-regions' is t, any active region automatically |
| 276 | becomes the primary selection (for interaction with other window |
| 277 | applications). If you enable this, you might want to bind |
| 278 | `mouse-yank-primary' to Mouse-2. |
| 279 | |
| 280 | *** When `save-interprogram-paste-before-kill' is non-nil, the kill |
| 281 | commands save the interprogram-paste selection into the kill ring |
| 282 | before doing anything else. This avoids losing the selection. |
| 283 | |
| 284 | *** When `kill-do-not-save-duplicates' is non-nil, identical |
| 285 | subsequent kills are not duplicated in the `kill-ring'. |
| 286 | |
| 287 | ** Completion changes |
| 288 | |
| 289 | *** The new command `completion-at-point' provides mode-sensitive completion. |
| 290 | |
| 291 | *** tab-always-indent set to `complete' lets TAB do completion as well. |
| 292 | |
| 293 | *** The new completion-style `initials' is available. |
| 294 | For instance, this can complete M-x lch to list-command-history. |
| 295 | |
| 296 | *** The new variable `completions-format' determines how completions |
| 297 | are displayed in the *Completions* buffer. If you set it to |
| 298 | `vertical', completions are sorted vertically in columns. |
| 299 | |
| 300 | ** The default value of `blink-matching-paren-distance' is increased. |
| 301 | |
| 302 | ** M-n provides more default values in the minibuffer for commands |
| 303 | that read file names. These include the file name at point (when ffap |
| 304 | is loaded without ffap-bindings), the file name on the current line |
| 305 | (in Dired buffers), and the directory names of adjacent Dired windows |
| 306 | (for Dired commands that operate on several directories, such as copy, |
| 307 | rename, or diff). |
| 308 | |
| 309 | ** M-r is bound to the new `move-to-window-line-top-bottom'. |
| 310 | This moves point to the window center, top and bottom on successive |
| 311 | invocations, in the same spirit as the C-l (recenter-top-bottom) |
| 312 | command. |
| 313 | |
| 314 | ** The new variable `recenter-positions' determines the default |
| 315 | cycling order of C-l (`recenter-top-bottom'). |
| 316 | |
| 317 | ** The abbrevs file is now a file named abbrev_defs in |
| 318 | user-emacs-directory; but the old location, ~/.abbrev_defs, is used if |
| 319 | that file exists. |
| 320 | |
| 321 | \f |
| 322 | * Changes in Specialized Modes and Packages in Emacs 23.2 |
| 323 | |
| 324 | ** The bookmark menu has a narrowing search via bookmark-bmenu-search. |
| 325 | |
| 326 | ** Calc |
| 327 | |
| 328 | *** The Calc settings file is now a file named calc.el in |
| 329 | user-emacs-directory; but the old location, ~/.calc.el, is used if |
| 330 | that file exists. |
| 331 | |
| 332 | *** New twos-complement display. |
| 333 | |
| 334 | *** Graphing commands (`g f' etc.) now work on MS-Windows, if you have |
| 335 | the native Windows port of Gnuplot version 3.8 or later installed. |
| 336 | |
| 337 | ** Calendar and diary |
| 338 | |
| 339 | *** Fancy diary display is now the default. |
| 340 | If you prefer the simple display, customize `diary-display-function'. |
| 341 | |
| 342 | *** The diary's fancy display now enables view-mode. |
| 343 | |
| 344 | *** The command `calendar-current-date' accepts an optional argument |
| 345 | giving an offset from today. |
| 346 | |
| 347 | ** Desktop |
| 348 | |
| 349 | *** The default value for `desktop-buffers-not-to-save' is nil. |
| 350 | This means Desktop will try restoring all buffers, when you restart |
| 351 | your Emacs session. Also, `desktop-buffers-not-to-save' is only |
| 352 | effective for buffers that have no associated file. If you want to |
| 353 | exempt buffers that do correspond to files, customize the value of |
| 354 | `desktop-files-not-to-save' instead. |
| 355 | |
| 356 | ** Dired |
| 357 | |
| 358 | *** The new variable `dired-auto-revert-buffer', if non-nil, causes |
| 359 | Dired buffers to be reverted automatically on revisiting them. |
| 360 | |
| 361 | ** DocView |
| 362 | |
| 363 | *** When `doc-view-continuous' is non-nil, scrolling a line |
| 364 | on the page edge advances to the next/previous page. |
| 365 | |
| 366 | ** Elint |
| 367 | |
| 368 | *** Elint now uses compilation-mode. |
| 369 | |
| 370 | *** Elint can now scan individual files and whole directories, |
| 371 | and can be run in batch mode. |
| 372 | |
| 373 | *** Elint does a more thorough initialization, and recognizes more built-in |
| 374 | functions and variables. Customize `elint-scan-preloaded' if you want |
| 375 | to sacrifice some accuracy for a faster startup. |
| 376 | |
| 377 | *** Elint attempts some basic understanding of featurep and (f)boundp tests. |
| 378 | |
| 379 | *** Customize `elint-ignored-warnings' to suppress some warnings. |
| 380 | |
| 381 | ** GDB-UI |
| 382 | |
| 383 | *** Toolbar functionality for reverse debugging. Display of STL |
| 384 | collections as watch expressions. These features require GDB 7.0 or later. |
| 385 | |
| 386 | ** Grep |
| 387 | |
| 388 | *** A new command `zrgrep' searches recursively in gzipped files. |
| 389 | |
| 390 | ** Info |
| 391 | |
| 392 | *** The new command `Info-virtual-index' bound to "I" displays a menu of |
| 393 | matched topics found in the index. |
| 394 | |
| 395 | *** The new command `info-finder' replaces finder.el with a virtual Info |
| 396 | manual that generates an Info file which gives the same information |
| 397 | through a menu structure. |
| 398 | |
| 399 | ** LaTeX mode now provides completion (via completion-at-point). |
| 400 | |
| 401 | ** Message mode is now the default mode for composing mail. |
| 402 | |
| 403 | The default for `mail-user-agent' is now message-user-agent, so the |
| 404 | C-x m (`compose-mail') command uses Message mode instead of Mail mode. |
| 405 | |
| 406 | Message mode has been included in Emacs, as part of the Gnus package, |
| 407 | for several years. It provides several features that are absent in |
| 408 | Mail mode, such as MIME handling. |
| 409 | |
| 410 | *** If the user has not customized mail-user-agent, `compose-mail' |
| 411 | checks for Mail mode customizations, and issues a warning if these |
| 412 | customizations are found. This alerts users who may otherwise be |
| 413 | unaware that their mail configuration has changed. |
| 414 | |
| 415 | To disable this check, set compose-mail-user-agent-warnings to nil. |
| 416 | |
| 417 | ** The default value of mail-interactive is t, since Emacs 23.1. |
| 418 | (This was not announced at the time.) It means that when sending mail, |
| 419 | Emacs will wait for the process sending mail to return. If you |
| 420 | experience delays when sending mail, you may wish to set this to nil. |
| 421 | |
| 422 | ** nXML mode is now the default for editing XML files. |
| 423 | |
| 424 | ** pcomplete provides a new command `pcomplete-std-completion' which |
| 425 | is similar to `pcomplete' but using the standard completion UI code. |
| 426 | |
| 427 | ** Shell (and other comint modes) |
| 428 | |
| 429 | *** M-s is no longer bound to `comint-next-matching-input'. |
| 430 | |
| 431 | *** M-r is now bound to `comint-history-isearch-backward-regexp'. |
| 432 | This starts an incremental search of the comint/shell input history. |
| 433 | |
| 434 | *** ansi-color is now enabled by default in Shell mode. |
| 435 | To disable it, set ansi-color-for-comint-mode to nil. |
| 436 | |
| 437 | ** Tramp |
| 438 | |
| 439 | *** New connection methods "rsyncc", "imap" and "imaps". |
| 440 | On systems which support GVFS-Fuse, Tramp offers also the new |
| 441 | connection methods "dav", "davs", "obex" and "synce". |
| 442 | |
| 443 | ** VC and related modes |
| 444 | |
| 445 | *** When using C-x v v or C-x v i on a unregistered file that is in a |
| 446 | directory not controlled by any VCS, ask the user what VC backend to |
| 447 | use to create a repository, create a new repository and register the |
| 448 | file. |
| 449 | |
| 450 | *** New command `vc-root-print-log', bound to `C-x v L'. |
| 451 | This displays a `*vc-change-log*' buffer showing the history of the |
| 452 | version-controlled directory tree as a whole. |
| 453 | |
| 454 | *** New command `vc-root-diff', bound to `C-x v D'. |
| 455 | This is similar to `vc-diff', but compares the entire directory tree |
| 456 | of the current VC directory with its working revision. |
| 457 | |
| 458 | *** `C-x v l' and `C-x v L' do not show the full log by default. |
| 459 | The number of entries shown can be chosen interactively with a prefix |
| 460 | argument, or by customizing vc-log-show-limit. The `*vc-change-log*' |
| 461 | buffer now contains buttons at the end of the buffer, which can be |
| 462 | used to increase the number of entries shown. RCS, SCCS, and CVS do |
| 463 | not support this feature. |
| 464 | |
| 465 | *** vc-annotate supports annotations through file copies and renames, |
| 466 | it displays the old names for the files and it can show logs/diffs for |
| 467 | the corresponding lines. Currently only Git and Mercurial take |
| 468 | advantage of this feature. |
| 469 | |
| 470 | *** The log command in vc-annotate can display a single log entry |
| 471 | instead of redisplaying the full log. The RCS, CVS and SCCS VC |
| 472 | backends do not support this. |
| 473 | |
| 474 | *** When a file is not found, VC will not try to check it out of RCS anymore. |
| 475 | |
| 476 | *** Diff and log operations can be used from Dired buffers. |
| 477 | |
| 478 | *** vc-git changes |
| 479 | |
| 480 | **** The short log format for git makes use of the graph display, |
| 481 | so it's not supported on git versions earlier than 1.5.6. |
| 482 | |
| 483 | **** vc-dir uses the --relative option of git, and so requires at least |
| 484 | git version 1.5.5. |
| 485 | |
| 486 | **** Support for operating with stashes has been added to vc-dir: |
| 487 | the stash list is displayed in the *vc-dir* header, stashes can be |
| 488 | created, removed, applied and their content displayed. |
| 489 | |
| 490 | *** vc-bzr supports operating with shelves: the shelve list is |
| 491 | displayed in the *vc-dir* header, shelves can be created, removed and applied. |
| 492 | |
| 493 | *** log-edit-strip-single-file-name controls whether or not single filenames |
| 494 | are stripped when copying text from the ChangeLog to the *VC-Log* buffer. |
| 495 | |
| 496 | ** Miscellaneous |
| 497 | |
| 498 | *** Interactively `multi-isearch-buffers' and `multi-isearch-buffers-regexp' |
| 499 | read buffer names to search, one by one, ended with RET. With a prefix |
| 500 | argument, they ask for a regexp, and search in buffers whose names match |
| 501 | the specified regexp. Interactively `multi-isearch-files' and |
| 502 | `multi-isearch-files-regexp' read file names to search, one by one, |
| 503 | ended with RET. With a prefix argument, they ask for a wildcard, and |
| 504 | search in file buffers whose file names match the specified wildcard. |
| 505 | |
| 506 | *** Autorevert Tail mode now works also for remote files. |
| 507 | |
| 508 | *** The new eshell built-in commands `su' and `sudo' support Tramp. |
| 509 | Thus, they change `default-directory' to reflect the new user id, and |
| 510 | let commands run under that user's permissions. This works even when |
| 511 | `default-directory' is already remote. Calling the external commands |
| 512 | is possible via `*su' or `*sudo', respectively. |
| 513 | |
| 514 | ** Obsolete packages |
| 515 | |
| 516 | *** sym-comp.el is now obsolete, superseded by completion-at-point. |
| 517 | |
| 518 | *** lucid.el and levents.el are now obsolete. |
| 519 | |
| 520 | \f |
| 521 | * New Modes and Packages in Emacs 23.2 |
| 522 | |
| 523 | ** CEDET (the Collection of Emacs Development Tools) is now in Emacs. |
| 524 | This is a collection of packages to aid with using Emacs as an IDE |
| 525 | (integrated development environment): |
| 526 | |
| 527 | *** The Semantic package allows the use of parsers to intelligently |
| 528 | edit and navigate source code. Parsers for C/C++, Java, Javascript, |
| 529 | and several other languages are included by default, and Semantic can |
| 530 | also interface with external tools such as GNU Global and GNU Idutils. |
| 531 | |
| 532 | To enable Semantic, use the global minor mode `semantic-mode'. |
| 533 | See the Semantic manual for details. |
| 534 | |
| 535 | *** EDE (Emacs Development Environment) is a package for managing code |
| 536 | projects, including features such as automatic Makefile generation. |
| 537 | |
| 538 | To enable EDE, use the minor mode `global-ede-mode'. |
| 539 | See the EDE manual for details. |
| 540 | |
| 541 | *** SRecode is a library for recoding Semantic tags back into source |
| 542 | code. It is currently used by some parts of Semantic and EDE; in the |
| 543 | future, it may be used for code generation features. |
| 544 | |
| 545 | *** The EIEIO library implements a subset of the Common Lisp Object |
| 546 | System (CLOS). It is used by the other CEDET packages. |
| 547 | |
| 548 | ** mpc.el is a front end for the Music Player Daemon. Run it with M-x mpc. |
| 549 | |
| 550 | ** htmlfontify.el turns a fontified Emacs buffer into an HTML page. |
| 551 | |
| 552 | ** js.el is a new major mode for JavaScript files. |
| 553 | |
| 554 | ** imap-hash.el is a new library to address IMAP mailboxes as hashtables. |
| 555 | |
| 556 | \f |
| 557 | * Incompatible Lisp Changes in Emacs 23.2 |
| 558 | |
| 559 | ** The Lisp reader turns integers that are too large/small into floats. |
| 560 | For instance, on machines where `536870911' is the largest integer, |
| 561 | reading `536870912' gives the floating-point object `536870912.0'. |
| 562 | |
| 563 | This change only concerns the Lisp reader; it does not affect how |
| 564 | actual integer objects overflow. |
| 565 | |
| 566 | ** Several obsolete functions removed. |
| 567 | The functions have been obsolete since Emacs 19, and are unlikely to |
| 568 | be in use: |
| 569 | |
| 570 | time-stamp-month-dd-yyyy, time-stamp-dd/mm/yyyy, time-stamp-mon-dd-yyyy |
| 571 | time-stamp-dd-mon-yy, time-stamp-yy/mm/dd, time-stamp-yyyy/mm/dd, |
| 572 | time-stamp-yyyy-mm-dd, time-stamp-yymmdd, time-stamp-hh:mm:ss, |
| 573 | time-stamp-hhmm, baud-rate |
| 574 | |
| 575 | ** Support for generating Emacs 18 compatible bytecode (by setting |
| 576 | the variable `byte-compile-compatibility') has been removed. |
| 577 | |
| 578 | ** In image-mode.el `image-mode-maybe' is obsolete. |
| 579 | Instead, you can either use `image-mode' (which displays an image file |
| 580 | as the actual image initially), or `image-mode-as-text' (when you want |
| 581 | to display an image file as text initially). `image-mode-as-text' is a |
| 582 | combination of a non-image mode from `auto-mode-alist' (or Fundamental |
| 583 | mode) and `image-minor-mode'. `image-minor-mode' provides a `C-c C-c' |
| 584 | key binding to toggle image display. |
| 585 | `image-toggle-display-text' removes image properties. |
| 586 | `image-toggle-display-image' adds image properties. |
| 587 | `image-toggle-display' toggles between `image-mode-as-text' and `image-mode'. |
| 588 | |
| 589 | \f |
| 590 | * Lisp changes in Emacs 23.2 |
| 591 | |
| 592 | ** All the default-FOO variables that hold the default value of the FOO |
| 593 | variable, are now declared obsolete. |
| 594 | |
| 595 | ** read-key is a function halfway between read-event and read-key-sequence. |
| 596 | It reads a single key, but obeys input and escape sequence decoding. |
| 597 | |
| 598 | ** Frame parameter changes |
| 599 | |
| 600 | *** You can give the `fullscreen' frame parameter the value `maximized'. |
| 601 | This maximizes the frame. |
| 602 | |
| 603 | *** The new frame parameter `sticky' makes Emacs frames sticky in |
| 604 | virtual desktops. |
| 605 | |
| 606 | ** Completion changes |
| 607 | |
| 608 | *** completion-base-size is obsoleted by completion-base-position. |
| 609 | This change causes a few backward incompatibilities, mostly with |
| 610 | choose-completion-string-functions where the `mini-p' argument has |
| 611 | been replaced by a `base-position' argument, and where the `base-size' |
| 612 | argument is now always nil. |
| 613 | |
| 614 | *** New function `completion-in-region' to use the standard completion |
| 615 | facilities on a particular region of text. |
| 616 | |
| 617 | *** The 4th arg to all-completions (aka hide-spaces) is declared obsolete. |
| 618 | |
| 619 | *** completion-annotate-function specifies how to compute annotations |
| 620 | for completions displayed in *Completions*. |
| 621 | |
| 622 | ** Minibuffer changes |
| 623 | |
| 624 | *** read-file-name-predicate is obsolete. It was used to pass the predicate |
| 625 | to read-file-name-internal because read-file-name-internal abused its `pred' |
| 626 | argument to pass the current directory, but this hack is not needed |
| 627 | any more. |
| 628 | |
| 629 | ** Changes to file-manipulation functions |
| 630 | |
| 631 | *** `delete-directory' has an optional parameter RECURSIVE. |
| 632 | |
| 633 | *** New function `copy-directory', which copies a directory recursively. |
| 634 | |
| 635 | ** called-interactively-p now takes one argument and replaces interactive-p |
| 636 | which is now marked obsolete. |
| 637 | |
| 638 | ** New function set-advertised-calling-convention makes it possible |
| 639 | to obsolete arguments as well as make some arguments mandatory. |
| 640 | |
| 641 | ** You can control which binding is preferentially shown in menus and |
| 642 | docstrings by adding a `:advertised-binding' property to the corresponding |
| 643 | command's symbol. That property can hold a single binding or a list |
| 644 | of bindings. |
| 645 | |
| 646 | ** Network and process changes |
| 647 | |
| 648 | *** start-process-shell-command and start-file-process-shell-command |
| 649 | now only take a single `command' argument. |
| 650 | |
| 651 | *** The new variable `process-file-side-effects' should be set to nil |
| 652 | if a `process-file' call does not change a remote file. This allows |
| 653 | file name handlers such as Tramp to optimizations. |
| 654 | |
| 655 | *** make-network-process can now also create `seqpacket' Unix sockets. |
| 656 | |
| 657 | ** Loading changes |
| 658 | |
| 659 | *** eval-next-after-load is obsolete. |
| 660 | |
| 661 | *** New hook `after-load-functions' run after loading an Elisp file. |
| 662 | |
| 663 | ** Byte compilation changes |
| 664 | |
| 665 | *** Changing the file-names generated by byte-compilation by redefining |
| 666 | the function `byte-compile-dest-file' before loading bytecomp.el is obsolete. |
| 667 | Instead, customize byte-compile-dest-file-function. |
| 668 | |
| 669 | *** `byte-compile-warnings' has new members, `constants' and `suspicious'. |
| 670 | |
| 671 | ** New macro with-silent-modifications to tweak text properties without |
| 672 | affecting the buffer's modification state. |
| 673 | |
| 674 | ** Hash tables have a new printed representation that is readable. |
| 675 | The feature `hashtable-print-readable' identifies this new |
| 676 | functionality. |
| 677 | |
| 678 | ** New functions for performing Unicode normalization: |
| 679 | ucs-normalize-NFD-region, ucs-normalize-NFD-string, |
| 680 | ucs-normalize-NFC-region, ucs-normalize-NFC-string, |
| 681 | ucs-normalize-NFKD-region, ucs-normalize-NFKD-string, |
| 682 | ucs-normalize-NFKC-region, ucs-normalize-NFKC-string, |
| 683 | ucs-normalize-HFS-NFD-region, ucs-normalize-HFS-NFD-string, |
| 684 | ucs-normalize-HFS-NFC-region, ucs-normalize-HFS-NFC-string. |
| 685 | |
| 686 | ** Face aliases can now be marked as obsolete, using the macro |
| 687 | `define-obsolete-face-alias'. |
| 688 | |
| 689 | ** New function `window-full-height-p', analogous to the full-width version. |
| 690 | |
| 691 | \f |
| 692 | * Changes in Emacs 23.2 on non-free operating systems |
| 693 | |
| 694 | ** On MS-Windows, `display-time' now displays the system load average |
| 695 | as well as the time, as it does on GNU and Unix. |
| 696 | |
| 697 | \f |
| 698 | * Installation Changes in Emacs 23.1 |
| 699 | |
| 700 | ** The default X toolkit is now Gtk+, rather than Lucid. |
| 701 | The configure option `--with-gtk' has been removed. Gtk is now the |
| 702 | default toolkit, but you can use --with-x-toolkit=gtk if necessary. |
| 703 | |
| 704 | ** New font code. |
| 705 | Fonts are handled by new code capable of dealing with multiple font |
| 706 | backends. This uses the freetype and fontconfig libraries. |
| 707 | |
| 708 | *** Emacs now accepts font names supplied in the fontconfig format |
| 709 | (e.g. "monospace-12:bold") and GTK format (e.g. "Monospace Bold 12"). |
| 710 | |
| 711 | *** Added support for local fonts (fonts installed on the machine |
| 712 | where Emacs is running). |
| 713 | |
| 714 | *** Added support for the Xft library for antialiasing. |
| 715 | |
| 716 | *** Added support for the otf library for complex text layout by |
| 717 | OpenType fonts. |
| 718 | |
| 719 | *** Added support for the m17n library for text shaping. |
| 720 | |
| 721 | ** Changes to image support |
| 722 | |
| 723 | *** configure now checks for libgif before libungif when searching for |
| 724 | a GIF library. |
| 725 | |
| 726 | *** Emacs now supports the SVG image format through librsvg2. |
| 727 | |
| 728 | *** Emacs now supports multi-page TIFF images. |
| 729 | |
| 730 | ** New NeXTstep-based port. |
| 731 | This provides support for GNUstep (via the GNUstep libraries) and Mac |
| 732 | OS X (via the Cocoa libraries). |
| 733 | |
| 734 | Specify --with-ns to configure for this. By default, a self-contained |
| 735 | app will be built (containing all lisp). To install/share lisp with |
| 736 | other emacsen (e.g. X11 build) use --disable-ns-self-contained. See |
| 737 | nextstep/README and nextstep/INSTALL in the Emacs source directory. |
| 738 | |
| 739 | ** Mac OS X is no longer supported via Carbon. |
| 740 | Use the NeXTstep port, described above. |
| 741 | |
| 742 | ** The new configuration option "--with-dbus" enables D-Bus language |
| 743 | bindings for Emacs. |
| 744 | |
| 745 | ** Support for many obsolete platforms has been removed. |
| 746 | See the list at the end of etc/MACHINES for details. |
| 747 | |
| 748 | *** Support for systems without alloca has been removed. |
| 749 | |
| 750 | *** Support for Sun windows has been removed. |
| 751 | |
| 752 | *** The `emacstool' utility has been removed. |
| 753 | |
| 754 | ** The following platforms will be removed in a future Emacs version: |
| 755 | If you are still using Emacs on one of these platforms, please email |
| 756 | emacs-devel@gnu.org to inform the Emacs developers. |
| 757 | |
| 758 | *** Old GNU/Linux systems based on libc version 5. |
| 759 | |
| 760 | *** Old FreeBSD, NetBSD, and OpenBSD systems based on the COFF |
| 761 | executable format. |
| 762 | |
| 763 | *** Solaris versions 2.6 and below. |
| 764 | |
| 765 | *** Solaris on IBM RS6000 machines. |
| 766 | |
| 767 | *** UNIX System V (the original SysV, not later platforms based on it). |
| 768 | |
| 769 | *** Unixware on non-x86 machines. |
| 770 | |
| 771 | *** Platforms not supporting shared libraries (i.e., requiring the |
| 772 | NO_SHARED_LIBS compilation flag). |
| 773 | |
| 774 | ** The configure options `--with-gcc', `--without-gcc' have been removed. |
| 775 | Configure will use gcc by default. Set the CC environment variable if |
| 776 | you need control over which C compiler is used. |
| 777 | |
| 778 | ** The refcards are now shipped as PDF files. |
| 779 | |
| 780 | ** The manuals are now licensed under the GNU Free Documentation License v1.3, |
| 781 | or any later version. |
| 782 | |
| 783 | ** Emacs 23 comes with a new set of default icons. |
| 784 | Various resolutions are available as etc/images/icons/hicolor/*/apps/emacs.png. |
| 785 | The Emacs 22 icon is available as `emacs22.png' in the same location. |
| 786 | \f |
| 787 | * Changes in Emacs 23.1 |
| 788 | |
| 789 | ** Improved X Window System support |
| 790 | |
| 791 | *** Emacs now supports using both X displays and ttys in one session. |
| 792 | With an Emacs server active (M-x server-start), `emacsclient -t' |
| 793 | creates a tty frame connected to the running emacs server. You can |
| 794 | use any number of different ttys. `emacsclient -c' creates a new X11 |
| 795 | frame on the current $DISPLAY (or a tty frame if $DISPLAY is not set). |
| 796 | There may be problems if a display exits unexpectedly and Emacs is compiled |
| 797 | with Gtk+, see etc/PROBLEMS. |
| 798 | |
| 799 | You can test for the presence of this feature in your Lisp code by |
| 800 | testing for the `multi-tty' feature. |
| 801 | |
| 802 | *** Emacs starts in the background, as a daemon, when given the |
| 803 | --daemon command line argument. It disconnects from the terminal and |
| 804 | starts the server. Clients can connect and create graphical or |
| 805 | terminal frames using emacsclient. |
| 806 | |
| 807 | **** emacsclient starts emacs in daemon mode and connects to it when |
| 808 | --alternate-editor="" is used (or when the environment variable |
| 809 | ALTERNATE_EDITOR is set to "") and emacsclient cannot connect to an |
| 810 | emacs server. |
| 811 | |
| 812 | *** The new command close-display-connection closes a connection to a |
| 813 | remote display. There are some bugs for Gtk+. See etc/PROBLEMS. |
| 814 | |
| 815 | *** Emacs now supports the XEmbed specification. |
| 816 | You can embed Emacs in another application on X11. The new command line |
| 817 | option --parent-id is used to pass the parent window id to Emacs. See |
| 818 | http://standards.freedesktop.org/xembed-spec/xembed-spec-latest.html |
| 819 | for details about XEmbed. |
| 820 | |
| 821 | *** Emacs can now set the frame opacity. |
| 822 | The opacity of a frame can be controlled by setting the `alpha' frame |
| 823 | parameter. This only takes effect on a compositing window manager for |
| 824 | the X Window System, such as Compiz, Beryl and Compiz Fusion, on Mac |
| 825 | OS X, or on Windows 2000 and later versions of Windows. |
| 826 | |
| 827 | The alpha parameter should be an integer between 0 (transparent) and |
| 828 | 100 (opaque), or a float number between 0.0 and 1.0. It can also be a |
| 829 | cons cell (ACTIVE . INACTIVE), where ACTIVE is the opacity of an |
| 830 | active frame and INACTIVE is the opacity of non-active frames. |
| 831 | |
| 832 | The variable `frame-alpha-lower-limit' defines a lower bound for the |
| 833 | opacity; the default is 20. |
| 834 | |
| 835 | ** Internationalization changes |
| 836 | |
| 837 | *** The Emacs character set is now a superset of Unicode. |
| 838 | (It has about four times the code space, which should be plenty). |
| 839 | |
| 840 | The internal encoding used for buffers and strings is now |
| 841 | Unicode-based and called `utf-8-emacs' (`emacs-internal' is an alias |
| 842 | for this). This encoding is backward-compatible with Unicode's UTF-8 |
| 843 | encoding. The internal encoding previously used by Emacs, |
| 844 | `emacs-mule', is still available for reading and writing files. |
| 845 | |
| 846 | During byte-compilation, Emacs 23 uses `utf-8-emacs' to write files. |
| 847 | As a result, byte-compiled files containing non-ASCII characters can't |
| 848 | be read by earlier versions of Emacs. Files compiled by Emacs 20, 21, |
| 849 | or 22 are loaded correctly as `emacs-mule' (whether or not they |
| 850 | contain multibyte characters). This takes somewhat more time, so it |
| 851 | may be worth recompiling existing .elc files which don't need to be |
| 852 | shared with older Emacsen. |
| 853 | |
| 854 | *** There are new coding systems/aliases; see M-x list-coding-systems. |
| 855 | |
| 856 | *** There is a new charset implementation with many new charsets. |
| 857 | See M-x list-character-sets. New charsets can be defined conveniently |
| 858 | as tables of Unicode code points. |
| 859 | |
| 860 | *** There are new language environments for Chinese-GBK, |
| 861 | Chinese-GB18030, Khmer, Bengali, Punjabi, Gujarati, Oriya, Telugu, |
| 862 | Sinhala, and TaiViet. |
| 863 | |
| 864 | *** The minor modes unify-8859-on-encoding-mode and |
| 865 | unify-8859-on-decoding-mode are obsolete. |
| 866 | |
| 867 | *** `ucs-insert' is bound to `C-x 8 RET' and in addition to hex numbers |
| 868 | accepts numbers in hash notation (e.g. #o21430 for octal, or #10r8984 for |
| 869 | decimal). It also accepts Unicode character names with completion. |
| 870 | |
| 871 | *** The `cyrillic-translit' input method supports many new characters. |
| 872 | Common typographical characters available from Unicode were added to |
| 873 | `cyrillic-translit': punctuation marks, accented characters, fractions, |
| 874 | and others. |
| 875 | |
| 876 | ** Emacs now supports serial port access on GNU/Linux, Unix, and |
| 877 | Windows. The new command `serial-term' starts an interactive terminal |
| 878 | on a serial port. The serial port can be configured at runtime with |
| 879 | the mode-line mouse menu. |
| 880 | |
| 881 | ** Menu Bar changes |
| 882 | |
| 883 | *** In the Options menu, the "Set Default Font" item applies the |
| 884 | selected font to the `default' face on all frames, not just the |
| 885 | current frame. Furthermore, if Emacs is compiled with both GTK and |
| 886 | Fontconfig support, the "Set Default Font" item uses the GTK font |
| 887 | selection dialog instead of an Emacs pop-up menu. |
| 888 | |
| 889 | *** The font setting chosen by "Set Default Font" is saved if the |
| 890 | "Save Options" item is used. |
| 891 | |
| 892 | *** The Tools menu contains a new Encryption/Decryption submenu. |
| 893 | This contains commands provided by EasyPG, the newly-included |
| 894 | interface to GnuPG (see New Modes and Packages). |
| 895 | |
| 896 | *** In the Options menu, the "Truncate Long Lines in the Buffer" entry |
| 897 | has been replaced with a submenu offering three different ways to |
| 898 | handle long lines: truncation, continuation at the window edge, and |
| 899 | the new word wrapping behavior (see Editing Changes, below). |
| 900 | |
| 901 | *** Improvements to menus for major and minor modes |
| 902 | More major and minor modes now have a mode specific menu, and existing |
| 903 | mode menus have been improved to include more functionality. |
| 904 | |
| 905 | ** Mode-line changes |
| 906 | |
| 907 | *** The mode-line displays a `@', instead of `-', if the |
| 908 | default-directory for the current buffer is on a remote machine. |
| 909 | |
| 910 | *** The mode-line displays a mode menu when mouse-1 is clicked on a |
| 911 | minor mode, in the same way as it already did for major modes. |
| 912 | |
| 913 | *** The `mode-line-emphasis' face is used to highlight certain |
| 914 | mode-line information (e.g. waiting for a VC command to finish). |
| 915 | |
| 916 | *** The mode-line tooltips have been improved to provide more details. |
| 917 | |
| 918 | *** The VC, line/column number and minor mode indicators on the mode |
| 919 | line are now interactive: mouse-1 can be used on them to pop up a menu. |
| 920 | |
| 921 | ** File deletion can make use of the Recycle Bin or system Trash folder. |
| 922 | Set `delete-by-moving-to-trash' non-nil to use this. Deleted files |
| 923 | and directories will then be sent to the Recycle Bin on Windows, and |
| 924 | to `trash-directory' on other systems. |
| 925 | |
| 926 | ** Directory-local variables can now be defined. |
| 927 | By default, Emacs looks in .dir-locals.el for directory-local |
| 928 | variables. For more information, see `dir-locals-set-directory-class' |
| 929 | and `dir-locals-set-class-variables'. |
| 930 | |
| 931 | ** Emacs can now use `auth-source' for authentication. |
| 932 | `smtpmail' and `url' (Tramp and Gnus also) use `auth-source' to obtain |
| 933 | login names and passwords. The match, if found, is reported |
| 934 | in *Messages* with the password blanked out. |
| 935 | |
| 936 | ** `where-is-preferred-modifier' can specify your favorite modifier. |
| 937 | |
| 938 | \f |
| 939 | * Startup Changes in Emacs 23.1 |
| 940 | |
| 941 | ** The option `inhibit-startup-screen' (with aliases to old names |
| 942 | `inhibit-splash-screen' and `inhibit-startup-message') doesn't inhibit |
| 943 | display of the initial message in the *scratch* buffer. If you don't |
| 944 | want to display the initial message in the *scratch* buffer at startup, |
| 945 | you can set the option `initial-scratch-message' to nil. |
| 946 | |
| 947 | ** New user option `initial-buffer-choice' specifies what to display |
| 948 | after starting Emacs: startup screen, *scratch* buffer, visiting a |
| 949 | file or directory. |
| 950 | |
| 951 | ** New alias `argv' for `command-line-args-left' |
| 952 | This is a convenience alias, so that one can write `(pop argv)' |
| 953 | inside of --eval command line arguments in order to access |
| 954 | following arguments. |
| 955 | |
| 956 | ** The abbrev file is no longer read at startup in batch mode. |
| 957 | |
| 958 | ** Emacs now supports invocation by an X session manager. |
| 959 | It can save a session and restore it later. See the documentation of |
| 960 | the functions `emacs-session-save' and `emacs-session-restore'. |
| 961 | (Actually, this feature was introduced with Emacs 22, but it was not |
| 962 | documented.) |
| 963 | \f |
| 964 | * Incompatible Editing Changes in Emacs 23.1 |
| 965 | |
| 966 | ** In Dired, `dired-flag-garbage-files' is rebound from `&' to `%&' |
| 967 | on the regexp command prefix map. |
| 968 | |
| 969 | ** In Dired-x, all command guesses for ! are now added to the default |
| 970 | list accessible by M-n instead of pushing all guesses temporarily into |
| 971 | the history list. |
| 972 | |
| 973 | ** In Isearch mode, a special case of typing `C-w' at the beginning of |
| 974 | the minibuffer that toggles word search (i.e. using key sequences |
| 975 | `C-s RET C-w' or `C-s M-e C-w') is obsolete. You can use the global key |
| 976 | `M-s w' to start word search, or type `M-s w' in Isearch mode to |
| 977 | toggle word search. To start nonincremental word search you can now use |
| 978 | `M-s w RET' and `M-s w C-r RET' instead of `C-s RET C-w' and `C-r RET C-w'. |
| 979 | |
| 980 | ** In Info, `Info-search' is unbound from `M-s' to allow using `M-s w' |
| 981 | for word search as well as other search commands from the global prefix |
| 982 | key `M-s'. `Info-search' is still bound to `s', and also incremental |
| 983 | search commands `C-s', `C-M-s', `C-r', `C-M-r' are available for searching |
| 984 | through multiple Info nodes, together with their nonincremental versions |
| 985 | `C-s RET', `C-r RET', `C-M-s RET', `C-M-r RET', `M-s w RET'. |
| 986 | |
| 987 | ** In Text mode, `center-line' and `center-paragraph' are rebound from |
| 988 | `M-s' and `M-S' to global keys `M-o M-s' and `M-o M-S' on the global |
| 989 | prefix map `M-o', which is intended for such formatting commands. |
| 990 | |
| 991 | ** The following input methods were removed in Emacs 22.2, but this was |
| 992 | not advertised: danish-alt-postfix, esperanto-alt-postfix, |
| 993 | finnish-alt-postfix, german-alt-postfix, icelandic-alt-postfix, |
| 994 | norwegian-alt-postfix, scandinavian-alt-postfix, spanish-alt-postfix, |
| 995 | and swedish-alt-postfix. Use the versions without "alt-", which are |
| 996 | identical. |
| 997 | |
| 998 | \f |
| 999 | * Editing Changes in Emacs 23.1 |
| 1000 | |
| 1001 | ** The C-n and C-p line-motion commands now move by screen lines, |
| 1002 | taking continued lines and variable-width characters into account. |
| 1003 | Setting `line-move-visual' to nil reverts this to the previous |
| 1004 | behavior (i.e., motion by logical lines based on buffer contents |
| 1005 | alone). |
| 1006 | |
| 1007 | ** C-x C-c now invokes `save-buffers-kill-terminal', and C-z now |
| 1008 | invokes `suspend-frame'. These changes are for compatibility with the |
| 1009 | new multi-tty support (see `Improved X Window System support' above). |
| 1010 | |
| 1011 | ** Mark changes |
| 1012 | |
| 1013 | *** Transient Mark mode is now on by default. |
| 1014 | |
| 1015 | *** mark-even-if-inactive now defaults to t |
| 1016 | |
| 1017 | *** When Transient Mark mode is on, C-SPC C-SPC pushes a mark without |
| 1018 | activating it. |
| 1019 | |
| 1020 | *** When Transient Mark mode is on, M-q now fills the region if the |
| 1021 | region is active. Otherwise, it fills the current paragraph. |
| 1022 | |
| 1023 | *** When Transient Mark mode is on, M-$ now checks spelling of the |
| 1024 | region if the region is active. Otherwise, it checks spelling of the |
| 1025 | word at point. |
| 1026 | |
| 1027 | *** When Transient Mark mode is on, TAB now indents the region if the |
| 1028 | region is active. |
| 1029 | |
| 1030 | *** The variable `use-empty-active-region' controls whether an empty |
| 1031 | active region in Transient Mark mode should make commands operate on |
| 1032 | that empty region. |
| 1033 | |
| 1034 | ** Temporarily active regions |
| 1035 | |
| 1036 | *** The new variable shift-select-mode, non-nil by default, controls |
| 1037 | shift-selection. When Shift Select mode is on, shift-translated |
| 1038 | motion keys (e.g. S-left and S-down) activate and extend a temporary |
| 1039 | region, similar to mouse-selection. |
| 1040 | |
| 1041 | *** Temporarily active regions, created using shift-selection or |
| 1042 | mouse-selection, are not necessarily deactivated after the next command. |
| 1043 | They are deactivated only after point motion commands that are not |
| 1044 | shift-translated, or after commands that would ordinarily deactivate |
| 1045 | the mark in Transient Mark mode (e.g., any command that modifies the |
| 1046 | buffer). |
| 1047 | |
| 1048 | ** Minibuffer and completion changes |
| 1049 | |
| 1050 | *** Emacs may ask for confirmation before opening a non-existent file |
| 1051 | or buffer. By default, Emacs requests confirmation if you type RET |
| 1052 | immediately after TAB, and the resulting input is not an existing file |
| 1053 | or buffer; this usually happens when the minibuffer input did not |
| 1054 | complete far enough and you entered RET by mistake. In that case, |
| 1055 | Emacs puts the message "[Confirm]" in the minibuffer; type RET again |
| 1056 | to create the file or buffer. |
| 1057 | |
| 1058 | The new variable confirm-nonexistent-file-or-buffer determines whether |
| 1059 | Emacs asks for confirmation. The default value is `after-completion'. |
| 1060 | If you change it to t, Emacs always asks for confirmation; if you |
| 1061 | change it to nil, Emacs never asks for confirmation. |
| 1062 | |
| 1063 | *** The rules for performing completion have been changed. |
| 1064 | When generating completion alternatives, Emacs now takes the |
| 1065 | minibuffer text after point, if any, into account: this text is |
| 1066 | treated as a substring of the remaining part of the completion |
| 1067 | alternative (i.e., the part not matched by the minibuffer text before |
| 1068 | point). If no completion alternatives are found this way, Emacs |
| 1069 | attempts to perform partial-completion. If still no completion |
| 1070 | alternatives are found, we fall back on the Emacs 22 rules for |
| 1071 | performing completion. |
| 1072 | |
| 1073 | The new variable `completion-styles' can be customized to choose your |
| 1074 | favorite completion style. |
| 1075 | |
| 1076 | *** When M-n in the minibuffer reaches the end of the list of defaults, |
| 1077 | it adds the completion list to the end, so next M-n continues putting |
| 1078 | completion items to the minibuffer. The same principle applies to |
| 1079 | incremental search commands as well: C-s or C-M-s starts searching |
| 1080 | the default values and after the end of defaults they continue |
| 1081 | searching minibuffer completion items. |
| 1082 | |
| 1083 | *** Minibuffer input of shell commands now comes with completion. |
| 1084 | |
| 1085 | *** In the `C-x d' (Dired) prompt, typing M-n gives the visited file |
| 1086 | name of the current buffer. |
| 1087 | |
| 1088 | *** In the M-! (shell-command) prompt, M-n provides some default commands. |
| 1089 | These are guessed using the file extension of the current file, based |
| 1090 | on the file-handlers specified in the operating system's `mailcap' |
| 1091 | file. The ! command in Dired (dired-do-shell-command) works |
| 1092 | similarly, using the file displayed on the current line. |
| 1093 | |
| 1094 | *** A list of regexp default values is available via M-n for `occur', |
| 1095 | `keep-lines', `flush-lines' and `how-many'. This list includes the active |
| 1096 | region in transient-mark-mode, the word under the cursor, the last Isearch |
| 1097 | regexp, the last Isearch string and the last replacement regexp. |
| 1098 | |
| 1099 | *** When enable-recursive-minibuffers is non-nil, operations which use |
| 1100 | switch-to-buffer (such as C-x b and C-x C-f) do not fail any more when |
| 1101 | used in a minibuffer or a dedicated window. Instead, they fallback on |
| 1102 | using pop-to-buffer, which will use some other window. This change |
| 1103 | has no effect when enable-recursive-minibuffers is nil (the default). |
| 1104 | |
| 1105 | *** Isearch started in the minibuffer searches in the minibuffer history. |
| 1106 | Reverse Isearch commands (C-r, C-M-r) search in previous minibuffer |
| 1107 | history elements, and forward Isearch commands (C-s, C-M-s) search in |
| 1108 | next history elements. When the reverse search reaches the first history |
| 1109 | element, it wraps to the last history element, and the forward search |
| 1110 | wraps to the first history element. When the search is terminated, the |
| 1111 | history element containing the search string becomes the current. |
| 1112 | |
| 1113 | *** The variable read-file-name-completion-ignore-case overrides |
| 1114 | completion-ignore-case for file name completion. |
| 1115 | |
| 1116 | *** The variable read-buffer-completion-ignore-case overrides |
| 1117 | completion-ignore-case for buffer name completion. |
| 1118 | |
| 1119 | *** The new command `minibuffer-force-complete' chooses one of the |
| 1120 | possible completions, rather than stopping at the common prefix. |
| 1121 | |
| 1122 | *** If `completion-auto-help' is `lazy', Emacs shows the completions |
| 1123 | buffer only on the second attempt to complete. This was already |
| 1124 | supported in `partial-completion-mode'. |
| 1125 | |
| 1126 | ** Face changes |
| 1127 | |
| 1128 | *** S-down-mouse-1 now pops up a menu for changing the font and text |
| 1129 | size of the default face in the current buffer. The face is changed |
| 1130 | via face remapping (see Lisp changes, below). |
| 1131 | |
| 1132 | *** New commands to change the default face size in the current buffer. |
| 1133 | To increase it, type `C-x C-+' or `C-x C-='. To decrease it, type |
| 1134 | `C-x C--'. To restore the default (global) face size, type `C-x C-0'. |
| 1135 | These work via Text Scale mode, a new minor mode. |
| 1136 | |
| 1137 | The final key in the above commands may be repeated without the |
| 1138 | leading `C-x', e.g. `C-x C-= C-= C-=' increases the face height by |
| 1139 | three steps. Each step scales the height of the default face by the |
| 1140 | value of the variable `text-scale-mode-step'. |
| 1141 | |
| 1142 | *** The commands buffer-face-mode and buffer-face-set can be used to |
| 1143 | remap the default face in the current buffer. See "Buffer Face mode", |
| 1144 | under New Modes and Packages. |
| 1145 | |
| 1146 | ** Primary selection changes |
| 1147 | |
| 1148 | *** You can disable kill ring commands from accessing the primary |
| 1149 | selection by setting `x-select-enable-primary' to nil. |
| 1150 | |
| 1151 | ** Continuation lines can now be wrapped at word boundaries |
| 1152 | (word-wrapping). This is controlled by the new per-buffer variable |
| 1153 | `word-wrap'. Word wrapping does not take place if continuation lines |
| 1154 | are not shown, e.g. if truncate-lines is non-nil. The most convenient |
| 1155 | way to enable word-wrapping is using the new minor mode Visual Line |
| 1156 | mode; in addition to setting `word-wrap' to t, this rebinds some |
| 1157 | editing commands to work on screen lines rather than text lines. See |
| 1158 | New Modes and Packages, below. |
| 1159 | |
| 1160 | ** Window management changes |
| 1161 | |
| 1162 | *** truncate-partial-width-windows now accepts integer values, which |
| 1163 | specify a minimum window width for partial-width windows, below which |
| 1164 | lines are truncated. The default has been changed to 50. |
| 1165 | |
| 1166 | *** The new command balance-windows-area balances windows both |
| 1167 | vertically and horizontally. |
| 1168 | |
| 1169 | *** pop-to-buffer now always sets input focus when the popped-to window |
| 1170 | is on a different frame. |
| 1171 | |
| 1172 | ** Miscellaneous changes: |
| 1173 | |
| 1174 | *** C-l is bound to the new command recenter-top-bottom, rather than recenter. |
| 1175 | This moves the current line to window center, top and bottom on |
| 1176 | successive invocations. |
| 1177 | |
| 1178 | *** scroll-preserve-screen-position also preserves the column position. |
| 1179 | |
| 1180 | *** If `yank-pop-change-selection' is t, rotating the kill ring also |
| 1181 | updates the selection or clipboard to the current yank, just as M-w |
| 1182 | would do so with the text it copies to the kill ring. |
| 1183 | |
| 1184 | *** C-M-% now shows replacement as it would look in the buffer, with |
| 1185 | `\N' and `\&' substituted according to the match. Old behavior can be |
| 1186 | restored by customizing `query-replace-show-replacement'. |
| 1187 | |
| 1188 | *** The command shell prompts for the default directory, when it is |
| 1189 | called with a prefix and the default directory is a remote file name. |
| 1190 | This is because some file name handlers (like ange-ftp) are not able to |
| 1191 | run processes remotely. |
| 1192 | |
| 1193 | *** The new command kill-matching-buffers kills buffers whose name |
| 1194 | matches a regexp. |
| 1195 | |
| 1196 | *** The value of comment-style now defaults to `indent'. |
| 1197 | Therefore, comment-start markers are inserted at the current indentation |
| 1198 | of the region to comment, rather than the leftmost column. |
| 1199 | |
| 1200 | *** The new commands `pp-macroexpand-expression' and |
| 1201 | `pp-macroexpand-last-sexp' pretty-print macro expansions. |
| 1202 | |
| 1203 | *** The new command `set-file-modes' allows to set file's mode bits. |
| 1204 | The mode bits can be specified in symbolic notation, like with GNU |
| 1205 | Coreutils, in addition to an octal number. `chmod' is a new |
| 1206 | convenience alias for this function. |
| 1207 | |
| 1208 | *** `next-error-recenter' specifies how next-error should recenter the |
| 1209 | visited source file. Its value can be a number (for example, 0 for |
| 1210 | top line, -1 for bottom line), or nil for no recentering. |
| 1211 | |
| 1212 | *** When typing in a password in the echo area, C-y yanks the current |
| 1213 | kill into the password. |
| 1214 | |
| 1215 | *** Tooltip frame parameters `font' and `color' in `tooltip-frame-parameters' |
| 1216 | are ignored. Customize the `tooltip' face instead. |
| 1217 | |
| 1218 | *** `mkdir' is a new convenience alias for `make-directory'. |
| 1219 | \f |
| 1220 | * New Modes and Packages in Emacs 23.1 |
| 1221 | |
| 1222 | ** Auto Composition Mode is a minor mode that composes characters |
| 1223 | automatically when they are displayed. It is globally on by default. |
| 1224 | It uses `auto-composition-function' (default `auto-compose-chars'). |
| 1225 | |
| 1226 | ** Bubbles, a new game, is similar to SameGame. |
| 1227 | |
| 1228 | ** Buffer Face mode is a minor mode for remapping the default face in |
| 1229 | the current buffer. The variable `buffer-face-mode-face' specifies |
| 1230 | the face to remap to. The command `buffer-face-set' prompts for a |
| 1231 | face name, sets `buffer-face-mode-face' to it, and enables |
| 1232 | buffer-face-mode. See "Face changes", under Editing Changes, for a |
| 1233 | description of face remapping. |
| 1234 | |
| 1235 | ** butterfly flips the desired bit on the drive platter. |
| 1236 | See http://xkcd.com/378/ |
| 1237 | |
| 1238 | ** bug-reference.el provides clickable links to bug reports. |
| 1239 | |
| 1240 | ** dbus.el provides D-Bus language bindings. |
| 1241 | D-Bus is an inter-process communication mechanism for applications |
| 1242 | residing on the same host. See the manual for details. |
| 1243 | |
| 1244 | ** DocView mode allows viewing of PDF, PostScript and DVI documents. |
| 1245 | One can also search for a regular expression in the document. For |
| 1246 | details, see the commentary in doc-view.el. |
| 1247 | |
| 1248 | PDF and DVI files are now opened in Doc View mode by default. |
| 1249 | |
| 1250 | In PostScript mode, C-c C-c launches Doc View minor mode for viewing |
| 1251 | the PostScript file. |
| 1252 | |
| 1253 | ** EasyPG provides an interface to the GNU Privacy Guard (GnuPG). |
| 1254 | It includes a GnuPG keyring browser, cryptographic operations on |
| 1255 | regions and files, and automatic encryption of *.gpg files. For |
| 1256 | details, see the EasyPG Assistant User's Manual. |
| 1257 | |
| 1258 | ** json.el is a library for parsing and generating JSON |
| 1259 | (JavaScript Object Notation), a lightweight data-interchange format. |
| 1260 | |
| 1261 | ** linum.el is a new minor mode to display line numbers for the |
| 1262 | current buffer. |
| 1263 | |
| 1264 | ** mairix.el is an interface to mairix, a free tool for indexing and |
| 1265 | searching locally stored mail. It allows you to query mairix and |
| 1266 | display the search results with Rmail, Gnus and VM. Note that there |
| 1267 | is an existing Gnus back end, nnmairix.el, which should be used with |
| 1268 | Maildir/MH setups. |
| 1269 | |
| 1270 | ** minibuffer-depth-indicate-mode shows the minibuffer depth in the prompt. |
| 1271 | |
| 1272 | ** nXML Mode |
| 1273 | This is a new mode for editing XML documents. It allows a schema to |
| 1274 | be associated with the XML document being edited, using Relax NG as |
| 1275 | the schema language. The schema is used to provide two key features: |
| 1276 | |
| 1277 | *** Continuous validation. nXML validates as you type, highlighting |
| 1278 | any invalid parts of your document. |
| 1279 | |
| 1280 | *** Completion. nXML can assist you in entering an element name, |
| 1281 | attribute name or data value by using information about what is |
| 1282 | allowed by the schema in that context. |
| 1283 | |
| 1284 | ** proced.el provides a Dired-like interface for operating on |
| 1285 | processes. Proced makes an Emacs buffer containing a listing of the |
| 1286 | current processes. You can use the normal Emacs commands to move |
| 1287 | around in this buffer, and special Proced commands to operate on the |
| 1288 | processes listed. It is currently only functional on GNU/Linux, |
| 1289 | MS-Windows and Solaris. |
| 1290 | |
| 1291 | ** Remember Mode is a mode for jotting down things to remember. |
| 1292 | Notes can be saved to a Diary file. For details, see the Remember |
| 1293 | Manual. |
| 1294 | |
| 1295 | ** RST mode is a major mode for editing reStructuredText files. |
| 1296 | |
| 1297 | ** Ruby mode is a major mode for Ruby files. |
| 1298 | |
| 1299 | ** Visual Line mode provides support for editing by visual lines. |
| 1300 | It turns on word-wrapping in the current buffer, and rebinds C-a, C-e, |
| 1301 | and C-k to commands that operate by visual lines instead of logical |
| 1302 | lines. This is a more reliable replacement for longlines-mode. |
| 1303 | This can also be turned on using the menu bar, via |
| 1304 | Options -> Line Wrapping in this Buffer -> Word Wrap |
| 1305 | |
| 1306 | ** xesam.el is an implementation of Xesam, an interface to (desktop) |
| 1307 | search engines like Beagle, Strigi, and Tracker. The Xesam API |
| 1308 | requires D-Bus for communication. |
| 1309 | |
| 1310 | ** zeroconf.el offers service discovery and service publishing |
| 1311 | interfaces according to the zeroconf specification. It communicates |
| 1312 | with Avahi, a zeroconf implementation, via D-Bus messages on systems |
| 1313 | which have installed this software. |
| 1314 | |
| 1315 | ** There is a new `whitespace' package. |
| 1316 | (The pre-existing one has been renamed to `old-whitespace'.) |
| 1317 | Now, besides reporting bogus blanks, the whitespace package has a |
| 1318 | minor mode and a global minor mode to visualize blanks (TAB, (HARD) |
| 1319 | SPACE and NEWLINE). The visualization is made via faces and/or display |
| 1320 | table. It can also indicate lines that extend beyond a given column, |
| 1321 | trailing blanks, and empty lines at the start or end of a buffer. |
| 1322 | See `whitespace-style' for more details. The `whitespace-action' option |
| 1323 | specifies what to do when a buffer is visited, killed, or written. |
| 1324 | |
| 1325 | \f |
| 1326 | * Changes in Specialized Modes and Packages in Emacs 23.1 |
| 1327 | |
| 1328 | ** Abbrev has been rewritten in Elisp and extended with more flexibility. |
| 1329 | |
| 1330 | *** New functions: abbrev-get, abbrev-put, abbrev-table-get, abbrev-table-put, |
| 1331 | abbrev-table-p, abbrev-insert, abbrev-table-menu. |
| 1332 | |
| 1333 | *** Special hook `abbrev-expand-functions' obsoletes `pre-abbrev-expand-hook'. |
| 1334 | |
| 1335 | *** `make-abbrev-table', `define-abbrev', `define-abbrev-table' all take |
| 1336 | extra arguments for arbitrary properties. |
| 1337 | |
| 1338 | *** New variable `abbrev-minor-mode-table-alist'. |
| 1339 | |
| 1340 | *** `local-abbrev-table' can hold a list of abbrev-tables. |
| 1341 | |
| 1342 | *** Abbrevs have now the following special properties: |
| 1343 | `:count', `:system', `:enable-function', `:case-fixed'. |
| 1344 | |
| 1345 | *** Abbrev-tables have now the following special properties: |
| 1346 | `:parents', `:case-fixed', `:enable-function', `:regexp', |
| 1347 | `abbrev-table-modiff'. |
| 1348 | |
| 1349 | ** Apropos |
| 1350 | |
| 1351 | *** `apropos-library' describes the elements defined in a given library. |
| 1352 | |
| 1353 | *** Set `apropos-compact-layout' is you want a more compact (but wider) layout. |
| 1354 | |
| 1355 | ** Archive Mode has basic support to browse Rar archives. |
| 1356 | Note, however, that the free version of the unrar command only handles |
| 1357 | versions 1 and 2 of the Rar format. |
| 1358 | |
| 1359 | ** BibTeX mode |
| 1360 | |
| 1361 | *** New command `bibtex-initialize' (re)initializes BibTeX buffers. |
| 1362 | |
| 1363 | *** New `bibtex-entry-format' options `whitespace', `braces', and |
| 1364 | `string', disabled by default. |
| 1365 | |
| 1366 | *** New variable `bibtex-cite-matcher-alist' contains rules to |
| 1367 | identify cited keys in BibTeX entries, used by `bibtex-find-crossref'. |
| 1368 | |
| 1369 | *** Command `bibtex-url' allows multiple URLs per entry. |
| 1370 | |
| 1371 | ** Bookmarks |
| 1372 | |
| 1373 | *** bookmark.el saves bookmarks in a pre-Emacs-23-incompatible file format |
| 1374 | bookmark.el can read a .emacs.bmk file saved by an older Emacs, but an |
| 1375 | older Emacs cannot read one saved by Emacs 23. |
| 1376 | |
| 1377 | ** Calc |
| 1378 | |
| 1379 | *** `j *' (cal-sel-mult-both-sides) has an option to expand the denominator. |
| 1380 | |
| 1381 | *** `calc-embedded-word-regexp' is used for finding words in |
| 1382 | `calc-embedded-word' in place of delimiters. |
| 1383 | |
| 1384 | *** The separate Calc version number has been removed; use the Emacs |
| 1385 | version for reference. |
| 1386 | |
| 1387 | *** Support for using registers. |
| 1388 | |
| 1389 | *** Support for Yacas, Maxima and Giac languages. |
| 1390 | |
| 1391 | *** Addition of a menu. |
| 1392 | |
| 1393 | *** Logistic non-linear curves have been added to curve-fitting. |
| 1394 | |
| 1395 | *** New option to plot data points and curve when curve-fitting. |
| 1396 | |
| 1397 | *** Unit conversions are now exact when possible. |
| 1398 | |
| 1399 | *** The precedence of negation has been lowered. |
| 1400 | |
| 1401 | ** Calendar and diary |
| 1402 | |
| 1403 | *** There is a new date style, `iso', essentially year/month/day. |
| 1404 | The variable `european-calendar-style' is obsolete - use `calendar-date-style'. |
| 1405 | Similarly, the commands `american-calendar' and `european-calendar' |
| 1406 | should be replaced by `calendar-set-date-style'. |
| 1407 | |
| 1408 | *** The calendar namespace has been rationalized. |
| 1409 | All functions and variables now begin with a `calendar-', `diary-', or |
| 1410 | `holiday-' prefix. The various calendar systems have secondary |
| 1411 | prefixes, eg `calendar-french-'. The old names you are likely to use |
| 1412 | directly still exist, for the time being, as aliases, but please start |
| 1413 | using the new names. |
| 1414 | |
| 1415 | *** The whitespace in the calendar layout can be customized. |
| 1416 | See the variables: |
| 1417 | calendar-left-margin, calendar-intermonth-spacing, calendar-column-width, |
| 1418 | calendar-day-header-width, and calendar-day-digit-width. |
| 1419 | |
| 1420 | *** Text (e.g. ISO weeks) can be displayed between the calendar months. |
| 1421 | See the variables calendar-intermonth-header and calendar-intermonth-text. |
| 1422 | |
| 1423 | *** The function `holiday-chinese' computes holidays on the Chinese calendar. |
| 1424 | It has been used to add items to the list `holiday-oriental-holidays'. |
| 1425 | |
| 1426 | *** `diary-remind' accepts a negative number -DAYS as a shorthand for |
| 1427 | the list (1 2 ... DAYS). |
| 1428 | |
| 1429 | ** Change Log mode |
| 1430 | |
| 1431 | *** The new command C-c C-f (change-log-find-file) finds the file |
| 1432 | associated with the current log entry. |
| 1433 | |
| 1434 | *** The new command C-c C-c (change-log-goto-source) goes to the |
| 1435 | source code associated with a log entry. |
| 1436 | |
| 1437 | ** Compile and grep modes |
| 1438 | |
| 1439 | *** The mode-line entry for the *compilation* and *grep* buffer is color coded. |
| 1440 | It has different colors for to show that: (a) the command is still |
| 1441 | running, (b) successful completion, (c) error. |
| 1442 | |
| 1443 | *** compilation-auto-jump-to-first-error tells `compile' to jump to |
| 1444 | the first error encountered during compilations. |
| 1445 | |
| 1446 | *** compilation-scroll-output accepts a new value, `first-error', which |
| 1447 | says to stop auto scrolling at the first error that occurs. |
| 1448 | |
| 1449 | *** The `cc' alias for C++ files in `grep-file-aliases' has been |
| 1450 | improved. `hh' can be used to match C++ header files and `cchh' both |
| 1451 | C++ sources and headers. |
| 1452 | |
| 1453 | ** Copyright |
| 1454 | |
| 1455 | *** You can specify your copyright holders' names. |
| 1456 | Only copyright lines with holders matching `copyright-names-regexp' are |
| 1457 | considered for update. |
| 1458 | |
| 1459 | *** Copyrights can be at the end of the buffer. |
| 1460 | This is controlled by `copyright-at-end-flag' (used by, e.g., change-log-mode). |
| 1461 | |
| 1462 | ** Custom |
| 1463 | |
| 1464 | *** defcustom accepts new keyword arguments, `:safe' and `:risky', which |
| 1465 | set a variable's `safe-local-variable' and `risky-local-variable' property. |
| 1466 | |
| 1467 | ** Diff mode |
| 1468 | |
| 1469 | *** diff-refine-hunk highlights word-level details of changes in a diff hunk. |
| 1470 | It's used automatically as you move through hunks, see |
| 1471 | diff-auto-refine-mode. It is bound to `C-c C-b'. |
| 1472 | |
| 1473 | *** diff-add-change-log-entries-other-window iterates through the diff |
| 1474 | buffer and tries to create ChangeLog entries for each change. |
| 1475 | It is bound to `C-x 4 A'. |
| 1476 | |
| 1477 | *** Turning on `whitespace-mode' in a diff buffer will show trailing |
| 1478 | whitespace problems in the modified lines. |
| 1479 | |
| 1480 | ** Dired |
| 1481 | |
| 1482 | *** In Dired, C-x C-q now runs the command wdired-change-to-wdired-mode, |
| 1483 | and C-x C-q in wdired-mode exits it with asking a question about |
| 1484 | saving changes. |
| 1485 | |
| 1486 | *** `&' runs the command `dired-do-async-shell-command' that executes |
| 1487 | the command asynchronously without the need to manually add ampersand |
| 1488 | to the end of the command. Its output appears in the buffer `*Async Shell |
| 1489 | Command*'. |
| 1490 | |
| 1491 | *** `M-s f C-s' and `M-s f M-C-s' run Isearch that matches only at file names. |
| 1492 | When a new user option `dired-isearch-filenames' is t, then even ordinary |
| 1493 | Isearch started with `C-s' and `C-M-s' matches only at file names in the |
| 1494 | Dired buffer. When `dired-isearch-filenames' is `dwim' then activation of |
| 1495 | file name Isearch depends on the position of point - if point is on a file |
| 1496 | name initially, then Isearch matches only file names, otherwise it matches |
| 1497 | everywhere in the Dired buffer. You can toggle file names matching on or |
| 1498 | off by typing `M-s f' in Isearch mode. |
| 1499 | |
| 1500 | *** `M-s a C-s' and `M-s a M-C-s' run multi-file Isearch on the marked files. |
| 1501 | They visit the first marked file in the sequence and display the usual Isearch |
| 1502 | prompt for a string or a regexp where all Isearch commands are available. |
| 1503 | |
| 1504 | *** `Q' in Dired provides two new keys for multi-file replacement. |
| 1505 | The upper case key `Y' replaces all remaining matches in all remaining files |
| 1506 | with no more questions. The upper case key `N' stops doing replacements |
| 1507 | in the current file and skips to the next file. These multi-file keys |
| 1508 | are available for all commands that use `tags-query-replace' |
| 1509 | including `dired-do-query-replace-regexp', `vc-dir-query-replace-regexp', |
| 1510 | `reftex-query-replace-document'. |
| 1511 | |
| 1512 | ** Fortran |
| 1513 | |
| 1514 | *** The line length of fixed-form Fortran is not fixed at 72 any more. |
| 1515 | Customize the variable `fortran-line-length' to change it. |
| 1516 | |
| 1517 | *** In Fortran mode, M-; is now bound to the standard comment-dwim, |
| 1518 | rather than fortran-indent-comment. |
| 1519 | |
| 1520 | *** (The increasingly misnamed) F90 mode supports Fortran 2003 syntax. |
| 1521 | |
| 1522 | ** Gnus |
| 1523 | |
| 1524 | *** The Gnus package has been updated |
| 1525 | There are many new features, bug fixes and improvements; see the file |
| 1526 | GNUS-NEWS or the node "No Gnus" in the Gnus manual for details. |
| 1527 | |
| 1528 | *** In Emacs 23, Gnus uses Emacs' new internal coding system `utf-8-emacs' for |
| 1529 | saving articles, drafts, and ~/.newsrc.eld. These file may not be read |
| 1530 | correctly in Emacs 22 and below. If you want to Gnus across different Emacs |
| 1531 | versions, you may set `mm-auto-save-coding-system' to `emacs-mule'. |
| 1532 | |
| 1533 | *** Passwords are consistently loaded through `auth-source' |
| 1534 | Gnus can use `auth-source' for POP and IMAP passwords. Also see that |
| 1535 | `smtpmail' and `url' support `auth-source' for SMTP and HTTP/HTTPS/RSS |
| 1536 | authentication respectively. |
| 1537 | |
| 1538 | ** Help mode |
| 1539 | |
| 1540 | *** New macro `with-help-window' should set up help windows better |
| 1541 | than `with-output-to-temp-buffer' with `print-help-return-message'. |
| 1542 | |
| 1543 | *** New option `help-window-select' permits to customize whether help |
| 1544 | window shall be automatically selected when invoking help. |
| 1545 | |
| 1546 | *** New variable `help-window-point-marker' permits one to specify a new |
| 1547 | position for point in help window (for example in `view-lossage'). |
| 1548 | |
| 1549 | ** Isearch |
| 1550 | |
| 1551 | *** New command `isearch-forward-word' bound globally to `M-s w' starts |
| 1552 | incremental word search. New command `isearch-toggle-word' bound to the |
| 1553 | same key `M-s w' in Isearch mode toggles word searching on or off |
| 1554 | while Isearch is active. |
| 1555 | |
| 1556 | *** New command `isearch-highlight-regexp' bound to `M-s h r' in Isearch |
| 1557 | mode runs `highlight-regexp' (`hi-lock-face-buffer') with the current |
| 1558 | search string as its regexp argument. The same key `M-s h r' and |
| 1559 | other keys on the `M-s h' prefix are bound globally to the command |
| 1560 | `highlight-regexp' and other hi-lock commands. |
| 1561 | |
| 1562 | *** New command `isearch-occur' bound to `M-s o' in Isearch mode |
| 1563 | runs `occur' with the current search string. The same key `M-s o' |
| 1564 | is bound globally to the command `occur'. |
| 1565 | |
| 1566 | *** Isearch can now search through multiple ChangeLog files. |
| 1567 | When running Isearch in a ChangeLog file, if the search fails, |
| 1568 | then another C-s tries searching the previous ChangeLog, |
| 1569 | if there is one (e.g. going from ChangeLog to ChangeLog.12). |
| 1570 | This is enabled if multi-isearch-search is non-nil. |
| 1571 | |
| 1572 | *** Two new commands to start Isearch on a list of marked buffers |
| 1573 | for buff-menu.el and ibuffer.el are bound to the keys `M-s a C-s' and |
| 1574 | `M-s a M-C-s'. |
| 1575 | |
| 1576 | *** The part of an Isearch that failed to match is highlighted in |
| 1577 | `isearch-fail' face. |
| 1578 | |
| 1579 | *** `C-h C-h' in Isearch mode displays isearch-specific Help screen, |
| 1580 | `C-h b' displays all Isearch key bindings, `C-h k' displays the full |
| 1581 | documentation of the given Isearch key sequence, `C-h m' displays |
| 1582 | documentation for Isearch mode. All the other Help commands exit |
| 1583 | Isearch mode and execute their global definitions. |
| 1584 | |
| 1585 | *** When started in the minibuffer, Isearch searches in the minibuffer |
| 1586 | history. See `Minibuffer changes', above. |
| 1587 | |
| 1588 | ** MH-E |
| 1589 | |
| 1590 | *** Upgraded to MH-E version 8.2. See MH-E-NEWS for details. |
| 1591 | |
| 1592 | ** Python |
| 1593 | *** The file etc/emacs.py now supports both Python 2 and 3, meaning |
| 1594 | that either version can be used as inferior Python by python.el. |
| 1595 | |
| 1596 | *** Python mode now has `pdbtrack' functionality. When using pdb to |
| 1597 | debug a Python program, pdbtrack notices the pdb prompt and displays |
| 1598 | the source file and line that the program is stopped at, much the same |
| 1599 | way as gud-mode does for debugging C programs with gdb. |
| 1600 | |
| 1601 | ** Recentf |
| 1602 | |
| 1603 | *** The default value of `recentf-keep' prevents from checking of |
| 1604 | remote files, if there is no established connection to the |
| 1605 | corresponding remote host. |
| 1606 | |
| 1607 | ** Rmail |
| 1608 | |
| 1609 | *** Rmail no longer converts the messages to Babyl format. |
| 1610 | Instead, it uses UNIX mbox format, both on disk and in Rmail buffers, |
| 1611 | and does conversion and decoding when a message is displayed. |
| 1612 | |
| 1613 | The first time you visit an Rmail file in Babyl format, Rmail |
| 1614 | automatically converts it to mbox format. This is a one-time |
| 1615 | conversion, but it can take a few minutes, depending on how fast is |
| 1616 | your machine and on the size of the file. You should find the rest of |
| 1617 | Rmail usage unaltered. |
| 1618 | |
| 1619 | However, M-x set-rmail-inbox-list now lasts only for one session |
| 1620 | because there is no way to save the list of inbox files in an |
| 1621 | mbox-format file. |
| 1622 | |
| 1623 | Also, whereas with Babyl format M-x find-file would switch to Rmail |
| 1624 | mode, with mbox format this is no longer the case (there being no way |
| 1625 | to add an "-*- rmail-*-" cookie to an mbox file). Use C-u M-x rmail |
| 1626 | instead. |
| 1627 | |
| 1628 | If you have written any extensions to Rmail, they are likely to need |
| 1629 | updating. Conceptually, the Rmail buffer that you see is no longer |
| 1630 | just a narrowed portion of the whole. So you cannot access the whole |
| 1631 | of a message (or message collection) by a simple save-restriction and |
| 1632 | widen. Instead, there are two buffers: the rmail-buffer, and the |
| 1633 | rmail-view-buffer. The former is the buffer that you see, the latter |
| 1634 | is invisible. Most of the time, the invisible `view' buffer contains |
| 1635 | the full contents of the Rmail file, and the Rmail buffer contains a |
| 1636 | decoded copy of the current message (with only a subset of the |
| 1637 | headers). In this state, Rmail is said to be `swapped'. |
| 1638 | |
| 1639 | You may find the following functions useful: |
| 1640 | |
| 1641 | `rmail-get-header' and `rmail-set-header' get or set the value of a |
| 1642 | message header, whether or not it is currently visible. |
| 1643 | |
| 1644 | `rmail-apply-in-message' is a general purpose function that calls a |
| 1645 | function (with arguments) which you specify on the full text of a given |
| 1646 | message. To further narrow to just the headers, search forward for "\n\n". |
| 1647 | |
| 1648 | *** The new command `rmail-mime' displays MIME messages. |
| 1649 | It is bound to `v' in Rmail buffers and summaries. It displays plain |
| 1650 | text and multipart messages in a temporary buffer, and offers buttons |
| 1651 | to save attachments. |
| 1652 | |
| 1653 | *** The command `rmail-redecode-body' no longer accepts the optional arg RAW. |
| 1654 | Since Rmail now holds messages in their original undecoded form in a |
| 1655 | separate buffer, `rmail-redecode-body' no longer encodes the original |
| 1656 | message, and therefore there should be no need to avoid encoding it. |
| 1657 | |
| 1658 | *** The o command is now `rmail-output'. It is an all-purpose command |
| 1659 | for copying messages from Rmail and appending them to files. It |
| 1660 | handles Babyl-format files as well as mbox-format files, and it |
| 1661 | handles both kinds properly when they are visited in Emacs. It always |
| 1662 | copies the full headers of the message. |
| 1663 | |
| 1664 | *** The C-o command is now `rmail-output-as-seen'. It uses |
| 1665 | the message as displayed, appending it to an mbox file. |
| 1666 | |
| 1667 | *** The modified status of the Rmail buffer is reported in the mode-line. |
| 1668 | Previously, this information was hidden. |
| 1669 | |
| 1670 | ** TeX modes |
| 1671 | |
| 1672 | *** New option latex-indent-within-escaped-parens |
| 1673 | permits to customize indentation of LaTeX environments delimited |
| 1674 | by escaped parens. |
| 1675 | |
| 1676 | ** T-mouse Mode |
| 1677 | |
| 1678 | *** If the gpm mouse server is running and t-mouse-mode is enabled, |
| 1679 | Emacs uses a Unix socket in a GNU/Linux console to talk to server, |
| 1680 | rather than faking events using the client program mev. This C level |
| 1681 | approach provides mouse highlighting and help echoing in the |
| 1682 | minibuffer. |
| 1683 | |
| 1684 | ** Tramp |
| 1685 | |
| 1686 | *** New connection methods. |
| 1687 | The new methods "plinkx", "plink2", "psftp", "sftp" and "fish" have |
| 1688 | been introduced. There are also new so-called gateway methods |
| 1689 | "tunnel" and "socks". |
| 1690 | |
| 1691 | *** IPv6 addresses. |
| 1692 | IPv6 addresses are supported now as host names. They must be embedded |
| 1693 | in square brackets, like in "/ssh:[::1]:". |
| 1694 | |
| 1695 | *** Multihop syntax has been removed. |
| 1696 | The pseudo-method "multi" has been removed. Instead, multi hops |
| 1697 | can be specified by the new variable `tramp-default-proxies-alist'. |
| 1698 | |
| 1699 | *** More default settings. |
| 1700 | Default values can be set via the variables `tramp-default-user', |
| 1701 | `tramp-default-user-alist' and `tramp-default-host'. |
| 1702 | |
| 1703 | *** Connection information is cached. |
| 1704 | In order to reduce connection setup, information about used |
| 1705 | connections is kept persistently in a file. The name of this file is |
| 1706 | defined in the variable `tramp-persistency-file-name'. |
| 1707 | |
| 1708 | *** Control of remote processes. |
| 1709 | Running processes on a remote host can be controlled by settings in |
| 1710 | `tramp-remote-path' and `tramp-remote-process-environment'. |
| 1711 | |
| 1712 | *** Success of remote copy is checked. |
| 1713 | When the variable `file-precious-flag' is set, the success of a remote |
| 1714 | file copy is checked via the file's checksum. |
| 1715 | |
| 1716 | *** Passwords can be read from an authentication file. |
| 1717 | Tramp uses the package `auth-source' to read passwords from a file, if |
| 1718 | necessary. |
| 1719 | |
| 1720 | ** VC and related modes |
| 1721 | |
| 1722 | *** VC now supports applying VC operations to a set of files at a time. |
| 1723 | This enables VC to work much more effectively with changeset-oriented |
| 1724 | version-control systems such as Subversion, GNU Arch, Mercurial, Git |
| 1725 | and Bzr. VC will now pass a multiple-file commit to these systems as |
| 1726 | a single changeset. |
| 1727 | |
| 1728 | *** vc-dir is a new command that displays file names and their VC |
| 1729 | status. It allows to apply various VC operations to a file, a |
| 1730 | directory or a set of files/directories. |
| 1731 | |
| 1732 | *** VC switches are no longer appended, rather the first non-nil value is used. |
| 1733 | (This was for the most part true in Emacs 22, but was not advertised). |
| 1734 | This is because there is an increasing variety of VC systems, and they |
| 1735 | do not all accept the same "common" options. For example, a CVS diff |
| 1736 | command used to append the values of `vc-cvs-diff-switches', |
| 1737 | `vc-diff-switches', and `diff-switches'. Now the first non-nil value |
| 1738 | from that sequence is used. The special value `t' means "no switches". |
| 1739 | |
| 1740 | *** Clicking on the VC mode-line entry now pops the VC menu. |
| 1741 | |
| 1742 | *** The VC mode-line entry now has a tooltip that explains the VC file status. |
| 1743 | |
| 1744 | *** In VC Annotate mode, the key bindings have changed to use lower |
| 1745 | case keys instead of the upper case keys used in the past. |
| 1746 | |
| 1747 | *** In VC Annotate mode, for VC systems that support changesets, you can |
| 1748 | see the diff for the whole changeset (not only for the current file) |
| 1749 | by typing the D key. Using the "Show changeset diff of revision at |
| 1750 | line" menu entry does the same thing. |
| 1751 | |
| 1752 | *** In VC Annotate mode, you can type v to toggle the annotation visibility. |
| 1753 | |
| 1754 | *** In VC Annotate mode, you can type f to show the file revision on |
| 1755 | the current line. |
| 1756 | |
| 1757 | *** Asynchronous VC commands display [Waiting...] in the mode-line |
| 1758 | of the corresponding buffer as long as the asynchronous process is |
| 1759 | active. |
| 1760 | |
| 1761 | *** Log entries can be modified using the key "e" in log-view. |
| 1762 | For now only CVS, RCS, SCCS and SVN support this functionality. |
| 1763 | This is done by the `modify-change-comment' backend function. |
| 1764 | |
| 1765 | *** In log-view-mode, for VC systems that support changesets, you can |
| 1766 | see the diff for the whole changeset (not only for the current file) |
| 1767 | by typing the D key or using the "Changeset Diff" menu entry. |
| 1768 | |
| 1769 | *** In Log Edit mode, C-c C-d now shows the diff for the files involved. |
| 1770 | |
| 1771 | *** vc-git supports the "git grep" command. |
| 1772 | |
| 1773 | *** VC Support for Meta-CVS has been removed for lack of a maintainer able |
| 1774 | to update it to the new VC. |
| 1775 | |
| 1776 | ** Miscellaneous |
| 1777 | |
| 1778 | *** comint-mode uses `start-file-process' now (see Lisp Changes). |
| 1779 | If `default-directory' is a remote file name, subprocesses are started |
| 1780 | on the corresponding remote system. |
| 1781 | |
| 1782 | *** Eldoc highlights the function argument under point |
| 1783 | with the face `eldoc-highlight-function-argument'. |
| 1784 | |
| 1785 | *** In Etags, the --members option is now the default. |
| 1786 | Use --no-members if you want the old default behavior of not tagging |
| 1787 | struct members in C, members variables in C++ and variables in PHP. |
| 1788 | |
| 1789 | *** The `gdb' command only works with the graphical interface now. |
| 1790 | Use `gud-gdb' if you want the (old) text command mode. |
| 1791 | |
| 1792 | *** goto-address.el provides two new minor modes, goto-address-mode and |
| 1793 | goto-address-prog-mode, which buttonize URLS and email addresses. |
| 1794 | |
| 1795 | *** The new command `eshell/info' runs info in an eshell buffer. |
| 1796 | |
| 1797 | *** The new variable `ffap-rfc-directories' specifies a list of local |
| 1798 | directories in which `ffap-rfc' will first search for RFCs. |
| 1799 | |
| 1800 | *** hide-ifdef-mode allows shadowing ifdef-blocks instead of hiding them. |
| 1801 | See option `hide-ifdef-shadow' and function `hide-ifdef-toggle-shadowing'. |
| 1802 | |
| 1803 | *** `icomplete-prospects-height' now supersedes `icomplete-prospects-length'. |
| 1804 | |
| 1805 | *** Info displays breadcrumbs in the header of the page. |
| 1806 | See Info-breadcrumbs-depth to control it. |
| 1807 | |
| 1808 | *** net-utils has an `iwconfig' command, similar to the existing `ifconfig'. |
| 1809 | It is used to configure wireless interfaces. |
| 1810 | |
| 1811 | *** The pcmpl-unix package supports hostname completion for ssh and scp. |
| 1812 | |
| 1813 | *** sgml-electric-tag-pair-mode lets you simultaneously edit matched tag pairs. |
| 1814 | |
| 1815 | *** smerge-refine highlights word-level details of changes in conflict. |
| 1816 | It's used automatically as you move through conflicts, see |
| 1817 | smerge-auto-refine-mode. |
| 1818 | |
| 1819 | *** talk.el has been extended for multiple tty support. |
| 1820 | |
| 1821 | *** A new command `display-time-world' has been added to the Time |
| 1822 | package. It creates a buffer with an updating time display using |
| 1823 | several time zones. |
| 1824 | |
| 1825 | *** The appearance of superscript and subscript in TeX is more customizable. |
| 1826 | See the documentation of the variables: tex-fontify-script, |
| 1827 | tex-font-script-display, tex-suscript-height-ratio, and |
| 1828 | tex-suscript-height-minimum. |
| 1829 | |
| 1830 | *** view-remove-frame-by-deleting is now by default t |
| 1831 | since users found iconification of view-mode frames distracting. |
| 1832 | |
| 1833 | *** WoMan tries to add locale-specific manual page directories to the |
| 1834 | search path. This can be disabled by setting `woman-locale' to nil. |
| 1835 | |
| 1836 | \f |
| 1837 | * Changes in Emacs 23.1 on non-free operating systems |
| 1838 | |
| 1839 | ** Case is now considered significant in completion on MS-Windows. |
| 1840 | The default value of `completion-ignore-case' is now nil on |
| 1841 | MS-Windows, the same as it is for other operating systems. The |
| 1842 | variable doesn't apply to reading a file name -- in that case Emacs |
| 1843 | heeds `read-file-name-completion-ignore-case' instead. |
| 1844 | |
| 1845 | ** IPv6 is supported on MS-Windows. |
| 1846 | Emacs now supports IPv6 on Windows XP and later, and earlier versions |
| 1847 | of Windows with third party IPv6 stacks installed. In Emacs 22, IPv6 was |
| 1848 | supported on other platforms, but not on Windows due to using the winsock |
| 1849 | 1.1 header file, even though Emacs was linking to the winsock 2 library. |
| 1850 | |
| 1851 | ** Busy cursor (hourglass) now displays on MS-Windows. |
| 1852 | When Emacs is busy, an hourglass mouse cursor is displayed on Windows. |
| 1853 | In Emacs 22 only X supported the busy cursor. |
| 1854 | |
| 1855 | ** Battery status is available on MS-Windows |
| 1856 | Emacs can now display the battery status in the mode-line when enabled with |
| 1857 | display-battery-mode or from the Options menu. More verbose battery |
| 1858 | information is also available with the command `battery'. In Emacs 22 |
| 1859 | battery status was supported only on GNU/Linux and Mac. |
| 1860 | |
| 1861 | ** More keys available on MS-Windows. |
| 1862 | Keys normally associated with IMEs, and some exotic keys not normally found |
| 1863 | on standard keyboards have been given names so they can be bound to functions |
| 1864 | inside Emacs. If there are keys on your keyboard that have not been exposed |
| 1865 | to Emacs in the past, try C-h k to see if they are available now. |
| 1866 | |
| 1867 | Emacs can now bind functions to the extra buttons for media player and |
| 1868 | browser control present on some keyboards. These buttons are disabled |
| 1869 | by default, since enabling them prevents their system-wide use when |
| 1870 | Emacs has focus. To enable them, set the variable |
| 1871 | w32-pass-multimedia-buttons to nil. See the doc string of that variable |
| 1872 | for the list of extra keys that are available. |
| 1873 | |
| 1874 | ** BDF fonts no longer supported on MS-Windows. |
| 1875 | The font backend was completely rewritten for this release. The focus |
| 1876 | on Windows has been getting acceptable performance and full Unicode |
| 1877 | support, including complex script shaping for native Windows fonts. A |
| 1878 | rewrite of the BDF font support has not happened due to lack of time |
| 1879 | and developers. If demand still exists for such a backend even with |
| 1880 | the improved language support for native Windows fonts, future |
| 1881 | development in this direction will most likely be based on the |
| 1882 | freetype library, giving access to a wider range of font formats. |
| 1883 | |
| 1884 | \f |
| 1885 | * Incompatible Lisp Changes in Emacs 23.1 |
| 1886 | |
| 1887 | ** Variables cannot be both buffer-local and frame-local any more. |
| 1888 | |
| 1889 | ** `functionp' returns nil for special forms. |
| 1890 | I.e., it only returns t for objects that can be passed to `funcall'. |
| 1891 | |
| 1892 | ** The behavior of map-char-table has changed. It may call the |
| 1893 | specified function with a cons (FROM . TO) as a key if characters in |
| 1894 | that range have the same value. |
| 1895 | |
| 1896 | ** Process changes |
| 1897 | |
| 1898 | *** The function `dired-call-process' has been removed. |
| 1899 | |
| 1900 | *** The multibyteness of process filters is now determined by the |
| 1901 | coding-system used for decoding. The functions |
| 1902 | `process-filter-multibyte-p' and `set-process-filter-multibyte' are |
| 1903 | obsolete. |
| 1904 | |
| 1905 | ** The variable `byte-compile-warnings' can now be a list starting with `not', |
| 1906 | meaning to disable the specified warnings. The meaning of this list |
| 1907 | may therefore be the reverse of what you expect (of course, this is |
| 1908 | only an issue if you make use of the new `not' syntax). Rather than |
| 1909 | checking/manipulating elements directly, use the new functions |
| 1910 | `byte-compile-warning-enabled-p', `byte-compile-disable-warning', and |
| 1911 | `byte-compile-enable-warning.' |
| 1912 | |
| 1913 | ** `mode-name' is no longer guaranteed to be a string. |
| 1914 | Use `(format-mode-line mode-name)' to ensure a string value. |
| 1915 | |
| 1916 | ** The function x-font-family-list has been removed. |
| 1917 | Use the new function font-family-list (see Lisp Changes, below). |
| 1918 | |
| 1919 | ** Internationalization changes |
| 1920 | |
| 1921 | *** The value of the function `charset-id' is now always 0. |
| 1922 | |
| 1923 | *** The functions `register-char-codings' and `coding-system-spec' |
| 1924 | have been removed. |
| 1925 | |
| 1926 | *** The cpXXX coding systems are now supported automatically. |
| 1927 | The functions cp-...-codepage, which you had to use in Emacs 22 to |
| 1928 | enable support for these coding systems, have been deleted. |
| 1929 | |
| 1930 | *** The following features have been removed. They were used for |
| 1931 | displaying various scripts with specific fonts, and are no longer |
| 1932 | needed now that OpenType font support is available: |
| 1933 | |
| 1934 | **** `devanagari' and `devan-util', and all associated devanagari-* and |
| 1935 | dev-* functions and variables (formerly used for Devanagari script). |
| 1936 | |
| 1937 | **** `kannada' and `knd-util', and all associated kannada-* and knd-* |
| 1938 | functions and variables (formerly used for Kannada script). |
| 1939 | |
| 1940 | **** `malayalam' and `mlm-util', and all associated malayalam-* and |
| 1941 | mlm-* functions and variables (formerly used for Malayalam script). |
| 1942 | |
| 1943 | **** `tamil' and `tml-util, and all associated tamil-* and tml-* |
| 1944 | functions and variables (formerly used for Tamil script). |
| 1945 | |
| 1946 | *** The meaning of NAME argument of `set-fontset-font' is changed. |
| 1947 | Previously nil is accepted as the default fontset. Now, nil is for |
| 1948 | the fontset of the selected frame and t is for the default fontset. |
| 1949 | |
| 1950 | *** The meaning of FONTSET argument of `print-fontset' is changed. |
| 1951 | Now, nil is for the fontset of the selected frame and t is for the |
| 1952 | default fontset. |
| 1953 | |
| 1954 | ** If a function in write-region-annotate-functions returns with a |
| 1955 | different buffer current, Emacs no longer kills that buffer |
| 1956 | automatically. This behavior existed in previous versions of Emacs, |
| 1957 | but was undocumented. To kill a buffer after write-region, give the |
| 1958 | variable `write-region-post-annotation-function' a buffer-local value |
| 1959 | of `kill-buffer'. |
| 1960 | |
| 1961 | ** The variable temp-file-name-pattern has been removed. |
| 1962 | This variable was only used by call-process-region, which now uses |
| 1963 | temporary-file-directory instead. |
| 1964 | |
| 1965 | ** The COUNT and SYSTEM-FLAG arguments to define-abbrev have been |
| 1966 | removed. The function now takes extra arguments for specifying |
| 1967 | arbitrary abbrev properties. |
| 1968 | |
| 1969 | ** end-of-defun-function is now guaranteed to work only when called |
| 1970 | from the start of a defun. It must now leave point exactly at the end |
| 1971 | of defun, since `end-of-defun' now itself moves forward over |
| 1972 | whitespace after calling it. |
| 1973 | |
| 1974 | \f |
| 1975 | * Lisp Changes in Emacs 23.1 |
| 1976 | |
| 1977 | ** The new variable `generate-autoload-cookie' controls the magic comment |
| 1978 | string used by `update-file-autoloads' to find autoloaded forms. The |
| 1979 | variable `generated-autoload-file' similarly controls the name of the |
| 1980 | file where `update-file-autoloads' writes the calls to `autoload'. |
| 1981 | The default values are ";;;###autoload" and `loaddefs.el', |
| 1982 | respectively. |
| 1983 | |
| 1984 | ** New primitives `list-system-processes' and `process-attributes' |
| 1985 | let Lisp programs access the processes that are running on the local |
| 1986 | machine. See the doc strings of these functions for more details. |
| 1987 | Not all platforms support accessing this information; on those that |
| 1988 | don't, these primitives will return nil. |
| 1989 | |
| 1990 | ** New variable `user-emacs-directory'. |
| 1991 | Use this instead of "~/.emacs.d". |
| 1992 | |
| 1993 | ** If a local hook function has a non-nil `permanent-local-hook' |
| 1994 | property, `kill-all-local-variables' does not remove it from the local |
| 1995 | value of the hook variable; it remains even if you change major modes. |
| 1996 | |
| 1997 | ** `frame-inherited-parameters' lets new frames inherit parameters from |
| 1998 | the selected frame. |
| 1999 | |
| 2000 | ** New keymap `input-decode-map' overrides like key-translation-map, but |
| 2001 | applies before function-key-map. Also it is terminal-local contrary to |
| 2002 | key-translation-map. Terminal-specific key-sequences are generally added to |
| 2003 | this map rather than to function-key-map now. |
| 2004 | |
| 2005 | ** `ignore-errors' is now a standard macro (does not require the CL package). |
| 2006 | |
| 2007 | ** `interprogram-paste-function' can now return one string or a list |
| 2008 | of strings. In the latter case, Emacs puts the second and following |
| 2009 | strings on the kill ring. |
| 2010 | |
| 2011 | ** In `condition-case', a handler can specify "let the debugger run first". |
| 2012 | You do this by writing `debug' in the list of conditions to be handled, |
| 2013 | like this: |
| 2014 | |
| 2015 | (condition-case nil |
| 2016 | (foo bar) |
| 2017 | ((debug error) nil)) |
| 2018 | |
| 2019 | ** clone-indirect-buffer now runs the clone-indirect-buffer-hook. |
| 2020 | |
| 2021 | ** `beginning-of-defun-function' now takes one argument, the count given to |
| 2022 | `beginning-of-defun'. (N.B. `end-of-defun-function' doesn't take any |
| 2023 | arguments.) |
| 2024 | |
| 2025 | ** `file-remote-p' has new optional parameters IDENTIFICATION and CONNECTED. |
| 2026 | IDENTIFICATION specifies which part of the remote identifier has to be |
| 2027 | returned. With CONNECTED passed non-nil, it is checked whether a |
| 2028 | remote connection has been established already. |
| 2029 | |
| 2030 | ** The new macro `declare-function' suppresses compiler warnings about |
| 2031 | undefined functions. |
| 2032 | |
| 2033 | ** Changes to interactive function handling |
| 2034 | |
| 2035 | *** The new interactive spec code ^ says to first call |
| 2036 | handle-shift-selection if shift-select-mode is non-nil, before reading |
| 2037 | the command arguments. This is used for shift-selection (see above). |
| 2038 | |
| 2039 | *** Built-in functions can now have an interactive specification that |
| 2040 | is not a prompt string. If the `intspec' parameter of a `DEFUN' |
| 2041 | starts with a `(', the string is evaluated as a Lisp form. |
| 2042 | |
| 2043 | *** The interactive-form of a function can be added post-facto via the |
| 2044 | `interactive-form' symbol property. Mostly useful to add complex |
| 2045 | interactive forms to subroutines. |
| 2046 | |
| 2047 | ** Region changes |
| 2048 | |
| 2049 | *** Commands should use `use-region-p' to test whether there is |
| 2050 | an active region that they should operate on. |
| 2051 | |
| 2052 | *** `region-active-p' returns non-nil when Transient Mark mode is |
| 2053 | enabled and the mark is active. Most commands that act specially on |
| 2054 | the active region in Transient Mark mode should use `use-region-p' |
| 2055 | instead of `region-active-p', because `use-region-p' obeys the new |
| 2056 | user option `use-empty-active-region' (see Editing Changes, above). |
| 2057 | |
| 2058 | *** If a command sets `transient-mark-mode' to (only . OLDVAL), that |
| 2059 | means to activate transient-mark-mode temporarily, until the next |
| 2060 | unshifted point motion command or mark deactivation. Afterwards, |
| 2061 | reset transient-mark-mode to the value OLDVAL. The values `only' and |
| 2062 | `identity', introduced in Emacs 22, are now deprecated. |
| 2063 | |
| 2064 | ** Emacs session information |
| 2065 | |
| 2066 | *** The new variables `before-init-time' and `after-init-time' record the |
| 2067 | value of `current-time' before and after Emacs loads the init files. |
| 2068 | |
| 2069 | *** The new function `emacs-uptime' returns the uptime of an Emacs instance. |
| 2070 | |
| 2071 | *** The new function `emacs-init-time' returns the duration of the |
| 2072 | Emacs initialization. |
| 2073 | |
| 2074 | ** Changes affecting display-buffer |
| 2075 | |
| 2076 | *** display-buffer tries to be smarter when splitting windows. |
| 2077 | The new option split-window-preferred-function lets you specify your own |
| 2078 | function to pop up new windows. Its default value split-window-sensibly |
| 2079 | can split a window either vertically or horizontally, whichever seems |
| 2080 | more suitable in the current configuration. You can tune the behavior |
| 2081 | of split-window-sensibly by customizing split-height-threshold and the |
| 2082 | new option split-width-threshold. Both options now take the value nil |
| 2083 | to inhibit splitting in one direction. Setting split-width-threshold to |
| 2084 | nil inhibits horizontal splitting and gets you the behavior of Emacs 22 |
| 2085 | in this respect. In any case, display-buffer may now split the largest |
| 2086 | window vertically even when it is not as wide as the containing frame. |
| 2087 | |
| 2088 | *** If pop-up-frames has the value `graphic-only', display-buffer only |
| 2089 | makes a separate frame on graphic displays. |
| 2090 | |
| 2091 | *** select-frame and set-frame-selected-window have a new optional |
| 2092 | argument NORECORD. If non-nil, this will avoid messing with the order |
| 2093 | of recently selected windows and the buffer list. |
| 2094 | |
| 2095 | ** Window parameters can now be defined. |
| 2096 | These are analogous to frame parameters, but are associated with |
| 2097 | individual windows. |
| 2098 | |
| 2099 | *** The new functions window-parameters, window-parameter, and |
| 2100 | set-window-parameter are used to query and set window parameters. |
| 2101 | |
| 2102 | ** Minibuffer and completion changes |
| 2103 | |
| 2104 | *** A list of default values can be specified for the DEFAULT argument of |
| 2105 | functions `read-from-minibuffer', `read-string', `read-command', |
| 2106 | `read-variable', `read-buffer', `completing-read'. Elements of this list |
| 2107 | are available for inserting into the minibuffer by typing `M-n'. |
| 2108 | For empty input these functions return the first element of this list. |
| 2109 | |
| 2110 | *** New function `read-regexp' uses the regexp history and some useful |
| 2111 | regexp defaults (string at point, last Isearch/replacement regexp/string) |
| 2112 | via M-n when reading a regexp in the minibuffer. |
| 2113 | |
| 2114 | *** minibuffer-local-must-match-filename-map is now named |
| 2115 | minibuffer-local-filename-must-match-map. |
| 2116 | |
| 2117 | *** The `require-match' argument to `completing-read' accepts the new |
| 2118 | values `confirm-only' and `confirm-after-completion'. |
| 2119 | |
| 2120 | ** Search and replacement changes |
| 2121 | |
| 2122 | *** The regexp form \(?<num>:<regexp>\) specifies the group number explicitly. |
| 2123 | |
| 2124 | *** New function `match-substitute-replacement' returns the result of |
| 2125 | `replace-match' without actually using it in the buffer. |
| 2126 | |
| 2127 | *** The new variable `replace-search-function' determines the function |
| 2128 | to use for searching in query-replace and replace-string. The |
| 2129 | function it specifies is called by `perform-replace' when its 4th |
| 2130 | argument is nil. |
| 2131 | |
| 2132 | *** The new variable `replace-re-search-function' determines the |
| 2133 | function to use for searching in `query-replace-regexp', |
| 2134 | `replace-regexp', `query-replace-regexp-eval', and |
| 2135 | `map-query-replace-regexp'. The function it specifies is called by |
| 2136 | `perform-replace' when its 4th argument is non-nil. |
| 2137 | |
| 2138 | *** New keymap `search-map' bound to `M-s' provides global bindings |
| 2139 | for search related commands. |
| 2140 | |
| 2141 | *** New keymap `multi-query-replace-map' contains additional keys bound |
| 2142 | to `automatic-all' and `exit-current' for multi-buffer interactive replacement. |
| 2143 | |
| 2144 | *** The variable `inhibit-changing-match-data', if non-nil, prevents |
| 2145 | the search and match primitives from changing the match data. |
| 2146 | |
| 2147 | *** New functions `word-search-forward-lax' and `word-search-backward-lax'. |
| 2148 | These are like `word-search-forward and `word-search-backward', except |
| 2149 | that the end of the search string need not match a word boundary, |
| 2150 | unless it ends in whitespace. |
| 2151 | |
| 2152 | ** File handling changes |
| 2153 | |
| 2154 | *** set-file-modes is now interactive and can take the mode value in |
| 2155 | symbolic notation thanks to auxiliary functions. |
| 2156 | |
| 2157 | *** file-local-variables-alist stores an alist of file-local |
| 2158 | variables defined in the current buffer. |
| 2159 | |
| 2160 | ** Face-remapping |
| 2161 | |
| 2162 | *** Each face can be remapped to a different face definition using the |
| 2163 | variable `face-remapping-alist'. This is an alist that maps faces to |
| 2164 | replacement definitions (which can be face names, lists of face names, |
| 2165 | or attribute/value plists. If this variable is buffer-local, the |
| 2166 | remapping occurs only in that buffer. |
| 2167 | |
| 2168 | *** text-scale-mode remaps the default face to a larger or smaller |
| 2169 | size in the current buffer. This feature is used by the Buffer Face |
| 2170 | menu and the new `C-x C-+', `C-x C--', and `C-x C-0' commands (see |
| 2171 | Editing Changes, above). |
| 2172 | |
| 2173 | *** New functions: |
| 2174 | |
| 2175 | **** `face-remap-add-relative' adds a face remapping entry to the |
| 2176 | current buffer. |
| 2177 | |
| 2178 | **** ``face-remap-remove-relative' removes a face remapping entry from |
| 2179 | the current buffer. |
| 2180 | |
| 2181 | **** `face-remap-reset-base' restores a face to its global definition. |
| 2182 | |
| 2183 | **** `face-remap-set-base' sets the base remapping of a face. |
| 2184 | |
| 2185 | ** Process changes |
| 2186 | |
| 2187 | *** The new function `start-file-process' is similar to `start-process', |
| 2188 | but obeys file handlers. The file handler is chosen based on |
| 2189 | `default-directory'. The functions `start-file-process-shell-command' |
| 2190 | and `process-file-shell-command' are also new; they call internally |
| 2191 | `start-file-process' and `process-file', respectively. |
| 2192 | |
| 2193 | *** The new function `process-lines' executes an external program and |
| 2194 | returns its output as a list of lines. |
| 2195 | |
| 2196 | ** Character code, representation, and charset changes. |
| 2197 | |
| 2198 | *** In multibyte buffers and strings, characters are represented by |
| 2199 | UTF-8 byte sequences. The character code space is now 0x0..0x3FFFFF |
| 2200 | with no gap; code points 0x0..0x10FFFF are Unicode characters of the |
| 2201 | same code points, while code points 0x3FFF80..0x3FFFFF are raw 8-bit |
| 2202 | bytes. |
| 2203 | |
| 2204 | *** Generic characters no longer exist. |
| 2205 | |
| 2206 | *** The concept of a charset has changed. A single character may |
| 2207 | belong to multiple charsets (e.g. a-grave, U+00E0, belongs to charsets |
| 2208 | unicode, iso-8859-1, iso-8859-3, etc). |
| 2209 | |
| 2210 | **** The dimension of a charset is now 1, 2, 3, or 4, and the size of |
| 2211 | each dimension is no longer limited to 94 or 96. |
| 2212 | |
| 2213 | **** A dynamic charset priority list is used to infer the charset of |
| 2214 | characters for display. |
| 2215 | |
| 2216 | *** The functions `split-char' and `make-char' now accept up to 4 |
| 2217 | positional codes instead of just 2. |
| 2218 | |
| 2219 | *** The functions `encode-char' and `decode-char' now accept any character sets. |
| 2220 | |
| 2221 | *** The function `define-charset' now accepts a completely different |
| 2222 | form of arguments (old-style arguments still work). |
| 2223 | |
| 2224 | *** The value of the function `char-charset' depends on the current |
| 2225 | priorities of charsets. |
| 2226 | |
| 2227 | *** The function get-char-code-property now accepts many Unicode base |
| 2228 | character properties. They are `name', `general-category', |
| 2229 | `canonical-combining-class', `bidi-class', `decomposition', |
| 2230 | `decimal-digit-value', `digit-value', `numeric-value', `mirrored', |
| 2231 | `old-name', `iso-10646-comment', `uppercase', `lowercase', and |
| 2232 | `titlecase'. |
| 2233 | |
| 2234 | *** The functions `modify-syntax-entry' and `modify-category-entry' now |
| 2235 | accept a cons of characters as the first argument, and modify all |
| 2236 | entries in that range of characters. |
| 2237 | |
| 2238 | *** Use of `translation-table-for-input' for character code unification |
| 2239 | is now obsolete, since Emacs 23.1 and later uses Unicode as basis for |
| 2240 | internal representation of characters. |
| 2241 | |
| 2242 | *** New functions: |
| 2243 | |
| 2244 | **** `characterp' returns t if and only if the argument is a character. |
| 2245 | This replaces `char-valid-p', which is now obsolete. |
| 2246 | |
| 2247 | **** `max-char' returns the maximum character code (currently #x3FFFFF). |
| 2248 | |
| 2249 | **** `define-charset-alias' defines an alias of a charset. |
| 2250 | |
| 2251 | **** `set-charset-priority' sets priorities of charsets. |
| 2252 | |
| 2253 | **** `charset-priority-list' returns a prioritized list of charsets. |
| 2254 | |
| 2255 | **** `unibyte-string' makes a unibyte string from bytes. |
| 2256 | |
| 2257 | **** `define-char-code-property' defines a character code property. |
| 2258 | |
| 2259 | **** `char-code-property-description' returns the description string of |
| 2260 | a character code property. |
| 2261 | |
| 2262 | *** New variables: |
| 2263 | |
| 2264 | **** `find-word-boundary-function-table' is a char-table of functions to |
| 2265 | search for a word boundary. |
| 2266 | |
| 2267 | **** `char-script-table' is a char-table of script names. |
| 2268 | |
| 2269 | **** `char-width-table' is a char-table of character widths. |
| 2270 | |
| 2271 | **** `print-charset-text-property' controls how to handle `charset' text |
| 2272 | property on printing a string. |
| 2273 | |
| 2274 | **** `printable-chars' is a char-table of printable characters. |
| 2275 | |
| 2276 | ** Code conversion changes |
| 2277 | |
| 2278 | *** The new function `define-coding-system' should be used to define a |
| 2279 | coding system instead of `make-coding-system' (which is now obsolete). |
| 2280 | |
| 2281 | *** The functions `encode-coding-region' and `decode-coding-region' |
| 2282 | have an optional 4th argument to specify where the result of |
| 2283 | conversion should go. |
| 2284 | |
| 2285 | *** The functions `encode-coding-string' and `decode-coding-string' |
| 2286 | have an optional 4th argument specifying a buffer to store the result |
| 2287 | of conversion. |
| 2288 | |
| 2289 | *** The new variable `inhibit-null-byte-detection' controls whether to |
| 2290 | consider text with null bytes as binary data. By default, it is |
| 2291 | `nil', and Emacs uses `no-conversion' for any text containing null |
| 2292 | bytes. |
| 2293 | |
| 2294 | *** The functions `set-coding-priority' and `make-coding-system' are obsolete. |
| 2295 | |
| 2296 | *** New functions: |
| 2297 | |
| 2298 | **** `with-coding-priority' executes Lisp code using the specified |
| 2299 | coding system priority order. |
| 2300 | |
| 2301 | **** `check-coding-systems-region' checks if the text in the region is |
| 2302 | encodable by the specified coding systems. |
| 2303 | |
| 2304 | **** `coding-system-aliases' returns a list of aliases of a coding system. |
| 2305 | |
| 2306 | **** `coding-system-charset-list' returns a list of charsets supported |
| 2307 | by a coding system. |
| 2308 | |
| 2309 | **** `coding-system-priority-list' returns a list of coding systems |
| 2310 | ordered by their priorities. |
| 2311 | |
| 2312 | **** `set-coding-system-priority' sets priorities of coding systems. |
| 2313 | |
| 2314 | **** `coding-system-from-name' returns a coding system matching with |
| 2315 | the argument name. |
| 2316 | |
| 2317 | ** There is a new input method, Robin, different from Quail. |
| 2318 | It has three functionalities: |
| 2319 | i) a simple input method (converts an ASCII sequence into a string). |
| 2320 | ii) converts an existing buffer substring into another string |
| 2321 | iii) reverse conversion (each character produced by a |
| 2322 | robin rule can hold the original ASCII sequence as a char-code-property) |
| 2323 | |
| 2324 | *** The new function `robin-define-package' defines a Robin package. |
| 2325 | |
| 2326 | *** The new function `robin-modify-package' modifies an existing Robin package. |
| 2327 | |
| 2328 | *** The new function `robin-use-package' starts using a Robin package |
| 2329 | as an input method. |
| 2330 | |
| 2331 | *** The new function `string-to-unibyte' is like `string-as-unibyte' |
| 2332 | but signals an error if STRING contains a non-ASCII, non-eight-bit |
| 2333 | character. |
| 2334 | |
| 2335 | ** Changes related to the new font backend |
| 2336 | |
| 2337 | *** Which font backends to use can be specified by the X resource |
| 2338 | "FontBackend". For instance, to use both X core fonts and Xft fonts: |
| 2339 | |
| 2340 | Emacs.FontBackend: x,xft |
| 2341 | |
| 2342 | If this resource is not set, Emacs tries to use all font backends |
| 2343 | available on your graphic device. |
| 2344 | |
| 2345 | *** New frame parameter `font-backend' specifies a list of |
| 2346 | font-backends supported by the frame's graphic device. On X, they are |
| 2347 | currently `x' and `xft'. |
| 2348 | |
| 2349 | *** The function `set-fontset-font' now accepts a script name as the |
| 2350 | second argument, and has an optional 5th argument to control how to |
| 2351 | set the font. |
| 2352 | |
| 2353 | *** New functions: |
| 2354 | |
| 2355 | **** `fontp' checks if the argument is a font-spec or font-entity. |
| 2356 | |
| 2357 | **** `font-spec' creates a new font-spec object. |
| 2358 | |
| 2359 | **** `font-get' returns a font property value. |
| 2360 | |
| 2361 | **** `font-put' sets a font property value. |
| 2362 | |
| 2363 | **** `font-face-attributes' returns a plist of face attributes set by a font. |
| 2364 | |
| 2365 | **** `list-fonts' returns a list of font-entities matching a font spec. |
| 2366 | |
| 2367 | **** `find-font' returns the font-entity best matching the given font spec. |
| 2368 | |
| 2369 | **** `font-family-list' returns a list of family names of available fonts. |
| 2370 | |
| 2371 | **** `font-xlfd-name' returns an XLFD name of a given font spec, font |
| 2372 | entity, or font object. |
| 2373 | |
| 2374 | **** `clear-font-cache' clears all font caches. |
| 2375 | |
| 2376 | ** Changes related to multiple-terminal (multi-tty) support |
| 2377 | |
| 2378 | *** $TERM is now set to `dumb' for subprocesses. If you want to know the |
| 2379 | $TERM inherited by Emacs you will have to look inside initial-environment. |
| 2380 | |
| 2381 | *** $DISPLAY is now dynamically inherited from the frame's `display'. |
| 2382 | |
| 2383 | *** The `window-system' variable is now frame-local. The new |
| 2384 | `initial-window-system' variable contains the `window-system' value |
| 2385 | for the first frame. `window-system' is also now a function that |
| 2386 | takes a frame argument. |
| 2387 | |
| 2388 | *** The `keyboard-translate-table' variable and the terminal and |
| 2389 | keyboard coding systems are now terminal-local. |
| 2390 | |
| 2391 | *** You can specify a terminal device (`tty' parameter) and a terminal |
| 2392 | type (`tty-type' parameter) to `make-terminal-frame'. |
| 2393 | |
| 2394 | *** The function `make-frame-on-display' now works during a tty |
| 2395 | session. |
| 2396 | |
| 2397 | *** A new `terminal' data type. |
| 2398 | The functions `get-device-terminal', `terminal-parameters', |
| 2399 | `terminal-parameter', `set-terminal-parameter' use this data type. |
| 2400 | |
| 2401 | *** Function key sequences are now mapped using `local-function-key-map', |
| 2402 | a new variable. This inherits from the global variable function-key-map, |
| 2403 | which is not used directly any more. |
| 2404 | |
| 2405 | *** New hooks: |
| 2406 | |
| 2407 | **** before-hack-local-variables-hook is called after setting new |
| 2408 | variable file-local-variables-alist, and before actually applying the |
| 2409 | file-local variables. |
| 2410 | |
| 2411 | **** `suspend-tty-functions' and `resume-tty-functions' are called |
| 2412 | after a tty frame has been suspended or resumed, respectively. The |
| 2413 | functions are called with the terminal id of the frame being |
| 2414 | suspended/resumed as a parameter. |
| 2415 | |
| 2416 | **** The special hook `delete-terminal-functions' is called before |
| 2417 | deleting a terminal. |
| 2418 | |
| 2419 | *** New functions: |
| 2420 | |
| 2421 | **** `delete-terminal' |
| 2422 | |
| 2423 | **** `suspend-tty' |
| 2424 | |
| 2425 | **** `resume-tty'. |
| 2426 | |
| 2427 | *** `initial-environment' holds the environment inherited from Emacs's parent. |
| 2428 | |
| 2429 | ** Redisplay changes |
| 2430 | |
| 2431 | *** For underlined characters, the distance between the underline and |
| 2432 | the baseline is controlled by a new variable, `underline-minimum-offset'. |
| 2433 | |
| 2434 | *** You can now pass the value of the `invisible' property to |
| 2435 | invisible-p to check whether it would cause the text to be invisible. |
| 2436 | This is convenient when checking invisibility of text with no buffer |
| 2437 | position (e.g. in before/after-strings). |
| 2438 | |
| 2439 | *** `clear-image-cache' can be told to flush only images of a specific file. |
| 2440 | |
| 2441 | *** `vertical-motion' can now be given a goal column. |
| 2442 | It now accepts a cons cell (COLS . LINES) in its first argument, which |
| 2443 | says to stop, where possible, at a pixel x-position equal to COLS |
| 2444 | times the default column width. |
| 2445 | |
| 2446 | *** redisplay-end-trigger-functions, set-window-redisplay-end-trigger, |
| 2447 | and window-redisplay-end-trigger are obsolete. Use `jit-lock-register' |
| 2448 | instead. |
| 2449 | |
| 2450 | *** The new variables `wrap-prefix' and `line-prefix' specify display |
| 2451 | specs which are appended at display-time to every continuation line |
| 2452 | and non-continuation line, respectively. In addition, Emacs |
| 2453 | recognizes the `wrap-prefix' and `line-prefix' text or overlay |
| 2454 | properties; these have the same effects as the variables of the same |
| 2455 | name, but take precedence. |
| 2456 | |
| 2457 | ** The Lisp interpreter now treats non-breaking space as whitespace. |
| 2458 | |
| 2459 | ** Miscellaneous new functions |
| 2460 | |
| 2461 | *** `apply-partially' performs a "curried" application of a function. |
| 2462 | |
| 2463 | *** `buffer-swap-text' swaps text between two buffers. This can be |
| 2464 | useful for modes such as tar-mode, archive-mode, RMAIL. |
| 2465 | |
| 2466 | *** `combine-and-quote-strings' produces a single string from a list of strings |
| 2467 | sticking a separator string in between each pair, and quoting those |
| 2468 | strings that include the separator as their substring. Useful for |
| 2469 | consing shell command lines from the individual arguments. |
| 2470 | |
| 2471 | *** `custom-note-var-changed' tells Custom to treat the change in a |
| 2472 | certain variable as having been made within Custom. |
| 2473 | |
| 2474 | *** `face-all-attributes' returns an alist describing all the basic |
| 2475 | attributes of a given face. |
| 2476 | |
| 2477 | *** `format-seconds' converts a number of seconds into a readable |
| 2478 | string of days, hours, etc. |
| 2479 | |
| 2480 | *** `image-refresh' refreshes all images associated with a given image |
| 2481 | specification. |
| 2482 | |
| 2483 | *** `locate-user-emacs-file' helps packages to select the appropriate |
| 2484 | place to save user-specific files. It defaults to `user-emacs-directory' |
| 2485 | unless the file already exists at $HOME. |
| 2486 | |
| 2487 | *** `read-color' reads a color name using the minibuffer. |
| 2488 | |
| 2489 | *** `read-shell-command' does what its name says, with completion. It |
| 2490 | uses the minibuffer-local-shell-command-map for that. |
| 2491 | |
| 2492 | *** `split-string-and-unquote' splits a string into a list of substrings |
| 2493 | on the boundaries of a given delimiter, and unquotes the substrings that |
| 2494 | are quoted. Useful for taking apart shell commands. |
| 2495 | |
| 2496 | *** The two new functions `looking-at-p' and `string-match-p' can do |
| 2497 | the same matching as `looking-at' and `string-match' without changing |
| 2498 | the match data. |
| 2499 | |
| 2500 | *** The two new functions `make-serial-process' and |
| 2501 | `serial-process-configure' provide a Lisp interface to the new serial |
| 2502 | port support (see Emacs changes, above). |
| 2503 | |
| 2504 | ** Miscellaneous new variables |
| 2505 | |
| 2506 | *** `auto-save-include-big-deletions', if non-nil, means auto-save is |
| 2507 | not turned off automatically after a big deletion. |
| 2508 | |
| 2509 | *** `read-circle', if nil, disables the reading of recursive Lisp |
| 2510 | structures using the #N= and #N# syntax. |
| 2511 | |
| 2512 | *** `this-command-keys-shift-translated' is non-nil if the key |
| 2513 | sequence invoking the current command was found by shift-translation. |
| 2514 | |
| 2515 | *** `window-point-insertion-type' determines the insertion-type of the |
| 2516 | marker used for window-point. |
| 2517 | |
| 2518 | *** bookmark provides `bookmark-make-record-function' so special major |
| 2519 | modes like Info can teach bookmark.el how to save and restore the |
| 2520 | relevant data. |
| 2521 | |
| 2522 | *** `fill-forward-paragraph-function' specifies which function the |
| 2523 | filling code should use to find paragraph boundaries. |
| 2524 | |
| 2525 | \f |
| 2526 | * New Packages for Lisp Programming in Emacs 23.1 |
| 2527 | |
| 2528 | ** The new package avl-tree.el deals with the AVL tree data structure. |
| 2529 | |
| 2530 | ** The new package check-declare.el verifies the accuracy of |
| 2531 | declare-function macros (see Lisp Changes, above). |
| 2532 | |
| 2533 | ** find-cmd.el can build `find' commands using lisp syntax. |
| 2534 | |
| 2535 | ** The package misearch.el has been added. It allows Isearch to search |
| 2536 | through multiple buffers. A variable `multi-isearch-next-buffer-function' |
| 2537 | defines the function to call to get the next buffer to search in the series |
| 2538 | of multiple buffers. Top-level functions `multi-isearch-buffers', |
| 2539 | `multi-isearch-buffers-regexp', `multi-isearch-files' and |
| 2540 | `multi-isearch-files-regexp' accept a single argument that specifies |
| 2541 | a list of buffers/files to search for a string/regexp. |
| 2542 | |
| 2543 | ** The new major mode `special-mode' is intended as a parent for |
| 2544 | major modes such as those that set the "'mode-class 'special" property. |
| 2545 | |
| 2546 | \f |
| 2547 | ---------------------------------------------------------------------- |
| 2548 | This file is part of GNU Emacs. |
| 2549 | |
| 2550 | GNU Emacs is free software: you can redistribute it and/or modify |
| 2551 | it under the terms of the GNU General Public License as published by |
| 2552 | the Free Software Foundation, either version 3 of the License, or |
| 2553 | (at your option) any later version. |
| 2554 | |
| 2555 | GNU Emacs is distributed in the hope that it will be useful, |
| 2556 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 2557 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 2558 | GNU General Public License for more details. |
| 2559 | |
| 2560 | You should have received a copy of the GNU General Public License |
| 2561 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
| 2562 | |
| 2563 | \f |
| 2564 | Local variables: |
| 2565 | mode: outline |
| 2566 | paragraph-separate: "[ \f]*$" |
| 2567 | end: |