| 1 | GNU Emacs NEWS -- history of user-visible changes. |
| 2 | |
| 3 | Copyright (C) 2001-2014 Free Software Foundation, Inc. |
| 4 | See the end of the file for license conditions. |
| 5 | |
| 6 | Please send Emacs bug reports to bug-gnu-emacs@gnu.org. |
| 7 | If possible, use M-x report-emacs-bug. |
| 8 | |
| 9 | This file is about changes in Emacs version 22. |
| 10 | |
| 11 | See files NEWS.21, NEWS.20, NEWS.19, NEWS.18, and NEWS.1-17 for changes |
| 12 | 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 | \f |
| 17 | * About external Lisp packages |
| 18 | |
| 19 | When you upgrade to Emacs 22 from a previous version, some older |
| 20 | versions of external Lisp packages are known to behave badly. |
| 21 | So in general, it is recommended that you upgrade to the latest |
| 22 | versions of any external Lisp packages that you are using. |
| 23 | |
| 24 | You should also be aware that many Lisp packages have been included |
| 25 | with Emacs 22 (see the extensive list below), and you should remove |
| 26 | any older versions of these packages to ensure that the Emacs 22 |
| 27 | version is used. You can use M-x list-load-path-shadows to find such |
| 28 | older packages. |
| 29 | |
| 30 | Some specific packages that are known to cause problems are given |
| 31 | below. Emacs tries to warn you about these through `bad-packages-alist'. |
| 32 | |
| 33 | ** Semantic (used by CEDET, ECB, JDEE): upgrade to latest version. |
| 34 | |
| 35 | ** cua.el, cua-mode.el: remove old versions. |
| 36 | |
| 37 | \f |
| 38 | * Changes in Emacs 22.3 |
| 39 | |
| 40 | ** Support for several obsolete platforms will be removed in the next |
| 41 | major version of Emacs: Apollo, Acorn, Alliant, Amdahl, Altos 3068, |
| 42 | Bull DPX/2, Bull SPS-7, AT&T UNIX 7300, AT&T 3b, Aviion Berkeley 4.1 |
| 43 | to 4.3, Celerity, Clipper, Convergent S series, Convex, Cydra, DG/UX, |
| 44 | Dual, Elxsi, ESIX, Fujitsu F301, GEC 63, Gould, Honeywell XPS100, |
| 45 | i860, IBM ps/2 aix386, Harris CXUX, Harris Night Hawk 1200/3000, |
| 46 | Harris Power PC, HP 9000 series 200 or 300, HLH Orion, Hitachi |
| 47 | SR2001/SR2201, IBM PS/2, Integrated Solutions 386, Integrated |
| 48 | Solutions Optimum V, Iris, Irix < v6, ISC Unix, ISI 68000, Masscomp |
| 49 | 5000, Megatest 68000, Motorola System V/88, ns16000, National |
| 50 | Semiconductor 32000, osf1 (s/osf*) Paragon i860, PFU A-series, Plexus, |
| 51 | Pyramid, RTU 3.0, RISCiX SCO 3.2, sh3el, Sinix, Stride, Sun 1-3, Sun |
| 52 | RoadRunner, Sequent Symmetry, Sony News, SunOS 4, System V rel 0 to 3, |
| 53 | Tadpole 68k machines, tahoe, Tandem Integrity S2, targon31, Tektronix, |
| 54 | TI Nu, NCR Tower 32, U-station, Ultrix, UMAX, UniPlus 5.2, Whitechapel |
| 55 | Computer Works MG1, Wicat, and Xenix. |
| 56 | |
| 57 | *** Support for systems without alloca will be removed. |
| 58 | |
| 59 | *** Support for Sun windows will be removed. |
| 60 | |
| 61 | *** Support for VMS will be removed. |
| 62 | |
| 63 | * Incompatible Editing Changes in Emacs 22.3 |
| 64 | |
| 65 | ** The following input methods were removed in Emacs 22.2, but this was |
| 66 | not advertised: danish-alt-postfix, esperanto-alt-postfix, |
| 67 | finnish-alt-postfix, german-alt-postfix, icelandic-alt-postfix, |
| 68 | norwegian-alt-postfix, scandinavian-alt-postfix, spanish-alt-postfix, |
| 69 | and swedish-alt-postfix. Use the versions without "alt-", which are |
| 70 | identical. |
| 71 | |
| 72 | \f |
| 73 | * Installation Changes in Emacs 22.2 |
| 74 | |
| 75 | ** Emacs is now licensed under the GNU GPL version 3 (or later). |
| 76 | |
| 77 | ** Support for GNU/kFreeBSD (GNU userland and FreeBSD kernel) was added. |
| 78 | |
| 79 | ** Deprecated machine types and operating systems |
| 80 | |
| 81 | Certain machine types and operating systems have been deprecated. On |
| 82 | these systems, configure will print a warning and exit, and you must |
| 83 | edit the configure script for compilation to proceed. The deprecated |
| 84 | systems will not be supported at all in Emacs 23. We are not aware of |
| 85 | anyone running Emacs on these systems; if you are, please email |
| 86 | emacs-devel@gnu.org to take it off the list of deprecated systems. |
| 87 | |
| 88 | *** Deprecated machine types |
| 89 | pmax, hp9000s300, ibm370aix, ncr386, ews4800, mips-siemens, powerpcle, |
| 90 | and tandem-s2 |
| 91 | |
| 92 | *** Deprecated operating systems |
| 93 | bsd386, bsdos2-1, bsdos2, bsdos3, bsdos4, bsd4-1, bsd4-2, bsd4-3, |
| 94 | usg5-0, usg5-2-2, usg5-2, usg5-3, ultrix4-3, 386bsd, hpux, hpux8, |
| 95 | hpux9, hpux9shr, hpux10, hpux10-20, aix3-1, aix3-2-5, aix3-2, aix4-1, |
| 96 | nextstep, ux4800, uxpds, and uxpv |
| 97 | |
| 98 | * Changes in Emacs 22.2 |
| 99 | |
| 100 | ** `describe-project' is renamed to `describe-gnu-project'. |
| 101 | |
| 102 | ** `view-todo' is renamed to `view-emacs-todo'. |
| 103 | |
| 104 | ** `find-name-dired' now uses -iname rather than -name |
| 105 | for case-insensitive filesystems. The default behavior is determined |
| 106 | by the value of `read-file-name-completion-ignore-case'; if you don't |
| 107 | like that, customize the value of the new option `find-name-arg'. |
| 108 | |
| 109 | ** In Image mode, whenever the displayed image is wider and/or higher |
| 110 | than the window, the usual keys for moving the cursor cause the image |
| 111 | to be scrolled horizontally or vertically instead. |
| 112 | |
| 113 | ** Emacs can use stock icons in the tool bar when compiled with Gtk+. |
| 114 | However, this feature is disabled by default. To enable it, put |
| 115 | |
| 116 | (setq icon-map-list '(x-gtk-stock-map)) |
| 117 | |
| 118 | in your .emacs or some other startup file. For more information, see |
| 119 | the documentation for the two variables icon-map-list and x-gtk-stock-map. |
| 120 | |
| 121 | ** Scrollbars follow the system theme on Windows XP and later. |
| 122 | Windows XP introduced themed scrollbars, but applications have to take |
| 123 | special steps to use them. Emacs now has the appropriate resources linked |
| 124 | in to make it use the scrollbars from the system theme. |
| 125 | |
| 126 | ** focus-follows-mouse defaults to nil on MS Windows. |
| 127 | Previously this variable was incorrectly documented as having no effect |
| 128 | on MS Windows, and the default was inappropriate for the majority of |
| 129 | Windows installations. Users of software which modifies the behavior of |
| 130 | Windows to cause focus to follow the mouse will now need to explicitly set |
| 131 | this variable. |
| 132 | |
| 133 | ** `bad-packages-alist' will warn about external packages that are known |
| 134 | to cause problems in this version of Emacs. |
| 135 | |
| 136 | ** The values of `dired-recursive-deletes' and `dired-recursive-copies' |
| 137 | have been changed to `top'. This means that the user is asked once, |
| 138 | before deleting/copying the indicated directory recursively. |
| 139 | |
| 140 | ** `browse-url-emacs' loads a URL into an Emacs buffer. Handy for *.el URLs. |
| 141 | |
| 142 | ** The command gdba has been removed as gdb works now for those cases where it |
| 143 | was needed. In text command mode, if you have problems before execution has |
| 144 | started, use M-x gud-gdb. |
| 145 | |
| 146 | ** desktop.el now detects conflicting uses of the desktop file. |
| 147 | When loading the desktop, desktop.el can now detect that the file is already |
| 148 | in use. The default behavior is to ask the user what to do, but you can |
| 149 | customize it with the new option `desktop-load-locked-desktop'. When saving, |
| 150 | desktop.el warns about attempts to overwrite a desktop file if it determines |
| 151 | that the desktop being saved is not an update of the one on disk. |
| 152 | |
| 153 | ** Compilation mode now correctly respects the value of |
| 154 | `compilation-scroll-output' between invocations. Previously, output |
| 155 | was mistakenly scrolled on compiles after the first. Customize |
| 156 | `compilation-scroll-output' if you want to retain the scrolling. |
| 157 | |
| 158 | ** `font-lock-comment-face' no longer differs from the default on |
| 159 | displays with fewer than 16 colors and dark background (e.g. older |
| 160 | xterms and the Linux console). On such displays, only the comment |
| 161 | delimiters will appear to be fontified (in the new face |
| 162 | `font-lock-comment-delimiter-face'). To restore the old appearance, |
| 163 | customize `font-lock-comment-face'. Another alternative is to use a |
| 164 | newer terminal emulator that supports more colors (256 is now common). |
| 165 | For example, for xterm compatible emulators that support 256 colors, |
| 166 | you can run emacs like this: |
| 167 | env TERM=xterm-256color emacs -nw |
| 168 | (This was new in Emacs 22.1, but was not described. In Emacs 22.1 |
| 169 | this also happened for terminals with a light background, that is not |
| 170 | the case anymore). |
| 171 | |
| 172 | * New Modes and Packages in Emacs 22.2 |
| 173 | |
| 174 | ** bibtex-style-mode helps you write BibTeX's *.bst files. |
| 175 | |
| 176 | ** The new package css-mode.el provides a major mode for editing CSS files. |
| 177 | |
| 178 | ** The new package vera-mode.el provides a major mode for editing Vera files. |
| 179 | |
| 180 | ** The new package verilog-mode.el provides a major mode for editing Verilog files. |
| 181 | |
| 182 | ** The new package socks.el implements the SOCKS v5 protocol. |
| 183 | |
| 184 | ** VC |
| 185 | |
| 186 | *** VC backends can provide completion of revision names. |
| 187 | |
| 188 | *** VC backends can provide extra menu entries to the "Version Control" menu. |
| 189 | This can be used to add menu entries for backend specific functions. |
| 190 | |
| 191 | *** VC has some support for Mercurial (Hg). |
| 192 | |
| 193 | *** VC has some support for Monotone (Mtn). |
| 194 | |
| 195 | *** VC has some support for Bazaar (Bzr). |
| 196 | |
| 197 | *** VC has some support for Git. |
| 198 | |
| 199 | * Incompatible Lisp Changes in Emacs 22.2 |
| 200 | |
| 201 | ** shell.el no longer defines the aliases `dirtrack-toggle' and |
| 202 | `dirtrack-mode' for `shell-dirtrack-mode'. These names were removed |
| 203 | because they clash with commands provided by dirtrack.el. Use |
| 204 | `shell-dirtrack-mode' instead. |
| 205 | |
| 206 | * Lisp Changes in Emacs 22.2. |
| 207 | |
| 208 | ** Frame-local variables are deprecated and are slated for removal. |
| 209 | They can easily be emulated. Rather than calling `make-variable-frame-local' |
| 210 | and accessing the variable value directly, explicitly check for a |
| 211 | frame-parameter, and if there is one, use its value in preference to |
| 212 | that of the variable. Note that buffer-local values should take |
| 213 | precedence over frame-local ones, so you may wish to check `local-variable-p' |
| 214 | first. |
| 215 | |
| 216 | ** The function invisible-p returns non-nil if the character |
| 217 | after a specified position is invisible. |
| 218 | |
| 219 | ** inhibit-modification-hooks is bound to t while running modification hooks. |
| 220 | As a happy consequence, after-change-functions and before-change-functions |
| 221 | are not bound to nil any more while running an (after|before)-change-function. |
| 222 | |
| 223 | ** New function `window-full-width-p' returns t if a window is as wide |
| 224 | as its frame. |
| 225 | |
| 226 | ** The new function `image-refresh' refreshes all images associated |
| 227 | with a given image specification. |
| 228 | |
| 229 | ** The new function `combine-and-quote-strings' concatenates a list of strings |
| 230 | using a specified separator. If a string contains double quotes, they |
| 231 | are escaped in the output. |
| 232 | |
| 233 | ** The new function `split-string-and-unquote' performs the inverse operation to |
| 234 | `combine-and-quote-strings', i.e. splits a single string into a list |
| 235 | of strings, undoing any quoting added by `combine-and-quote-strings'. |
| 236 | (For some separator/string combinations, the original strings cannot |
| 237 | be recovered.) |
| 238 | |
| 239 | \f |
| 240 | * Installation Changes in Emacs 22.1 |
| 241 | |
| 242 | ** You can build Emacs with Gtk+ widgets by specifying `--with-x-toolkit=gtk' |
| 243 | when you run configure. This requires Gtk+ 2.4 or newer. This port |
| 244 | provides a way to display multilingual text in menus (with some caveats). |
| 245 | |
| 246 | ** The Emacs Lisp Reference Manual is now part of the distribution. |
| 247 | |
| 248 | The Emacs Lisp Reference Manual in Info format is built as part of the |
| 249 | Emacs build procedure and installed together with the Emacs User |
| 250 | Manual. A menu item was added to the menu bar to make it easily |
| 251 | accessible (Help->More Manuals->Emacs Lisp Reference). |
| 252 | |
| 253 | ** The Introduction to Programming in Emacs Lisp manual is now part of |
| 254 | the distribution. |
| 255 | |
| 256 | This manual is now part of the standard distribution and is installed, |
| 257 | together with the Emacs User Manual, into the Info directory. A menu |
| 258 | item was added to the menu bar to make it easily accessible |
| 259 | (Help->More Manuals->Introduction to Emacs Lisp). |
| 260 | |
| 261 | ** Leim is now part of the Emacs distribution. |
| 262 | You no longer need to download a separate tarball in order to build |
| 263 | Emacs with Leim. |
| 264 | |
| 265 | ** Support for MacOS X was added. |
| 266 | See the files mac/README and mac/INSTALL for build instructions. |
| 267 | |
| 268 | ** Mac OS 9 port now uses the Carbon API by default. You can also |
| 269 | create a non-Carbon build by specifying `NonCarbon' as a target. See |
| 270 | the files mac/README and mac/INSTALL for build instructions. |
| 271 | |
| 272 | ** Support for a Cygwin build of Emacs was added. |
| 273 | |
| 274 | ** Support for GNU/Linux systems on X86-64 machines was added. |
| 275 | |
| 276 | ** Support for GNU/Linux systems on S390 machines was added. |
| 277 | |
| 278 | ** Support for GNU/Linux systems on Tensilica Xtensa machines was added. |
| 279 | |
| 280 | ** Support for FreeBSD/Alpha has been added. |
| 281 | |
| 282 | ** New translations of the Emacs Tutorial are available in the |
| 283 | following languages: Brazilian Portuguese, Bulgarian, Chinese (both |
| 284 | with simplified and traditional characters), French, Russian, and |
| 285 | Italian. Type `C-u C-h t' to choose one of them in case your language |
| 286 | setup doesn't automatically select the right one. |
| 287 | |
| 288 | ** New translations of the Emacs reference card are available in the |
| 289 | Brazilian Portuguese and Russian. The corresponding PostScript files |
| 290 | are also included. |
| 291 | |
| 292 | ** A French translation of the `Emacs Survival Guide' is available. |
| 293 | |
| 294 | ** Emacs now supports new configure options `--program-prefix', |
| 295 | `--program-suffix' and `--program-transform-name' that affect the names of |
| 296 | installed programs. |
| 297 | |
| 298 | ** By default, Emacs now uses a setgid helper program to update game |
| 299 | scores. The directory ${localstatedir}/games/emacs is the normal |
| 300 | place for game scores to be stored. You can control this with the |
| 301 | configure option `--with-game-dir'. The specific user that Emacs uses |
| 302 | to own the game scores is controlled by `--with-game-user'. If access |
| 303 | to a game user is not available, then scores will be stored separately |
| 304 | in each user's home directory. |
| 305 | |
| 306 | ** Emacs now includes support for loading image libraries on demand. |
| 307 | (Currently this feature is only used on MS Windows.) You can configure |
| 308 | the supported image types and their associated dynamic libraries by |
| 309 | setting the variable `image-library-alist'. |
| 310 | |
| 311 | ** Emacs can now be built without sound support. |
| 312 | |
| 313 | ** Emacs Lisp source files are compressed by default if `gzip' is available. |
| 314 | |
| 315 | ** All images used in Emacs have been consolidated in etc/images and subdirs. |
| 316 | See also the changes to `find-image', documented below. |
| 317 | |
| 318 | ** Emacs comes with a new set of icons. |
| 319 | These icons are displayed on the taskbar and/or titlebar when Emacs |
| 320 | runs in a graphical environment. Source files for these icons can be |
| 321 | found in etc/images/icons. (You can't change the icons displayed by |
| 322 | Emacs by changing these files directly. On X, the icon is compiled |
| 323 | into the Emacs executable; see gnu.h in the source tree. On MS |
| 324 | Windows, see nt/icons/emacs.ico.) |
| 325 | |
| 326 | ** The `emacsserver' program has been removed, replaced with Lisp code. |
| 327 | |
| 328 | ** The `yow' program has been removed. |
| 329 | Use the corresponding Emacs feature instead. |
| 330 | |
| 331 | ** The Emacs terminal emulation in term.el uses a different terminfo name. |
| 332 | The Emacs terminal emulation in term.el now uses "eterm-color" as its |
| 333 | terminfo name, since term.el now supports color. |
| 334 | |
| 335 | ** The script etc/emacs-buffer.gdb can be used with gdb to retrieve the |
| 336 | contents of buffers from a core dump and save them to files easily, should |
| 337 | Emacs crash. |
| 338 | |
| 339 | ** Building with -DENABLE_CHECKING does not automatically build with union |
| 340 | types any more. Add -DUSE_LISP_UNION_TYPE if you want union types. |
| 341 | |
| 342 | ** When pure storage overflows while dumping, Emacs now prints how |
| 343 | much pure storage it will approximately need. |
| 344 | |
| 345 | \f |
| 346 | * Startup Changes in Emacs 22.1 |
| 347 | |
| 348 | ** Init file changes |
| 349 | If the init file ~/.emacs does not exist, Emacs will try |
| 350 | ~/.emacs.d/init.el or ~/.emacs.d/init.elc. Likewise, if the shell init file |
| 351 | ~/.emacs_SHELL is not found, Emacs will try ~/.emacs.d/init_SHELL.sh. |
| 352 | |
| 353 | ** Emacs can now be invoked in full-screen mode on a windowed display. |
| 354 | When Emacs is invoked on a window system, the new command-line options |
| 355 | `--fullwidth', `--fullheight', and `--fullscreen' produce a frame |
| 356 | whose width, height, or both width and height take up the entire |
| 357 | screen size. (For now, this does not work with some window managers.) |
| 358 | |
| 359 | ** Emacs now displays a splash screen by default even if command-line |
| 360 | arguments were given. The new command-line option --no-splash |
| 361 | disables the splash screen; see also the variable |
| 362 | `inhibit-splash-screen' (which is also aliased as |
| 363 | `inhibit-startup-message'). |
| 364 | |
| 365 | ** New user option `inhibit-startup-buffer-menu'. |
| 366 | When loading many files, for instance with `emacs *', Emacs normally |
| 367 | displays a buffer menu. This option turns the buffer menu off. |
| 368 | |
| 369 | ** New command line option -nbc or --no-blinking-cursor disables |
| 370 | the blinking cursor on graphical terminals. |
| 371 | |
| 372 | ** The option --script FILE runs Emacs in batch mode and loads FILE. |
| 373 | It is useful for writing Emacs Lisp shell script files, because they |
| 374 | can start with this line: |
| 375 | |
| 376 | #!/usr/bin/emacs --script |
| 377 | |
| 378 | ** The -f option, used from the command line to call a function, |
| 379 | now reads arguments for the function interactively if it is |
| 380 | an interactively callable function. |
| 381 | |
| 382 | ** The option --directory DIR now modifies `load-path' immediately. |
| 383 | Directories are added to the front of `load-path' in the order they |
| 384 | appear on the command line. For example, with this command line: |
| 385 | |
| 386 | emacs -batch -L .. -L /tmp --eval "(require 'foo)" |
| 387 | |
| 388 | Emacs looks for library `foo' in the parent directory, then in /tmp, then |
| 389 | in the other directories in `load-path'. (-L is short for --directory.) |
| 390 | |
| 391 | ** When you specify a frame size with --geometry, the size applies to |
| 392 | all frames you create. A position specified with --geometry only |
| 393 | affects the initial frame. |
| 394 | |
| 395 | ** Emacs built for MS-Windows now behaves like Emacs on X does, |
| 396 | with respect to its frame position: if you don't specify a position |
| 397 | (in your .emacs init file, in the Registry, or with the --geometry |
| 398 | command-line option), Emacs leaves the frame position to the Windows' |
| 399 | window manager. |
| 400 | |
| 401 | ** The command line option --no-windows has been changed to |
| 402 | --no-window-system. The old one still works, but is deprecated. |
| 403 | |
| 404 | ** If the environment variable DISPLAY specifies an unreachable X display, |
| 405 | Emacs will now startup as if invoked with the --no-window-system option. |
| 406 | |
| 407 | ** Emacs now reads the standard abbrevs file ~/.abbrev_defs |
| 408 | automatically at startup, if it exists. When Emacs offers to save |
| 409 | modified buffers, it saves the abbrevs too if they have changed. It |
| 410 | can do this either silently or asking for confirmation first, |
| 411 | according to the value of `save-abbrevs'. |
| 412 | |
| 413 | ** New command line option -Q or --quick. |
| 414 | This is like using -q --no-site-file, but in addition it also disables |
| 415 | the fancy startup screen. |
| 416 | |
| 417 | ** New command line option -D or --basic-display. |
| 418 | Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and |
| 419 | the blinking cursor. |
| 420 | |
| 421 | ** The default is now to use a bitmap as the icon. |
| 422 | The command-line options --icon-type, -i have been replaced with |
| 423 | options --no-bitmap-icon, -nbi to turn the bitmap icon off. |
| 424 | |
| 425 | ** If the environment variable EMAIL is defined, Emacs now uses its value |
| 426 | to compute the default value of `user-mail-address', in preference to |
| 427 | concatenation of `user-login-name' with the name of your host machine. |
| 428 | |
| 429 | \f |
| 430 | * Incompatible Editing Changes in Emacs 22.1 |
| 431 | |
| 432 | ** You can now follow links by clicking Mouse-1 on the link. |
| 433 | |
| 434 | See below for more details. |
| 435 | |
| 436 | ** When the undo information of the current command gets really large |
| 437 | (beyond the value of `undo-outer-limit'), Emacs discards it and warns |
| 438 | you about it. |
| 439 | |
| 440 | ** When Emacs prompts for file names, SPC no longer completes the file name. |
| 441 | This is so filenames with embedded spaces could be input without the |
| 442 | need to quote the space with a C-q. The underlying changes in the |
| 443 | keymaps that are active in the minibuffer are described below under |
| 444 | "New keymaps for typing file names". |
| 445 | |
| 446 | If you want the old behavior back, add these two key bindings to your |
| 447 | ~/.emacs init file: |
| 448 | |
| 449 | (define-key minibuffer-local-filename-completion-map |
| 450 | " " 'minibuffer-complete-word) |
| 451 | (define-key minibuffer-local-must-match-filename-map |
| 452 | " " 'minibuffer-complete-word) |
| 453 | |
| 454 | ** The completion commands TAB, SPC and ? in the minibuffer apply only |
| 455 | to the text before point. If there is text in the buffer after point, |
| 456 | it remains unchanged. |
| 457 | |
| 458 | ** In incremental search, C-w is changed. M-%, C-M-w and C-M-y are special. |
| 459 | |
| 460 | See below under "incremental search changes". |
| 461 | |
| 462 | ** M-g is now a prefix key. |
| 463 | M-g g and M-g M-g run goto-line. |
| 464 | M-g n and M-g M-n run next-error (like C-x `). |
| 465 | M-g p and M-g M-p run previous-error. |
| 466 | |
| 467 | ** C-u M-g M-g switches to the most recent previous buffer, |
| 468 | and goes to the specified line in that buffer. |
| 469 | |
| 470 | When goto-line starts to execute, if there's a number in the buffer at |
| 471 | point then it acts as the default argument for the minibuffer. |
| 472 | |
| 473 | ** M-o now is the prefix key for setting text properties; |
| 474 | M-o M-o requests refontification. |
| 475 | |
| 476 | ** C-x C-f RET (find-file), typing nothing in the minibuffer, is no longer |
| 477 | a special case. |
| 478 | |
| 479 | Since the default input is the current directory, this has the effect |
| 480 | of specifying the current directory. Normally that means to visit the |
| 481 | directory with Dired. |
| 482 | |
| 483 | You can get the old behavior by typing C-x C-f M-n RET, which fetches |
| 484 | the actual file name into the minibuffer. |
| 485 | |
| 486 | ** In Dired's ! command (dired-do-shell-command), `*' and `?' now |
| 487 | control substitution of the file names only when they are surrounded |
| 488 | by whitespace. This means you can now use them as shell wildcards |
| 489 | too. If you want to use just plain `*' as a wildcard, type `*""'; the |
| 490 | doublequotes make no difference in the shell, but they prevent |
| 491 | special treatment in `dired-do-shell-command'. |
| 492 | |
| 493 | ** The info-search bindings on C-h C-f, C-h C-k and C-h C-i |
| 494 | have been moved to C-h F, C-h K and C-h S. |
| 495 | |
| 496 | ** `apply-macro-to-region-lines' now operates on all lines that begin |
| 497 | in the region, rather than on all complete lines in the region. |
| 498 | |
| 499 | ** line-move-ignore-invisible now defaults to t. |
| 500 | |
| 501 | ** Adaptive filling misfeature removed. |
| 502 | It no longer treats `NNN.' or `(NNN)' as a prefix. |
| 503 | |
| 504 | ** The old bindings C-M-delete and C-M-backspace have been deleted, |
| 505 | since there are situations where one or the other will shut down |
| 506 | the operating system or your X server. |
| 507 | |
| 508 | ** The register compatibility key bindings (deprecated since Emacs 19) |
| 509 | have been removed: |
| 510 | C-x / point-to-register (Use: C-x r SPC) |
| 511 | C-x j jump-to-register (Use: C-x r j) |
| 512 | C-x x copy-to-register (Use: C-x r s) |
| 513 | C-x g insert-register (Use: C-x r i) |
| 514 | |
| 515 | \f |
| 516 | * Editing Changes in Emacs 22.1 |
| 517 | |
| 518 | ** The max size of buffers and integers has been doubled. |
| 519 | On 32bit machines, it is now 256M (i.e. 268435455). |
| 520 | |
| 521 | ** !MEM FULL! at the start of the mode line indicates that Emacs |
| 522 | cannot get any more memory for Lisp data. This often means it could |
| 523 | crash soon if you do things that use more memory. On most systems, |
| 524 | killing buffers will get out of this state. If killing buffers does |
| 525 | not make !MEM FULL! disappear, you should save your work and start |
| 526 | a new Emacs. |
| 527 | |
| 528 | ** `undo-only' does an undo which does not redo any previous undo. |
| 529 | |
| 530 | ** Yanking text now discards certain text properties that can |
| 531 | be inconvenient when you did not expect them. The variable |
| 532 | `yank-excluded-properties' specifies which ones. Insertion |
| 533 | of register contents and rectangles also discards these properties. |
| 534 | |
| 535 | ** New command `kill-whole-line' kills an entire line at once. |
| 536 | By default, it is bound to C-S-<backspace>. |
| 537 | |
| 538 | ** M-SPC (just-one-space) when given a numeric argument N |
| 539 | converts whitespace around point to N spaces. |
| 540 | |
| 541 | ** You can now switch buffers in a cyclic order with C-x C-left |
| 542 | (previous-buffer) and C-x C-right (next-buffer). C-x left and |
| 543 | C-x right can be used as well. The functions keep a different buffer |
| 544 | cycle for each frame, using the frame-local buffer list. |
| 545 | |
| 546 | ** C-x 5 C-o displays a specified buffer in another frame |
| 547 | but does not switch to that frame. It's the multi-frame |
| 548 | analogue of C-x 4 C-o. |
| 549 | |
| 550 | ** `special-display-buffer-names' and `special-display-regexps' now |
| 551 | understand two new boolean pseudo-frame-parameters `same-frame' and |
| 552 | `same-window'. |
| 553 | |
| 554 | ** New commands to operate on pairs of open and close characters: |
| 555 | `insert-pair', `delete-pair', `raise-sexp'. |
| 556 | |
| 557 | ** M-x setenv now expands environment variable references. |
| 558 | |
| 559 | Substrings of the form `$foo' and `${foo}' in the specified new value |
| 560 | now refer to the value of environment variable foo. To include a `$' |
| 561 | in the value, use `$$'. |
| 562 | |
| 563 | ** The default values of paragraph-start and indent-line-function have |
| 564 | been changed to reflect those used in Text mode rather than those used |
| 565 | in Paragraph-Indent Text mode. |
| 566 | |
| 567 | ** The default for the paper size (variable ps-paper-type) is taken |
| 568 | from the locale. |
| 569 | |
| 570 | ** Help command changes: |
| 571 | |
| 572 | *** Changes in C-h bindings: |
| 573 | |
| 574 | C-h e displays the *Messages* buffer. |
| 575 | |
| 576 | C-h d runs apropos-documentation. |
| 577 | |
| 578 | C-h r visits the Emacs Manual in Info. |
| 579 | |
| 580 | C-h followed by a control character is used for displaying files |
| 581 | that do not change: |
| 582 | |
| 583 | C-h C-f displays the FAQ. |
| 584 | C-h C-e displays the PROBLEMS file. |
| 585 | |
| 586 | The info-search bindings on C-h C-f, C-h C-k and C-h C-i |
| 587 | have been moved to C-h F, C-h K and C-h S. |
| 588 | |
| 589 | C-h c, C-h k, C-h w, and C-h f now handle remapped interactive commands. |
| 590 | - C-h c and C-h k report the actual command (after possible remapping) |
| 591 | run by the key sequence. |
| 592 | - C-h w and C-h f on a command which has been remapped now report the |
| 593 | command it is remapped to, and the keys which can be used to run |
| 594 | that command. |
| 595 | |
| 596 | For example, if C-k is bound to kill-line, and kill-line is remapped |
| 597 | to new-kill-line, these commands now report: |
| 598 | - C-h c and C-h k C-k reports: |
| 599 | C-k runs the command new-kill-line |
| 600 | - C-h w and C-h f kill-line reports: |
| 601 | kill-line is remapped to new-kill-line which is on C-k, <deleteline> |
| 602 | - C-h w and C-h f new-kill-line reports: |
| 603 | new-kill-line is on C-k |
| 604 | |
| 605 | *** The apropos commands now accept a list of words to match. |
| 606 | When more than one word is specified, at least two of those words must |
| 607 | be present for an item to match. Regular expression matching is still |
| 608 | available. |
| 609 | |
| 610 | *** The new option `apropos-sort-by-scores' causes the matching items |
| 611 | to be sorted according to their score. The score for an item is a |
| 612 | number calculated to indicate how well the item matches the words or |
| 613 | regular expression that you entered to the apropos command. The best |
| 614 | match is listed first, and the calculated score is shown for each |
| 615 | matching item. |
| 616 | |
| 617 | *** Help commands `describe-function' and `describe-key' now show function |
| 618 | arguments in lowercase italics on displays that support it. To change the |
| 619 | default, customize face `help-argument-name' or redefine the function |
| 620 | `help-default-arg-highlight'. |
| 621 | |
| 622 | *** C-h v and C-h f commands now include a hyperlink to the C source for |
| 623 | variables and functions defined in C (if the C source is available). |
| 624 | |
| 625 | *** Help mode now only makes hyperlinks for faces when the face name is |
| 626 | preceded or followed by the word `face'. It no longer makes |
| 627 | hyperlinks for variables without variable documentation, unless |
| 628 | preceded by one of the words `variable' or `option'. It now makes |
| 629 | hyperlinks to Info anchors (or nodes) if the anchor (or node) name is |
| 630 | enclosed in single quotes and preceded by `info anchor' or `Info |
| 631 | anchor' (in addition to earlier `info node' and `Info node'). In |
| 632 | addition, it now makes hyperlinks to URLs as well if the URL is |
| 633 | enclosed in single quotes and preceded by `URL'. |
| 634 | |
| 635 | *** The new command `describe-char' (C-u C-x =) pops up a buffer with |
| 636 | description various information about a character, including its |
| 637 | encodings and syntax, its text properties, how to input, overlays, and |
| 638 | widgets at point. You can get more information about some of them, by |
| 639 | clicking on mouse-sensitive areas or moving there and pressing RET. |
| 640 | |
| 641 | *** The command `list-text-properties-at' has been deleted because |
| 642 | C-u C-x = gives the same information and more. |
| 643 | |
| 644 | *** New command `display-local-help' displays any local help at point |
| 645 | in the echo area. It is bound to `C-h .'. It normally displays the |
| 646 | same string that would be displayed on mouse-over using the |
| 647 | `help-echo' property, but, in certain cases, it can display a more |
| 648 | keyboard oriented alternative. |
| 649 | |
| 650 | *** New user option `help-at-pt-display-when-idle' allows you to |
| 651 | automatically show the help provided by `display-local-help' on |
| 652 | point-over, after suitable idle time. The amount of idle time is |
| 653 | determined by the user option `help-at-pt-timer-delay' and defaults |
| 654 | to one second. This feature is turned off by default. |
| 655 | |
| 656 | ** Mark command changes: |
| 657 | |
| 658 | *** A prefix argument is no longer required to repeat a jump to a |
| 659 | previous mark if you set `set-mark-command-repeat-pop' to t. I.e. C-u |
| 660 | C-SPC C-SPC C-SPC ... cycles through the mark ring. Use C-u C-u C-SPC |
| 661 | to set the mark immediately after a jump. |
| 662 | |
| 663 | *** Marking commands extend the region when invoked multiple times. |
| 664 | |
| 665 | If you type C-M-SPC (mark-sexp), M-@ (mark-word), M-h |
| 666 | (mark-paragraph), or C-M-h (mark-defun) repeatedly, the marked region |
| 667 | extends each time, so you can mark the next two sexps with M-C-SPC |
| 668 | M-C-SPC, for example. This feature also works for |
| 669 | mark-end-of-sentence, if you bind that to a key. It also extends the |
| 670 | region when the mark is active in Transient Mark mode, regardless of |
| 671 | the last command. To start a new region with one of marking commands |
| 672 | in Transient Mark mode, you can deactivate the active region with C-g, |
| 673 | or set the new mark with C-SPC. |
| 674 | |
| 675 | *** Some commands do something special in Transient Mark mode when the |
| 676 | mark is active--for instance, they limit their operation to the |
| 677 | region. Even if you don't normally use Transient Mark mode, you might |
| 678 | want to get this behavior from a particular command. There are two |
| 679 | ways you can enable Transient Mark mode and activate the mark, for one |
| 680 | command only. |
| 681 | |
| 682 | One method is to type C-SPC C-SPC; this enables Transient Mark mode |
| 683 | and sets the mark at point. The other method is to type C-u C-x C-x. |
| 684 | This enables Transient Mark mode temporarily but does not alter the |
| 685 | mark or the region. |
| 686 | |
| 687 | After these commands, Transient Mark mode remains enabled until you |
| 688 | deactivate the mark. That typically happens when you type a command |
| 689 | that alters the buffer, but you can also deactivate the mark by typing |
| 690 | C-g. |
| 691 | |
| 692 | *** Movement commands `beginning-of-buffer', `end-of-buffer', |
| 693 | `beginning-of-defun', `end-of-defun' do not set the mark if the mark |
| 694 | is already active in Transient Mark mode. |
| 695 | |
| 696 | *** M-h (mark-paragraph) now accepts a prefix arg. |
| 697 | |
| 698 | With positive arg, M-h marks the current and the following paragraphs; |
| 699 | if the arg is negative, it marks the current and the preceding |
| 700 | paragraphs. |
| 701 | |
| 702 | ** Incremental Search changes: |
| 703 | |
| 704 | *** M-% typed in isearch mode invokes `query-replace' or |
| 705 | `query-replace-regexp' (depending on search mode) with the current |
| 706 | search string used as the string to replace. |
| 707 | |
| 708 | *** C-w in incremental search now grabs either a character or a word, |
| 709 | making the decision in a heuristic way. This new job is done by the |
| 710 | command `isearch-yank-word-or-char'. To restore the old behavior, |
| 711 | bind C-w to `isearch-yank-word' in `isearch-mode-map'. |
| 712 | |
| 713 | *** C-y in incremental search now grabs the next line if point is already |
| 714 | at the end of a line. |
| 715 | |
| 716 | *** C-M-w deletes and C-M-y grabs a character in isearch mode. |
| 717 | Another method to grab a character is to enter the minibuffer by `M-e' |
| 718 | and to type `C-f' at the end of the search string in the minibuffer. |
| 719 | |
| 720 | *** Vertical scrolling is now possible within incremental search. |
| 721 | To enable this feature, customize the new user option |
| 722 | `isearch-allow-scroll'. User written commands which satisfy stringent |
| 723 | constraints can be marked as "scrolling commands". See the Emacs manual |
| 724 | for details. |
| 725 | |
| 726 | *** Isearch no longer adds `isearch-resume' commands to the command |
| 727 | history by default. To enable this feature, customize the new |
| 728 | user option `isearch-resume-in-command-history'. |
| 729 | |
| 730 | ** Replace command changes: |
| 731 | |
| 732 | *** When used interactively, the commands `query-replace-regexp' and |
| 733 | `replace-regexp' allow \,expr to be used in a replacement string, |
| 734 | where expr is an arbitrary Lisp expression evaluated at replacement |
| 735 | time. `\#' in a replacement string now refers to the count of |
| 736 | replacements already made by the replacement command. All regular |
| 737 | expression replacement commands now allow `\?' in the replacement |
| 738 | string to specify a position where the replacement string can be |
| 739 | edited for each replacement. `query-replace-regexp-eval' is now |
| 740 | deprecated since it offers no additional functionality. |
| 741 | |
| 742 | *** query-replace uses isearch lazy highlighting when the new user option |
| 743 | `query-replace-lazy-highlight' is non-nil. |
| 744 | |
| 745 | *** The current match in query-replace is highlighted in new face |
| 746 | `query-replace' which by default inherits from isearch face. |
| 747 | |
| 748 | *** New user option `query-replace-skip-read-only': when non-nil, |
| 749 | `query-replace' and related functions simply ignore |
| 750 | a match if part of it has a read-only property. |
| 751 | |
| 752 | ** Local variables lists: |
| 753 | |
| 754 | *** If the local variables list contains any variable-value pairs that |
| 755 | are not known to be safe, Emacs shows a prompt asking whether to apply |
| 756 | the local variables list as a whole. In earlier versions, a prompt |
| 757 | was only issued for variables explicitly marked as risky (for the |
| 758 | definition of risky variables, see `risky-local-variable-p'). |
| 759 | |
| 760 | At the prompt, you can choose to save the contents of this local |
| 761 | variables list to `safe-local-variable-values'. This new customizable |
| 762 | option is a list of variable-value pairs that are known to be safe. |
| 763 | Variables can also be marked as safe with the existing |
| 764 | `safe-local-variable' property (see `safe-local-variable-p'). |
| 765 | However, risky variables will not be added to |
| 766 | `safe-local-variable-values' in this way. |
| 767 | |
| 768 | *** The variable `enable-local-variables' controls how local variable |
| 769 | lists are handled. t, the default, specifies the standard querying |
| 770 | behavior. :safe means use only safe values, and ignore the rest. |
| 771 | :all means set all variables, whether or not they are safe. |
| 772 | nil means ignore them all. Anything else means always query. |
| 773 | |
| 774 | *** The variable `safe-local-eval-forms' specifies a list of forms that |
| 775 | are ok to evaluate when they appear in an `eval' local variables |
| 776 | specification. Normally Emacs asks for confirmation before evaluating |
| 777 | such a form, but if the form appears in this list, no confirmation is |
| 778 | needed. |
| 779 | |
| 780 | *** If a function has a non-nil `safe-local-eval-function' property, |
| 781 | that means it is ok to evaluate some calls to that function when it |
| 782 | appears in an `eval' local variables specification. If the property |
| 783 | is t, then any form calling that function with constant arguments is |
| 784 | ok. If the property is a function or list of functions, they are called |
| 785 | with the form as argument, and if any returns t, the form is ok to call. |
| 786 | |
| 787 | If the form is not "ok to call", that means Emacs asks for |
| 788 | confirmation as before. |
| 789 | |
| 790 | *** In processing a local variables list, Emacs strips the prefix and |
| 791 | suffix from every line before processing all the lines. |
| 792 | |
| 793 | *** Text properties in local variables. |
| 794 | |
| 795 | A file local variables list cannot specify a string with text |
| 796 | properties--any specified text properties are discarded. |
| 797 | |
| 798 | ** File operation changes: |
| 799 | |
| 800 | *** Unquoted `$' in file names do not signal an error any more when |
| 801 | the corresponding environment variable does not exist. |
| 802 | Instead, the `$ENVVAR' text is left as is, so that `$$' quoting |
| 803 | is only rarely needed. |
| 804 | |
| 805 | *** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case. |
| 806 | |
| 807 | Since the default input is the current directory, this has the effect |
| 808 | of specifying the current directory. Normally that means to visit the |
| 809 | directory with Dired. |
| 810 | |
| 811 | *** C-x s (save-some-buffers) now offers an option `d' to diff a buffer |
| 812 | against its file, so you can see what changes you would be saving. |
| 813 | |
| 814 | *** Auto Compression mode is now enabled by default. |
| 815 | |
| 816 | *** If the user visits a file larger than `large-file-warning-threshold', |
| 817 | Emacs asks for confirmation. |
| 818 | |
| 819 | *** The commands copy-file, rename-file, make-symbolic-link and |
| 820 | add-name-to-file, when given a directory as the "new name" argument, |
| 821 | convert it to a file name by merging in the within-directory part of |
| 822 | the existing file's name. (This is the same convention that shell |
| 823 | commands cp, mv, and ln follow.) Thus, M-x copy-file RET ~/foo RET |
| 824 | /tmp RET copies ~/foo to /tmp/foo. |
| 825 | |
| 826 | *** require-final-newline now has two new possible values: |
| 827 | |
| 828 | `visit' means add a newline (as an undoable change) if it's needed |
| 829 | when visiting the file. |
| 830 | |
| 831 | `visit-save' means add a newline (as an undoable change) if it's |
| 832 | needed when visiting the file, and also add a newline if it's needed |
| 833 | when saving the file. |
| 834 | |
| 835 | *** The new option mode-require-final-newline controls how certain |
| 836 | major modes enable require-final-newline. Any major mode that's |
| 837 | designed for a kind of file that should normally end in a newline |
| 838 | sets require-final-newline based on mode-require-final-newline. |
| 839 | So you can customize mode-require-final-newline to control what these |
| 840 | modes do. |
| 841 | |
| 842 | *** When you are root, and you visit a file whose modes specify |
| 843 | read-only, the Emacs buffer is now read-only too. Type C-x C-q if you |
| 844 | want to make the buffer writable. (As root, you can in fact alter the |
| 845 | file.) |
| 846 | |
| 847 | *** find-file-read-only visits multiple files in read-only mode, |
| 848 | when the file name contains wildcard characters. |
| 849 | |
| 850 | *** find-alternate-file replaces the current file with multiple files, |
| 851 | when the file name contains wildcard characters. It now asks if you |
| 852 | wish save your changes and not just offer to kill the buffer. |
| 853 | |
| 854 | *** When used interactively, `format-write-file' now asks for confirmation |
| 855 | before overwriting an existing file, unless a prefix argument is |
| 856 | supplied. This behavior is analogous to `write-file'. |
| 857 | |
| 858 | *** The variable `auto-save-file-name-transforms' now has a third element that |
| 859 | controls whether or not the function `make-auto-save-file-name' will |
| 860 | attempt to construct a unique auto-save name (e.g. for remote files). |
| 861 | |
| 862 | *** The new option `write-region-inhibit-fsync' disables calls to fsync |
| 863 | in `write-region'. This can be useful on laptops to avoid spinning up |
| 864 | the hard drive upon each file save. Enabling this variable may result |
| 865 | in data loss, use with care. |
| 866 | |
| 867 | ** Minibuffer changes: |
| 868 | |
| 869 | *** The completion commands TAB, SPC and ? in the minibuffer apply only |
| 870 | to the text before point. If there is text in the buffer after point, |
| 871 | it remains unchanged. |
| 872 | |
| 873 | *** The new file-name-shadow-mode is turned ON by default, so that when |
| 874 | entering a file name, any prefix which Emacs will ignore is dimmed. |
| 875 | |
| 876 | *** There's a new face `minibuffer-prompt'. |
| 877 | Emacs adds this face to the list of text properties stored in the |
| 878 | variable `minibuffer-prompt-properties', which is used to display the |
| 879 | prompt string. |
| 880 | |
| 881 | *** Enhanced visual feedback in `*Completions*' buffer. |
| 882 | |
| 883 | Completions lists use faces to highlight what all completions |
| 884 | have in common and where they begin to differ. |
| 885 | |
| 886 | The common prefix shared by all possible completions uses the face |
| 887 | `completions-common-part', while the first character that isn't the |
| 888 | same uses the face `completions-first-difference'. By default, |
| 889 | `completions-common-part' inherits from `default', and |
| 890 | `completions-first-difference' inherits from `bold'. The idea of |
| 891 | `completions-common-part' is that you can use it to make the common |
| 892 | parts less visible than normal, so that the rest of the differing |
| 893 | parts is, by contrast, slightly highlighted. |
| 894 | |
| 895 | Above fontification is always done when listing completions is |
| 896 | triggered at minibuffer. If you want to fontify completions whose |
| 897 | listing is triggered at the other normal buffer, you have to pass |
| 898 | the common prefix of completions to `display-completion-list' as |
| 899 | its second argument. |
| 900 | |
| 901 | *** File-name completion can now ignore specified directories. |
| 902 | If an element of the list in `completion-ignored-extensions' ends in a |
| 903 | slash `/', it indicates a subdirectory that should be ignored when |
| 904 | completing file names. Elements of `completion-ignored-extensions' |
| 905 | which do not end in a slash are never considered when a completion |
| 906 | candidate is a directory. |
| 907 | |
| 908 | *** New user option `history-delete-duplicates'. |
| 909 | If set to t when adding a new history element, all previous identical |
| 910 | elements are deleted from the history list. |
| 911 | |
| 912 | ** Redisplay changes: |
| 913 | |
| 914 | *** The new face `mode-line-inactive' is used to display the mode line |
| 915 | of non-selected windows. The `mode-line' face is now used to display |
| 916 | the mode line of the currently selected window. |
| 917 | |
| 918 | The new variable `mode-line-in-non-selected-windows' controls whether |
| 919 | the `mode-line-inactive' face is used. |
| 920 | |
| 921 | *** The mode line position information now comes before the major mode. |
| 922 | When the file is maintained under version control, that information |
| 923 | appears between the position information and the major mode. |
| 924 | |
| 925 | *** You can now customize the use of window fringes. To control this |
| 926 | for all frames, use M-x fringe-mode or the Show/Hide submenu of the |
| 927 | top-level Options menu, or customize the `fringe-mode' variable. To |
| 928 | control this for a specific frame, use the command M-x |
| 929 | set-fringe-style. |
| 930 | |
| 931 | *** Angle icons in the fringes can indicate the buffer boundaries. In |
| 932 | addition, up and down arrow bitmaps in the fringe indicate which ways |
| 933 | the window can be scrolled. |
| 934 | |
| 935 | This behavior is activated by setting the buffer-local variable |
| 936 | `indicate-buffer-boundaries' to a non-nil value. The default value of |
| 937 | this variable is found in `default-indicate-buffer-boundaries'. |
| 938 | |
| 939 | If value is `left' or `right', both angle and arrow bitmaps are |
| 940 | displayed in the left or right fringe, resp. |
| 941 | |
| 942 | The value can also be an alist which specifies the presence and |
| 943 | position of each bitmap individually. |
| 944 | |
| 945 | For example, ((top . left) (t . right)) places the top angle bitmap |
| 946 | in left fringe, the bottom angle bitmap in right fringe, and both |
| 947 | arrow bitmaps in right fringe. To show just the angle bitmaps in the |
| 948 | left fringe, but no arrow bitmaps, use ((top . left) (bottom . left)). |
| 949 | |
| 950 | *** On window systems, lines which are exactly as wide as the window |
| 951 | (not counting the final newline character) are no longer broken into |
| 952 | two lines on the display (with just the newline on the second line). |
| 953 | Instead, the newline now "overflows" into the right fringe, and the |
| 954 | cursor will be displayed in the fringe when positioned on that newline. |
| 955 | |
| 956 | The new user option 'overflow-newline-into-fringe' can be set to nil to |
| 957 | revert to the old behavior of continuing such lines. |
| 958 | |
| 959 | *** A window can now have individual fringe and scroll-bar settings, |
| 960 | in addition to the individual display margin settings. |
| 961 | |
| 962 | Such individual settings are now preserved when windows are split |
| 963 | horizontally or vertically, a saved window configuration is restored, |
| 964 | or when the frame is resized. |
| 965 | |
| 966 | *** When a window has display margin areas, the fringes are now |
| 967 | displayed between the margins and the buffer's text area, rather than |
| 968 | outside those margins. |
| 969 | |
| 970 | *** New face `escape-glyph' highlights control characters and escape glyphs. |
| 971 | |
| 972 | *** Non-breaking space and hyphens are now displayed with a special |
| 973 | face, either nobreak-space or escape-glyph. You can turn this off or |
| 974 | specify a different mode by setting the variable `nobreak-char-display'. |
| 975 | |
| 976 | *** The parameters of automatic hscrolling can now be customized. |
| 977 | The variable `hscroll-margin' determines how many columns away from |
| 978 | the window edge point is allowed to get before automatic hscrolling |
| 979 | will horizontally scroll the window. The default value is 5. |
| 980 | |
| 981 | The variable `hscroll-step' determines how many columns automatic |
| 982 | hscrolling scrolls the window when point gets too close to the |
| 983 | window edge. If its value is zero, the default, Emacs scrolls the |
| 984 | window so as to center point. If its value is an integer, it says how |
| 985 | many columns to scroll. If the value is a floating-point number, it |
| 986 | gives the fraction of the window's width to scroll the window. |
| 987 | |
| 988 | The variable `automatic-hscrolling' was renamed to |
| 989 | `auto-hscroll-mode'. The old name is still available as an alias. |
| 990 | |
| 991 | *** Moving or scrolling through images (and other lines) taller than |
| 992 | the window now works sensibly, by automatically adjusting the window's |
| 993 | vscroll property. |
| 994 | |
| 995 | *** Preemptive redisplay now adapts to current load and bandwidth. |
| 996 | |
| 997 | To avoid preempting redisplay on fast computers, networks, and displays, |
| 998 | the arrival of new input is now performed at regular intervals during |
| 999 | redisplay. The new variable `redisplay-preemption-period' specifies |
| 1000 | the period; the default is to check for input every 0.1 seconds. |
| 1001 | |
| 1002 | *** The %c and %l constructs are now ignored in frame-title-format. |
| 1003 | Due to technical limitations in how Emacs interacts with windowing |
| 1004 | systems, these constructs often failed to render properly, and could |
| 1005 | even cause Emacs to crash. |
| 1006 | |
| 1007 | *** If value of `auto-resize-tool-bars' is `grow-only', the tool bar |
| 1008 | will expand as needed, but not contract automatically. To contract |
| 1009 | the tool bar, you must type C-l. |
| 1010 | |
| 1011 | *** New customize option `overline-margin' controls the space between |
| 1012 | overline and text. |
| 1013 | |
| 1014 | *** New variable `x-underline-at-descent-line' controls the relative |
| 1015 | position of the underline. When set, it overrides the |
| 1016 | `x-use-underline-position-properties' variables. |
| 1017 | |
| 1018 | ** New faces: |
| 1019 | |
| 1020 | *** `mode-line-highlight' is the standard face indicating mouse sensitive |
| 1021 | elements on mode-line (and header-line) like `highlight' face on text |
| 1022 | areas. |
| 1023 | |
| 1024 | *** `mode-line-buffer-id' is the standard face for buffer identification |
| 1025 | parts of the mode line. |
| 1026 | |
| 1027 | *** `shadow' face defines the appearance of the "shadowed" text, i.e. |
| 1028 | the text which should be less noticeable than the surrounding text. |
| 1029 | This can be achieved by using shades of gray in contrast with either |
| 1030 | black or white default foreground color. This generic shadow face |
| 1031 | allows customization of the appearance of shadowed text in one place, |
| 1032 | so package-specific faces can inherit from it. |
| 1033 | |
| 1034 | *** `vertical-border' face is used for the vertical divider between windows. |
| 1035 | |
| 1036 | ** Font-Lock (syntax highlighting) changes: |
| 1037 | |
| 1038 | *** All modes now support using M-x font-lock-mode to toggle |
| 1039 | fontification, even those such as Occur, Info, and comint-derived |
| 1040 | modes that do their own fontification in a special way. |
| 1041 | |
| 1042 | The variable `Info-fontify' is no longer applicable; to disable |
| 1043 | fontification in Info, remove `turn-on-font-lock' from |
| 1044 | `Info-mode-hook'. |
| 1045 | |
| 1046 | *** New standard font-lock face `font-lock-comment-delimiter-face'. |
| 1047 | This is used for the characters that indicate the start of a comment, |
| 1048 | e.g. `;' in Lisp mode. |
| 1049 | |
| 1050 | *** New standard font-lock face `font-lock-preprocessor-face'. |
| 1051 | |
| 1052 | *** Easy to overlook single character negation can now be font-locked. |
| 1053 | You can use the new variable `font-lock-negation-char-face' and the face of |
| 1054 | the same name to customize this. Currently the cc-modes, sh-script-mode, |
| 1055 | cperl-mode and make-mode support this. |
| 1056 | |
| 1057 | *** Font-Lock mode: in major modes such as Lisp mode, where some Emacs |
| 1058 | features assume that an open-paren in column 0 is always outside of |
| 1059 | any string or comment, Font-Lock now highlights any such open-paren in |
| 1060 | bold-red if it is inside a string or a comment, to indicate that it |
| 1061 | can cause trouble. You should rewrite the string or comment so that |
| 1062 | the open-paren is not in column 0. |
| 1063 | |
| 1064 | *** M-o now is the prefix key for setting text properties; |
| 1065 | M-o M-o requests refontification. |
| 1066 | |
| 1067 | *** The default settings for JIT stealth lock parameters are changed. |
| 1068 | The default value for the user option jit-lock-stealth-time is now nil |
| 1069 | instead of 3. This setting of jit-lock-stealth-time disables stealth |
| 1070 | fontification: on today's machines, it may be a bug in font lock |
| 1071 | patterns if fontification otherwise noticeably degrades interactivity. |
| 1072 | If you find movement in infrequently visited buffers sluggish (and the |
| 1073 | major mode maintainer has no better idea), customizing |
| 1074 | jit-lock-stealth-time to a non-nil value will let Emacs fontify |
| 1075 | buffers in the background when it considers the system to be idle. |
| 1076 | jit-lock-stealth-nice is now 0.5 instead of 0.125 which is supposed to |
| 1077 | cause less load than the old defaults. |
| 1078 | |
| 1079 | *** jit-lock can now be delayed with `jit-lock-defer-time'. |
| 1080 | |
| 1081 | If this variable is non-nil, its value should be the amount of Emacs |
| 1082 | idle time in seconds to wait before starting fontification. For |
| 1083 | example, if you set `jit-lock-defer-time' to 0.25, fontification will |
| 1084 | only happen after 0.25s of idle time. |
| 1085 | |
| 1086 | *** contextual refontification is now separate from stealth fontification. |
| 1087 | |
| 1088 | jit-lock-defer-contextually is renamed jit-lock-contextually and |
| 1089 | jit-lock-context-time determines the delay after which contextual |
| 1090 | refontification takes place. |
| 1091 | |
| 1092 | *** lazy-lock is considered obsolete. |
| 1093 | |
| 1094 | The `lazy-lock' package is superseded by `jit-lock' and is considered |
| 1095 | obsolete. `jit-lock' is activated by default; if you wish to continue |
| 1096 | using `lazy-lock', activate it in your ~/.emacs like this: |
| 1097 | (setq font-lock-support-mode 'lazy-lock-mode) |
| 1098 | |
| 1099 | If you invoke `lazy-lock-mode' directly rather than through |
| 1100 | `font-lock-support-mode', it now issues a warning: |
| 1101 | "Use font-lock-support-mode rather than calling lazy-lock-mode" |
| 1102 | |
| 1103 | ** Menu support: |
| 1104 | |
| 1105 | *** A menu item "Show/Hide" was added to the top-level menu "Options". |
| 1106 | This menu allows you to turn various display features on and off (such |
| 1107 | as the fringes, the tool bar, the speedbar, and the menu bar itself). |
| 1108 | You can also move the vertical scroll bar to either side here or turn |
| 1109 | it off completely. There is also a menu-item to toggle displaying of |
| 1110 | current date and time, current line and column number in the mode-line. |
| 1111 | |
| 1112 | *** Speedbar has moved from the "Tools" top level menu to "Show/Hide". |
| 1113 | |
| 1114 | *** The menu item "Open File..." has been split into two items, "New File..." |
| 1115 | and "Open File...". "Open File..." now opens only existing files. This is |
| 1116 | to support existing GUI file selection dialogs better. |
| 1117 | |
| 1118 | *** The file selection dialog for Gtk+, Mac, W32 and Motif/LessTif can be |
| 1119 | disabled by customizing the variable `use-file-dialog'. |
| 1120 | |
| 1121 | *** The pop up menus for Lucid now stay up if you do a fast click and can |
| 1122 | be navigated with the arrow keys (like Gtk+, Mac and W32). |
| 1123 | |
| 1124 | *** The menu bar for Motif/LessTif/Lucid/Gtk+ can be navigated with keys. |
| 1125 | Pressing F10 shows the first menu in the menu bar. Navigation is done with |
| 1126 | the arrow keys, select with the return key and cancel with the escape keys. |
| 1127 | |
| 1128 | *** The Lucid menus can display multilingual text in your locale. You have |
| 1129 | to explicitly specify a fontSet resource for this to work, for example |
| 1130 | `-xrm "Emacs*fontSet: -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*"'. |
| 1131 | |
| 1132 | *** Dialogs for Lucid/Athena and LessTif/Motif now pop down on pressing |
| 1133 | ESC, like they do for Gtk+, Mac and W32. |
| 1134 | |
| 1135 | *** For the Gtk+ version, you can make Emacs use the old file dialog |
| 1136 | by setting the variable `x-gtk-use-old-file-dialog' to t. Default is to use |
| 1137 | the new dialog. |
| 1138 | |
| 1139 | *** You can exit dialog windows and menus by typing C-g. |
| 1140 | |
| 1141 | ** Buffer Menu changes: |
| 1142 | |
| 1143 | *** The new options `buffers-menu-show-directories' and |
| 1144 | `buffers-menu-show-status' let you control how buffers are displayed |
| 1145 | in the menu dropped down when you click "Buffers" from the menu bar. |
| 1146 | |
| 1147 | `buffers-menu-show-directories' controls whether the menu displays |
| 1148 | leading directories as part of the file name visited by the buffer. |
| 1149 | If its value is `unless-uniquify', the default, directories are |
| 1150 | shown unless uniquify-buffer-name-style' is non-nil. The value of nil |
| 1151 | and t turn the display of directories off and on, respectively. |
| 1152 | |
| 1153 | `buffers-menu-show-status' controls whether the Buffers menu includes |
| 1154 | the modified and read-only status of the buffers. By default it is |
| 1155 | t, and the status is shown. |
| 1156 | |
| 1157 | Setting these variables directly does not take effect until next time |
| 1158 | the Buffers menu is regenerated. |
| 1159 | |
| 1160 | *** New command `Buffer-menu-toggle-files-only' toggles display of file |
| 1161 | buffers only in the Buffer Menu. It is bound to T in Buffer Menu |
| 1162 | mode. |
| 1163 | |
| 1164 | *** `buffer-menu' and `list-buffers' now list buffers whose names begin |
| 1165 | with a space, when those buffers are visiting files. Normally buffers |
| 1166 | whose names begin with space are omitted. |
| 1167 | |
| 1168 | ** Mouse changes: |
| 1169 | |
| 1170 | *** You can now follow links by clicking Mouse-1 on the link. |
| 1171 | |
| 1172 | Traditionally, Emacs uses a Mouse-1 click to set point and a Mouse-2 |
| 1173 | click to follow a link, whereas most other applications use a Mouse-1 |
| 1174 | click for both purposes, depending on whether you click outside or |
| 1175 | inside a link. Now the behavior of a Mouse-1 click has been changed |
| 1176 | to match this context-sensitive dual behavior. (If you prefer the old |
| 1177 | behavior, set the user option `mouse-1-click-follows-link' to nil.) |
| 1178 | |
| 1179 | Depending on the current mode, a Mouse-2 click in Emacs can do much |
| 1180 | more than just follow a link, so the new Mouse-1 behavior is only |
| 1181 | activated for modes which explicitly mark a clickable text as a "link" |
| 1182 | (see the new function `mouse-on-link-p' for details). The Lisp |
| 1183 | packages that are included in release 22.1 have been adapted to do |
| 1184 | this, but external packages may not yet support this. However, there |
| 1185 | is no risk in using such packages, as the worst thing that could |
| 1186 | happen is that you get the original Mouse-1 behavior when you click |
| 1187 | on a link, which typically means that you set point where you click. |
| 1188 | |
| 1189 | If you want to get the original Mouse-1 action also inside a link, you |
| 1190 | just need to press the Mouse-1 button a little longer than a normal |
| 1191 | click (i.e. press and hold the Mouse-1 button for half a second before |
| 1192 | you release it). |
| 1193 | |
| 1194 | Dragging the Mouse-1 inside a link still performs the original |
| 1195 | drag-mouse-1 action, typically copy the text. |
| 1196 | |
| 1197 | You can customize the new Mouse-1 behavior via the new user options |
| 1198 | `mouse-1-click-follows-link' and `mouse-1-click-in-non-selected-windows'. |
| 1199 | |
| 1200 | *** If you set the new variable `mouse-autoselect-window' to a non-nil |
| 1201 | value, windows are automatically selected as you move the mouse from |
| 1202 | one Emacs window to another, even within a frame. A minibuffer window |
| 1203 | can be selected only when it is active. |
| 1204 | |
| 1205 | *** On X, when the window manager requires that you click on a frame to |
| 1206 | select it (give it focus), the selected window and cursor position |
| 1207 | normally changes according to the mouse click position. If you set |
| 1208 | the variable x-mouse-click-focus-ignore-position to t, the selected |
| 1209 | window and cursor position do not change when you click on a frame |
| 1210 | to give it focus. |
| 1211 | |
| 1212 | *** Emacs normally highlights mouse sensitive text whenever the mouse |
| 1213 | is over the text. By setting the new variable `mouse-highlight', you |
| 1214 | can optionally enable mouse highlighting only after you move the |
| 1215 | mouse, so that highlighting disappears when you press a key. You can |
| 1216 | also disable mouse highlighting. |
| 1217 | |
| 1218 | *** You can now customize if selecting a region by dragging the mouse |
| 1219 | shall not copy the selected text to the kill-ring by setting the new |
| 1220 | variable mouse-drag-copy-region to nil. |
| 1221 | |
| 1222 | *** Under X, mouse-wheel-mode is turned on by default. |
| 1223 | |
| 1224 | *** Emacs ignores mouse-2 clicks while the mouse wheel is being moved. |
| 1225 | |
| 1226 | People tend to push the mouse wheel (which counts as a mouse-2 click) |
| 1227 | unintentionally while turning the wheel, so these clicks are now |
| 1228 | ignored. You can customize this with the mouse-wheel-click-event and |
| 1229 | mouse-wheel-inhibit-click-time variables. |
| 1230 | |
| 1231 | *** mouse-wheels can now scroll a specific fraction of the window |
| 1232 | (rather than a fixed number of lines) and the scrolling is `progressive'. |
| 1233 | |
| 1234 | ** Multilingual Environment (Mule) changes: |
| 1235 | |
| 1236 | *** You can disable character translation for a file using the -*- |
| 1237 | construct. Include `enable-character-translation: nil' inside the |
| 1238 | -*-...-*- to disable any character translation that may happen by |
| 1239 | various global and per-coding-system translation tables. You can also |
| 1240 | specify it in a local variable list at the end of the file. For |
| 1241 | shortcut, instead of using this long variable name, you can append the |
| 1242 | character "!" at the end of coding-system name specified in -*- |
| 1243 | construct or in a local variable list. For example, if a file has the |
| 1244 | following header, it is decoded by the coding system `iso-latin-1' |
| 1245 | without any character translation: |
| 1246 | ;; -*- coding: iso-latin-1!; -*- |
| 1247 | |
| 1248 | *** Language environment and various default coding systems are setup |
| 1249 | more correctly according to the current locale name. If the locale |
| 1250 | name doesn't specify a charset, the default is what glibc defines. |
| 1251 | This change can result in using the different coding systems as |
| 1252 | default in some locale (e.g. vi_VN). |
| 1253 | |
| 1254 | *** The keyboard-coding-system is now automatically set based on your |
| 1255 | current locale settings if you are not using a window system. This |
| 1256 | can mean that the META key doesn't work but generates non-ASCII |
| 1257 | characters instead, depending on how the terminal (or terminal |
| 1258 | emulator) works. Use `set-keyboard-coding-system' (or customize |
| 1259 | keyboard-coding-system) if you prefer META to work (the old default) |
| 1260 | or if the locale doesn't describe the character set actually generated |
| 1261 | by the keyboard. See Info node `Unibyte Mode'. |
| 1262 | |
| 1263 | *** The new command `set-file-name-coding-system' (C-x RET F) sets |
| 1264 | coding system for encoding and decoding file names. A new menu item |
| 1265 | (Options->Mule->Set Coding Systems->For File Name) invokes this |
| 1266 | command. |
| 1267 | |
| 1268 | *** The new command `revert-buffer-with-coding-system' (C-x RET r) |
| 1269 | revisits the current file using a coding system that you specify. |
| 1270 | |
| 1271 | *** New command `recode-region' decodes the region again by a specified |
| 1272 | coding system. |
| 1273 | |
| 1274 | *** The new command `recode-file-name' changes the encoding of the name |
| 1275 | of a file. |
| 1276 | |
| 1277 | *** New command `ucs-insert' inserts a character specified by its |
| 1278 | Unicode code point or character name. |
| 1279 | |
| 1280 | *** New command quail-show-key shows what key (or key sequence) to type |
| 1281 | in the current input method to input a character at point. |
| 1282 | |
| 1283 | *** Limited support for character `unification' has been added. |
| 1284 | Emacs now knows how to translate between different representations of |
| 1285 | the same characters in various Emacs charsets according to standard |
| 1286 | Unicode mappings. This applies mainly to characters in the ISO 8859 |
| 1287 | sets plus some other 8-bit sets, but can be extended. For instance, |
| 1288 | translation works amongst the Emacs ...-iso8859-... charsets and the |
| 1289 | mule-unicode-... ones. |
| 1290 | |
| 1291 | By default this translation happens automatically on encoding. |
| 1292 | Self-inserting characters are translated to make the input conformant |
| 1293 | with the encoding of the buffer in which it's being used, where |
| 1294 | possible. |
| 1295 | |
| 1296 | You can force a more complete unification with the user option |
| 1297 | unify-8859-on-decoding-mode. That maps all the Latin-N character sets |
| 1298 | into Unicode characters (from the latin-iso8859-1 and |
| 1299 | mule-unicode-0100-24ff charsets) on decoding. Note that this mode |
| 1300 | will often effectively clobber data with an iso-2022 encoding. |
| 1301 | |
| 1302 | *** New language environments (set up automatically according to the |
| 1303 | locale): Belarusian, Bulgarian, Chinese-EUC-TW, Croatian, Esperanto, |
| 1304 | French, Georgian, Italian, Latin-7, Latvian, Lithuanian, Malayalam, |
| 1305 | Russian, Russian, Slovenian, Swedish, Tajik, Tamil, UTF-8,Ukrainian, |
| 1306 | Welsh,Latin-6, Windows-1255. |
| 1307 | |
| 1308 | *** New input methods: latin-alt-postfix, latin-postfix, latin-prefix, |
| 1309 | belarusian, bulgarian-bds, bulgarian-phonetic, chinese-sisheng (for |
| 1310 | Chinese Pinyin characters), croatian, dutch, georgian, latvian-keyboard, |
| 1311 | lithuanian-numeric, lithuanian-keyboard, malayalam-inscript, rfc1345, |
| 1312 | russian-computer, sgml, slovenian, tamil-inscript, ukrainian-computer, |
| 1313 | ucs, vietnamese-telex, welsh. |
| 1314 | |
| 1315 | *** There is support for decoding Greek and Cyrillic characters into |
| 1316 | either Unicode (the mule-unicode charsets) or the iso-8859 charsets, |
| 1317 | when possible. The latter are more space-efficient. |
| 1318 | This is controlled by user option utf-fragment-on-decoding. |
| 1319 | |
| 1320 | *** Improved Thai support. A new minor mode `thai-word-mode' (which is |
| 1321 | automatically activated if you select Thai as a language |
| 1322 | environment) changes key bindings of most word-oriented commands to |
| 1323 | versions which recognize Thai words. Affected commands are |
| 1324 | M-f (forward-word) |
| 1325 | M-b (backward-word) |
| 1326 | M-d (kill-word) |
| 1327 | M-DEL (backward-kill-word) |
| 1328 | M-t (transpose-words) |
| 1329 | M-q (fill-paragraph) |
| 1330 | |
| 1331 | *** Indian support has been updated. |
| 1332 | The in-is13194 coding system is now Unicode-based. CDAC fonts are |
| 1333 | assumed. There is a framework for supporting various Indian scripts, |
| 1334 | but currently only Devanagari, Malayalam and Tamil are supported. |
| 1335 | |
| 1336 | *** The utf-8/16 coding systems have been enhanced. |
| 1337 | By default, untranslatable utf-8 sequences are simply composed into |
| 1338 | single quasi-characters. User option `utf-translate-cjk-mode' (it is |
| 1339 | turned on by default) arranges to translate many utf-8 CJK character |
| 1340 | sequences into real Emacs characters in a similar way to the Mule-UCS |
| 1341 | system. As this loads a fairly big data on demand, people who are not |
| 1342 | interested in CJK characters may want to customize it to nil. |
| 1343 | You can augment/amend the CJK translation via hash tables |
| 1344 | `ucs-mule-cjk-to-unicode' and `ucs-unicode-to-mule-cjk'. The utf-8 |
| 1345 | coding system now also encodes characters from most of Emacs's |
| 1346 | one-dimensional internal charsets, specifically the ISO-8859 ones. |
| 1347 | The utf-16 coding system is affected similarly. |
| 1348 | |
| 1349 | *** A UTF-7 coding system is available in the library `utf-7'. |
| 1350 | |
| 1351 | *** A new coding system `euc-tw' has been added for traditional Chinese |
| 1352 | in CNS encoding; it accepts both Big 5 and CNS as input; on saving, |
| 1353 | Big 5 is then converted to CNS. |
| 1354 | |
| 1355 | *** Many new coding systems are available in the `code-pages' library. |
| 1356 | These include complete versions of most of those in codepage.el, based |
| 1357 | on Unicode mappings. `codepage-setup' is now obsolete and is used |
| 1358 | only in the MS-DOS port of Emacs. All coding systems defined in |
| 1359 | `code-pages' are auto-loaded. |
| 1360 | |
| 1361 | *** New variable `utf-translate-cjk-unicode-range' controls which |
| 1362 | Unicode characters to translate in `utf-translate-cjk-mode'. |
| 1363 | |
| 1364 | *** iso-10646-1 (`Unicode') fonts can be used to display any range of |
| 1365 | characters encodable by the utf-8 coding system. Just specify the |
| 1366 | fontset appropriately. |
| 1367 | |
| 1368 | ** Customize changes: |
| 1369 | |
| 1370 | *** Custom themes are collections of customize options. Create a |
| 1371 | custom theme with M-x customize-create-theme. Use M-x load-theme to |
| 1372 | load and enable a theme, and M-x disable-theme to disable it. Use M-x |
| 1373 | enable-theme to enable a disabled theme. |
| 1374 | |
| 1375 | *** The commands M-x customize-face and M-x customize-face-other-window |
| 1376 | now look at the character after point. If a face or faces are |
| 1377 | specified for that character, the commands by default customize those |
| 1378 | faces. |
| 1379 | |
| 1380 | *** The face-customization widget has been reworked to be less confusing. |
| 1381 | In particular, when you enable a face attribute using the corresponding |
| 1382 | check-box, there's no longer a redundant `*' option in value selection |
| 1383 | for that attribute; the values you can choose are only those which make |
| 1384 | sense for the attribute. When an attribute is de-selected by unchecking |
| 1385 | its check-box, then the (now ignored, but still present temporarily in |
| 1386 | case you re-select the attribute) value is hidden. |
| 1387 | |
| 1388 | *** When you set or reset a variable's value in a Customize buffer, |
| 1389 | the previous value becomes the "backup value" of the variable. |
| 1390 | You can go back to that backup value by selecting "Use Backup Value" |
| 1391 | under the "[State]" button. |
| 1392 | |
| 1393 | ** Dired mode: |
| 1394 | |
| 1395 | *** In Dired's ! command (dired-do-shell-command), `*' and `?' now |
| 1396 | control substitution of the file names only when they are surrounded |
| 1397 | by whitespace. This means you can now use them as shell wildcards |
| 1398 | too. If you want to use just plain `*' as a wildcard, type `*""'; the |
| 1399 | double quotes make no difference in the shell, but they prevent |
| 1400 | special treatment in `dired-do-shell-command'. |
| 1401 | |
| 1402 | *** The Dired command `dired-goto-file' is now bound to j, not M-g. |
| 1403 | This is to avoid hiding the global key binding of M-g. |
| 1404 | |
| 1405 | *** New faces dired-header, dired-mark, dired-marked, dired-flagged, |
| 1406 | dired-ignored, dired-directory, dired-symlink, dired-warning |
| 1407 | introduced for Dired mode instead of font-lock faces. |
| 1408 | |
| 1409 | *** New Dired command `dired-compare-directories' marks files |
| 1410 | with different file attributes in two dired buffers. |
| 1411 | |
| 1412 | *** New Dired command `dired-do-touch' (bound to T) changes timestamps |
| 1413 | of marked files with the value entered in the minibuffer. |
| 1414 | |
| 1415 | *** In Dired, the w command now stores the current line's file name |
| 1416 | into the kill ring. With a zero prefix arg, it stores the absolute file name. |
| 1417 | |
| 1418 | *** In Dired-x, Omitting files is now a minor mode, dired-omit-mode. |
| 1419 | |
| 1420 | The mode toggling command is bound to M-o. A new command |
| 1421 | dired-mark-omitted, bound to * O, marks omitted files. The variable |
| 1422 | dired-omit-files-p is obsoleted, use the mode toggling function |
| 1423 | instead. |
| 1424 | |
| 1425 | *** The variables dired-free-space-program and dired-free-space-args |
| 1426 | have been renamed to directory-free-space-program and |
| 1427 | directory-free-space-args, and they now apply whenever Emacs puts a |
| 1428 | directory listing into a buffer. |
| 1429 | |
| 1430 | ** Comint changes: |
| 1431 | |
| 1432 | *** The new INSIDE_EMACS environment variable is set to "t" in subshells |
| 1433 | running inside Emacs. This supersedes the EMACS environment variable, |
| 1434 | which will be removed in a future Emacs release. Programs that need |
| 1435 | to know whether they are started inside Emacs should check INSIDE_EMACS |
| 1436 | instead of EMACS. |
| 1437 | |
| 1438 | *** The comint prompt can now be made read-only, using the new user |
| 1439 | option `comint-prompt-read-only'. This is not enabled by default, |
| 1440 | except in IELM buffers. The read-only status of IELM prompts can be |
| 1441 | controlled with the new user option `ielm-prompt-read-only', which |
| 1442 | overrides `comint-prompt-read-only'. |
| 1443 | |
| 1444 | The new commands `comint-kill-whole-line' and `comint-kill-region' |
| 1445 | support editing comint buffers with read-only prompts. |
| 1446 | |
| 1447 | `comint-kill-whole-line' is like `kill-whole-line', but ignores both |
| 1448 | read-only and field properties. Hence, it always kill entire |
| 1449 | lines, including any prompts. |
| 1450 | |
| 1451 | `comint-kill-region' is like `kill-region', except that it ignores |
| 1452 | read-only properties, if it is safe to do so. This means that if any |
| 1453 | part of a prompt is deleted, then the entire prompt must be deleted |
| 1454 | and that all prompts must stay at the beginning of a line. If this is |
| 1455 | not the case, then `comint-kill-region' behaves just like |
| 1456 | `kill-region' if read-only properties are involved: it copies the text |
| 1457 | to the kill-ring, but does not delete it. |
| 1458 | |
| 1459 | *** The new command `comint-insert-previous-argument' in comint-derived |
| 1460 | modes (shell-mode, etc.) inserts arguments from previous command lines, |
| 1461 | like bash's `ESC .' binding. It is bound by default to `C-c .', but |
| 1462 | otherwise behaves quite similarly to the bash version. |
| 1463 | |
| 1464 | *** `comint-use-prompt-regexp-instead-of-fields' has been renamed |
| 1465 | `comint-use-prompt-regexp'. The old name has been kept as an alias, |
| 1466 | but declared obsolete. |
| 1467 | |
| 1468 | ** M-x Compile changes: |
| 1469 | |
| 1470 | *** M-x compile has become more robust and reliable |
| 1471 | |
| 1472 | Quite a few more kinds of messages are recognized. Messages that are |
| 1473 | recognized as warnings or informational come in orange or green, instead of |
| 1474 | red. Informational messages are by default skipped with `next-error' |
| 1475 | (controlled by `compilation-skip-threshold'). |
| 1476 | |
| 1477 | Location data is collected on the fly as the *compilation* buffer changes. |
| 1478 | This means you could modify messages to make them point to different files. |
| 1479 | This also means you can not go to locations of messages you may have deleted. |
| 1480 | |
| 1481 | The variable `compilation-error-regexp-alist' has now become customizable. If |
| 1482 | you had added your own regexps to this, you'll probably need to include a |
| 1483 | leading `^', otherwise they'll match anywhere on a line. There is now also a |
| 1484 | `compilation-mode-font-lock-keywords' and it nicely handles all the checks |
| 1485 | that configure outputs and -o options so you see at a glance where you are. |
| 1486 | |
| 1487 | The new file etc/compilation.txt gives examples of each type of message. |
| 1488 | |
| 1489 | *** New user option `compilation-environment'. |
| 1490 | This option allows you to specify environment variables for inferior |
| 1491 | compilation processes without affecting the environment that all |
| 1492 | subprocesses inherit. |
| 1493 | |
| 1494 | *** New user option `compilation-disable-input'. |
| 1495 | If this is non-nil, send end-of-file as compilation process input. |
| 1496 | |
| 1497 | *** New options `next-error-highlight' and `next-error-highlight-no-select' |
| 1498 | specify the method of highlighting of the corresponding source line |
| 1499 | in new face `next-error'. |
| 1500 | |
| 1501 | *** A new minor mode `next-error-follow-minor-mode' can be used in |
| 1502 | compilation-mode, grep-mode, occur-mode, and diff-mode (i.e. all the |
| 1503 | modes that can use `next-error'). In this mode, cursor motion in the |
| 1504 | buffer causes automatic display in another window of the corresponding |
| 1505 | matches, compilation errors, etc. This minor mode can be toggled with |
| 1506 | C-c C-f. |
| 1507 | |
| 1508 | *** When the left fringe is displayed, an arrow points to current message in |
| 1509 | the compilation buffer. |
| 1510 | |
| 1511 | *** The new variable `compilation-context-lines' controls lines of leading |
| 1512 | context before the current message. If nil and the left fringe is displayed, |
| 1513 | it doesn't scroll the compilation output window. If there is no left fringe, |
| 1514 | no arrow is displayed and a value of nil means display the message at the top |
| 1515 | of the window. |
| 1516 | |
| 1517 | ** Occur mode changes: |
| 1518 | |
| 1519 | *** The new command `multi-occur' is just like `occur', except it can |
| 1520 | search multiple buffers. There is also a new command |
| 1521 | `multi-occur-in-matching-buffers' which allows you to specify the |
| 1522 | buffers to search by their filenames or buffer names. Internally, |
| 1523 | Occur mode has been rewritten, and now uses font-lock, among other |
| 1524 | changes. |
| 1525 | |
| 1526 | *** You can now use next-error (C-x `) and previous-error to advance to |
| 1527 | the next/previous matching line found by M-x occur. |
| 1528 | |
| 1529 | *** In the *Occur* buffer, `o' switches to it in another window, and |
| 1530 | C-o displays the current line's occurrence in another window without |
| 1531 | switching to it. |
| 1532 | |
| 1533 | ** Grep changes: |
| 1534 | |
| 1535 | *** Grep has been decoupled from compilation mode setup. |
| 1536 | |
| 1537 | There's a new separate package grep.el, with its own submenu and |
| 1538 | customization group. |
| 1539 | |
| 1540 | *** `grep-find' is now also available under the name `find-grep' where |
| 1541 | people knowing `find-grep-dired' would probably expect it. |
| 1542 | |
| 1543 | *** New commands `lgrep' (local grep) and `rgrep' (recursive grep) are |
| 1544 | more user-friendly versions of `grep' and `grep-find', which prompt |
| 1545 | separately for the regular expression to match, the files to search, |
| 1546 | and the base directory for the search. Case sensitivity of the |
| 1547 | search is controlled by the current value of `case-fold-search'. |
| 1548 | |
| 1549 | These commands build the shell commands based on the new variables |
| 1550 | `grep-template' (lgrep) and `grep-find-template' (rgrep). |
| 1551 | |
| 1552 | The files to search can use aliases defined in `grep-files-aliases'. |
| 1553 | |
| 1554 | Subdirectories listed in `grep-find-ignored-directories' such as those |
| 1555 | typically used by various version control systems, like CVS and arch, |
| 1556 | are automatically skipped by `rgrep'. |
| 1557 | |
| 1558 | *** The grep commands provide highlighting support. |
| 1559 | |
| 1560 | Hits are fontified in green, and hits in binary files in orange. Grep buffers |
| 1561 | can be saved and automatically revisited. |
| 1562 | |
| 1563 | *** New option `grep-highlight-matches' highlights matches in *grep* |
| 1564 | buffer. It uses a special feature of some grep programs which accept |
| 1565 | --color option to output markers around matches. When going to the next |
| 1566 | match with `next-error' the exact match is highlighted in the source |
| 1567 | buffer. Otherwise, if `grep-highlight-matches' is nil, the whole |
| 1568 | source line is highlighted. |
| 1569 | |
| 1570 | *** New key bindings in grep output window: |
| 1571 | SPC and DEL scrolls window up and down. C-n and C-p moves to next and |
| 1572 | previous match in the grep window. RET jumps to the source line of |
| 1573 | the current match. `n' and `p' shows next and previous match in |
| 1574 | other window, but does not switch buffer. `{' and `}' jumps to the |
| 1575 | previous or next file in the grep output. TAB also jumps to the next |
| 1576 | file. |
| 1577 | |
| 1578 | *** M-x grep now tries to avoid appending `/dev/null' to the command line |
| 1579 | by using GNU grep `-H' option instead. M-x grep automatically |
| 1580 | detects whether this is possible or not the first time it is invoked. |
| 1581 | When `-H' is used, the grep command line supplied by the user is passed |
| 1582 | unchanged to the system to execute, which allows more complicated |
| 1583 | command lines to be used than was possible before. |
| 1584 | |
| 1585 | *** The new variables `grep-window-height' and `grep-scroll-output' override |
| 1586 | the corresponding compilation mode settings, for grep commands only. |
| 1587 | |
| 1588 | ** Cursor display changes: |
| 1589 | |
| 1590 | *** Emacs can produce an underscore-like (horizontal bar) cursor. |
| 1591 | The underscore cursor is set by putting `(cursor-type . hbar)' in |
| 1592 | default-frame-alist. It supports variable heights, like the `bar' |
| 1593 | cursor does. |
| 1594 | |
| 1595 | *** The variable `cursor-in-non-selected-windows' can now be set to any |
| 1596 | of the recognized cursor types. |
| 1597 | |
| 1598 | *** Display of hollow cursors now obeys the buffer-local value (if any) |
| 1599 | of `cursor-in-non-selected-windows' in the buffer that the cursor |
| 1600 | appears in. |
| 1601 | |
| 1602 | *** On text terminals, the variable `visible-cursor' controls whether Emacs |
| 1603 | uses the "very visible" cursor (the default) or the normal cursor. |
| 1604 | |
| 1605 | *** The X resource cursorBlink can be used to turn off cursor blinking. |
| 1606 | |
| 1607 | *** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is |
| 1608 | now controlled by the variable `blink-cursor-alist'. |
| 1609 | |
| 1610 | ** X Windows Support: |
| 1611 | |
| 1612 | *** Emacs now supports drag and drop for X. Dropping a file on a window |
| 1613 | opens it, dropping text inserts the text. Dropping a file on a dired |
| 1614 | buffer copies or moves the file to that directory. |
| 1615 | |
| 1616 | *** Under X11, it is possible to swap Alt and Meta (and Super and Hyper). |
| 1617 | The new variables `x-alt-keysym', `x-hyper-keysym', `x-meta-keysym', |
| 1618 | and `x-super-keysym' can be used to choose which keysyms Emacs should |
| 1619 | use for the modifiers. For example, the following two lines swap |
| 1620 | Meta and Alt: |
| 1621 | (setq x-alt-keysym 'meta) |
| 1622 | (setq x-meta-keysym 'alt) |
| 1623 | |
| 1624 | *** The X resource useXIM can be used to turn off use of XIM, which can |
| 1625 | speed up Emacs with slow networking to the X server. |
| 1626 | |
| 1627 | If the configure option `--without-xim' was used to turn off use of |
| 1628 | XIM by default, the X resource useXIM can be used to turn it on. |
| 1629 | |
| 1630 | *** The new variable `x-select-request-type' controls how Emacs |
| 1631 | requests X selection. The default value is nil, which means that |
| 1632 | Emacs requests X selection with types COMPOUND_TEXT and UTF8_STRING, |
| 1633 | and use the more appropriately result. |
| 1634 | |
| 1635 | *** The scrollbar under LessTif or Motif has a smoother drag-scrolling. |
| 1636 | On the other hand, the size of the thumb does not represent the actual |
| 1637 | amount of text shown any more (only a crude approximation of it). |
| 1638 | |
| 1639 | ** Xterm support: |
| 1640 | |
| 1641 | *** If you enable Xterm Mouse mode, Emacs will respond to mouse clicks |
| 1642 | on the mode line, header line and display margin, when run in an xterm. |
| 1643 | |
| 1644 | *** Improved key bindings support when running in an xterm. |
| 1645 | When Emacs is running in an xterm more key bindings are available. |
| 1646 | The following should work: |
| 1647 | {C,S,C-S,A}-{right,left,up,down,prior,next,delete,insert,F1-12}. |
| 1648 | These key bindings work on xterm from X.org 6.8 (and later versions), |
| 1649 | they might not work on some older versions of xterm, or on some |
| 1650 | proprietary versions. |
| 1651 | The various keys generated by xterm when the "modifyOtherKeys" |
| 1652 | resource is set are also supported. |
| 1653 | |
| 1654 | ** Character terminal color support changes: |
| 1655 | |
| 1656 | *** The new command-line option --color=MODE lets you specify a standard |
| 1657 | mode for a tty color support. It is meant to be used on character |
| 1658 | terminals whose capabilities are not set correctly in the terminal |
| 1659 | database, or with terminal emulators which support colors, but don't |
| 1660 | set the TERM environment variable to a name of a color-capable |
| 1661 | terminal. "emacs --color" uses the same color commands as GNU `ls' |
| 1662 | when invoked with "ls --color", so if your terminal can support colors |
| 1663 | in "ls --color", it will support "emacs --color" as well. See the |
| 1664 | user manual for the possible values of the MODE parameter. |
| 1665 | |
| 1666 | *** Emacs now supports several character terminals which provide more |
| 1667 | than 8 colors. For example, for `xterm', 16-color, 88-color, and |
| 1668 | 256-color modes are supported. Emacs automatically notes at startup |
| 1669 | the extended number of colors, and defines the appropriate entries for |
| 1670 | all of these colors. |
| 1671 | |
| 1672 | *** Emacs now uses the full range of available colors for the default |
| 1673 | faces when running on a color terminal, including 16-, 88-, and |
| 1674 | 256-color xterms. This means that when you run "emacs -nw" on an |
| 1675 | 88-color or 256-color xterm, you will see essentially the same face |
| 1676 | colors as on X. |
| 1677 | |
| 1678 | *** There's a new support for colors on `rxvt' terminal emulator. |
| 1679 | |
| 1680 | ** ebnf2ps changes: |
| 1681 | |
| 1682 | *** New option `ebnf-arrow-extra-width' which specify extra width for arrow |
| 1683 | shape drawing. |
| 1684 | The extra width is used to avoid that the arrowhead and the terminal border |
| 1685 | overlap. It depends on `ebnf-arrow-shape' and `ebnf-line-width'. |
| 1686 | |
| 1687 | *** New option `ebnf-arrow-scale' which specify the arrow scale. |
| 1688 | Values lower than 1.0, shrink the arrow. |
| 1689 | Values greater than 1.0, expand the arrow. |
| 1690 | \f |
| 1691 | * New Modes and Packages in Emacs 22.1 |
| 1692 | |
| 1693 | ** CUA mode is now part of the Emacs distribution. |
| 1694 | |
| 1695 | The new cua package provides CUA-like keybindings using C-x for |
| 1696 | cut (kill), C-c for copy, C-v for paste (yank), and C-z for undo. |
| 1697 | With cua, the region can be set and extended using shifted movement |
| 1698 | keys (like pc-selection-mode) and typed text replaces the active |
| 1699 | region (like delete-selection-mode). Do not enable these modes with |
| 1700 | cua-mode. Customize the variable `cua-mode' to enable cua. |
| 1701 | |
| 1702 | The cua-selection-mode enables the CUA keybindings for the region but |
| 1703 | does not change the bindings for C-z/C-x/C-c/C-v. It can be used as a |
| 1704 | replacement for pc-selection-mode. |
| 1705 | |
| 1706 | In addition, cua provides unified rectangle support with visible |
| 1707 | rectangle highlighting: Use C-return to start a rectangle, extend it |
| 1708 | using the movement commands (or mouse-3), and cut or copy it using C-x |
| 1709 | or C-c (using C-w and M-w also works). |
| 1710 | |
| 1711 | Use M-o and M-c to `open' or `close' the rectangle, use M-b or M-f, to |
| 1712 | fill it with blanks or another character, use M-u or M-l to upcase or |
| 1713 | downcase the rectangle, use M-i to increment the numbers in the |
| 1714 | rectangle, use M-n to fill the rectangle with a numeric sequence (such |
| 1715 | as 10 20 30...), use M-r to replace a regexp in the rectangle, and use |
| 1716 | M-' or M-/ to restrict command on the rectangle to a subset of the |
| 1717 | rows. See the commentary in cua-base.el for more rectangle commands. |
| 1718 | |
| 1719 | Cua also provides unified support for registers: Use a numeric |
| 1720 | prefix argument between 0 and 9, i.e. M-0 .. M-9, for C-x, C-c, and |
| 1721 | C-v to cut or copy into register 0-9, or paste from register 0-9. |
| 1722 | |
| 1723 | The last text deleted (not killed) is automatically stored in |
| 1724 | register 0. This includes text deleted by typing text. |
| 1725 | |
| 1726 | Finally, cua provides a global mark which is set using S-C-space. |
| 1727 | When the global mark is active, any text which is cut or copied is |
| 1728 | automatically inserted at the global mark position. See the |
| 1729 | commentary in cua-base.el for more global mark related commands. |
| 1730 | |
| 1731 | The features of cua also works with the standard Emacs bindings for |
| 1732 | kill, copy, yank, and undo. If you want to use cua mode, but don't |
| 1733 | want the C-x, C-c, C-v, and C-z bindings, you can customize the |
| 1734 | `cua-enable-cua-keys' variable. |
| 1735 | |
| 1736 | Note: This version of cua mode is not backwards compatible with older |
| 1737 | versions of cua.el and cua-mode.el. To ensure proper operation, you |
| 1738 | must remove older versions of cua.el or cua-mode.el as well as the |
| 1739 | loading and customization of those packages from the .emacs file. |
| 1740 | |
| 1741 | ** Tramp is now part of the distribution. |
| 1742 | |
| 1743 | This package is similar to Ange-FTP: it allows you to edit remote |
| 1744 | files. But whereas Ange-FTP uses FTP to access the remote host, |
| 1745 | Tramp uses a shell connection. The shell connection is always used |
| 1746 | for filename completion and directory listings and suchlike, but for |
| 1747 | the actual file transfer, you can choose between the so-called |
| 1748 | `inline' methods (which transfer the files through the shell |
| 1749 | connection using base64 or uu encoding) and the `out-of-band' methods |
| 1750 | (which invoke an external copying program such as `rcp' or `scp' or |
| 1751 | `rsync' to do the copying). |
| 1752 | |
| 1753 | Shell connections can be acquired via `rsh', `ssh', `telnet' and also |
| 1754 | `su' and `sudo'. Ange-FTP is still supported via the `ftp' method. |
| 1755 | |
| 1756 | If you want to disable Tramp you should set |
| 1757 | |
| 1758 | (setq tramp-default-method "ftp") |
| 1759 | |
| 1760 | Removing Tramp, and re-enabling Ange-FTP, can be achieved by M-x |
| 1761 | tramp-unload-tramp. |
| 1762 | |
| 1763 | ** The image-dired.el package allows you to easily view, tag and in |
| 1764 | other ways manipulate image files and their thumbnails, using dired as |
| 1765 | the main interface. Image-Dired provides functionality to generate |
| 1766 | simple image galleries. |
| 1767 | |
| 1768 | ** Image files are normally visited in Image mode, which lets you toggle |
| 1769 | between viewing the image and viewing the text using C-c C-c. |
| 1770 | |
| 1771 | ** The new python.el package is used to edit Python and Jython programs. |
| 1772 | |
| 1773 | ** The URL package (which had been part of W3) is now part of Emacs. |
| 1774 | |
| 1775 | ** Calc is now part of the Emacs distribution. |
| 1776 | |
| 1777 | Calc is an advanced desk calculator and mathematical tool written in |
| 1778 | Emacs Lisp. The prefix for Calc has been changed to `C-x *' and Calc |
| 1779 | can be started with `C-x * *'. The Calc manual is separate from the |
| 1780 | Emacs manual; within Emacs, type "C-h i m calc RET" to read the |
| 1781 | manual. A reference card is available in `etc/calccard.tex' and |
| 1782 | `etc/calccard.ps'. |
| 1783 | |
| 1784 | ** Org mode is now part of the Emacs distribution |
| 1785 | |
| 1786 | Org mode is a mode for keeping notes, maintaining ToDo lists, and |
| 1787 | doing project planning with a fast and effective plain-text system. |
| 1788 | It also contains a plain-text table editor with spreadsheet-like |
| 1789 | capabilities. |
| 1790 | |
| 1791 | The Org mode table editor can be integrated into any major mode by |
| 1792 | activating the minor mode, Orgtbl mode. |
| 1793 | |
| 1794 | The documentation for org-mode is in a separate manual; within Emacs, |
| 1795 | type "C-h i m org RET" to read that manual. A reference card is |
| 1796 | available in `etc/orgcard.tex' and `etc/orgcard.ps'. |
| 1797 | |
| 1798 | ** ERC is now part of the Emacs distribution. |
| 1799 | |
| 1800 | ERC is a powerful, modular, and extensible IRC client for Emacs. |
| 1801 | |
| 1802 | To see what modules are available, type |
| 1803 | M-x customize-option erc-modules RET. |
| 1804 | |
| 1805 | To start an IRC session with ERC, type M-x erc, and follow the prompts |
| 1806 | for server, port, and nick. |
| 1807 | |
| 1808 | ** Rcirc is now part of the Emacs distribution. |
| 1809 | |
| 1810 | Rcirc is an Internet relay chat (IRC) client. It supports |
| 1811 | simultaneous connections to multiple IRC servers. Each discussion |
| 1812 | takes place in its own buffer. For each connection you can join |
| 1813 | several channels (many-to-many) and participate in private |
| 1814 | (one-to-one) chats. Both channel and private chats are contained in |
| 1815 | separate buffers. |
| 1816 | |
| 1817 | To start an IRC session using the default parameters, type M-x irc. |
| 1818 | If you type C-u M-x irc, it prompts you for the server, nick, port and |
| 1819 | startup channel parameters before connecting. |
| 1820 | |
| 1821 | ** The new package ibuffer provides a powerful, completely |
| 1822 | customizable replacement for buff-menu.el. |
| 1823 | |
| 1824 | ** Newsticker is now part of the Emacs distribution. |
| 1825 | |
| 1826 | Newsticker asynchronously retrieves headlines (RSS) from a list of news |
| 1827 | sites, prepares these headlines for reading, and allows for loading the |
| 1828 | corresponding articles in a web browser. Its documentation is in a |
| 1829 | separate manual. |
| 1830 | |
| 1831 | ** The wdired.el package allows you to use normal editing commands on Dired |
| 1832 | buffers to change filenames, permissions, etc... |
| 1833 | |
| 1834 | ** Ido mode is now part of the Emacs distribution. |
| 1835 | |
| 1836 | The ido (interactively do) package is an extension of the iswitchb |
| 1837 | package to do interactive opening of files and directories in addition |
| 1838 | to interactive buffer switching. Ido is a superset of iswitchb (with |
| 1839 | a few exceptions), so don't enable both packages. |
| 1840 | |
| 1841 | ** The new global minor mode `file-name-shadow-mode' modifies the way |
| 1842 | filenames being entered by the user in the minibuffer are displayed, so |
| 1843 | that it's clear when part of the entered filename will be ignored due to |
| 1844 | Emacs' filename parsing rules. The ignored portion can be made dim, |
| 1845 | invisible, or otherwise less visually noticeable. The display method can |
| 1846 | be displayed by customizing the variable `file-name-shadow-properties'. |
| 1847 | |
| 1848 | ** Emacs' keyboard macro facilities have been enhanced by the new |
| 1849 | kmacro package. |
| 1850 | |
| 1851 | Keyboard macros are now defined and executed via the F3 and F4 keys: |
| 1852 | F3 starts a macro, F4 ends the macro, and pressing F4 again executes |
| 1853 | the last macro. While defining the macro, F3 inserts a counter value |
| 1854 | which automatically increments every time the macro is executed. |
| 1855 | |
| 1856 | There is now a keyboard macro ring which stores the most recently |
| 1857 | defined macros. |
| 1858 | |
| 1859 | The C-x C-k sequence is now a prefix for the kmacro keymap which |
| 1860 | defines bindings for moving through the keyboard macro ring, |
| 1861 | C-x C-k C-p and C-x C-k C-n, editing the last macro C-x C-k C-e, |
| 1862 | manipulating the macro counter and format via C-x C-k C-c, |
| 1863 | C-x C-k C-a, and C-x C-k C-f. See the commentary in kmacro.el |
| 1864 | for more commands. |
| 1865 | |
| 1866 | The original macro bindings C-x (, C-x ), and C-x e are still |
| 1867 | available, but they now interface to the keyboard macro ring too. |
| 1868 | |
| 1869 | The C-x e command now automatically terminates the current macro |
| 1870 | before calling it, if used while defining a macro. |
| 1871 | |
| 1872 | In addition, when ending or calling a macro with C-x e, the macro can |
| 1873 | be repeated immediately by typing just the `e'. You can customize |
| 1874 | this behavior via the variables kmacro-call-repeat-key and |
| 1875 | kmacro-call-repeat-with-arg. |
| 1876 | |
| 1877 | Keyboard macros can now be debugged and edited interactively. |
| 1878 | C-x C-k SPC steps through the last keyboard macro one key sequence |
| 1879 | at a time, prompting for the actions to take. |
| 1880 | |
| 1881 | ** The new keypad setup package provides several common bindings for |
| 1882 | the numeric keypad which is available on most keyboards. The numeric |
| 1883 | keypad typically has the digits 0 to 9, a decimal point, keys marked |
| 1884 | +, -, /, and *, an Enter key, and a NumLock toggle key. The keypad |
| 1885 | package only controls the use of the digit and decimal keys. |
| 1886 | |
| 1887 | By customizing the variables `keypad-setup', `keypad-shifted-setup', |
| 1888 | `keypad-numlock-setup', and `keypad-numlock-shifted-setup', or by |
| 1889 | using the function `keypad-setup', you can rebind all digit keys and |
| 1890 | the decimal key of the keypad in one step for each of the four |
| 1891 | possible combinations of the Shift key state (not pressed/pressed) and |
| 1892 | the NumLock toggle state (off/on). |
| 1893 | |
| 1894 | The choices for the keypad keys in each of the above states are: |
| 1895 | `Plain numeric keypad' where the keys generates plain digits, |
| 1896 | `Numeric keypad with decimal key' where the character produced by the |
| 1897 | decimal key can be customized individually (for internationalization), |
| 1898 | `Numeric Prefix Arg' where the keypad keys produce numeric prefix args |
| 1899 | for Emacs editing commands, `Cursor keys' and `Shifted Cursor keys' |
| 1900 | where the keys work like (shifted) arrow keys, home/end, etc., and |
| 1901 | `Unspecified/User-defined' where the keypad keys (kp-0, kp-1, etc.) |
| 1902 | are left unspecified and can be bound individually through the global |
| 1903 | or local keymaps. |
| 1904 | |
| 1905 | ** The printing package is now part of the Emacs distribution. |
| 1906 | |
| 1907 | If you enable the printing package by including (require 'printing) in |
| 1908 | the .emacs file, the normal Print item on the File menu is replaced |
| 1909 | with a Print sub-menu which allows you to preview output through |
| 1910 | ghostview, use ghostscript to print (if you don't have a PostScript |
| 1911 | printer) or send directly to printer a PostScript code generated by |
| 1912 | `ps-print' package. Use M-x pr-help for more information. |
| 1913 | |
| 1914 | ** The new package longlines.el provides a minor mode for editing text |
| 1915 | files composed of long lines, based on the `use-hard-newlines' |
| 1916 | mechanism. The long lines are broken up by inserting soft newlines, |
| 1917 | which are automatically removed when saving the file to disk or |
| 1918 | copying into the kill ring, clipboard, etc. By default, Longlines |
| 1919 | mode inserts soft newlines automatically during editing, a behavior |
| 1920 | referred to as "soft word wrap" in other text editors. This is |
| 1921 | similar to Refill mode, but more reliable. To turn the word wrap |
| 1922 | feature off, set `longlines-auto-wrap' to nil. |
| 1923 | |
| 1924 | ** SES mode (ses-mode) is a new major mode for creating and editing |
| 1925 | spreadsheet files. Besides the usual Emacs features (intuitive command |
| 1926 | letters, undo, cell formulas in Lisp, plaintext files, etc.) it also offers |
| 1927 | viral immunity and import/export of tab-separated values. |
| 1928 | |
| 1929 | ** The new package table.el implements editable, WYSIWYG, embedded |
| 1930 | `text tables' in Emacs buffers. It simulates the effect of putting |
| 1931 | these tables in a special major mode. The package emulates WYSIWYG |
| 1932 | table editing available in modern word processors. The package also |
| 1933 | can generate a table source in typesetting and markup languages such |
| 1934 | as latex and html from the visually laid out text table. |
| 1935 | |
| 1936 | ** Filesets are collections of files. You can define a fileset in |
| 1937 | various ways, such as based on a directory tree or based on |
| 1938 | program files that include other program files. |
| 1939 | |
| 1940 | Once you have defined a fileset, you can perform various operations on |
| 1941 | all the files in it, such as visiting them or searching and replacing |
| 1942 | in them. |
| 1943 | |
| 1944 | ** The minor mode Reveal mode makes text visible on the fly as you |
| 1945 | move your cursor into hidden regions of the buffer. |
| 1946 | It should work with any package that uses overlays to hide parts |
| 1947 | of a buffer, such as outline-minor-mode, hs-minor-mode, hide-ifdef-mode, ... |
| 1948 | |
| 1949 | There is also Global Reveal mode which affects all buffers. |
| 1950 | |
| 1951 | ** New minor mode, Visible mode, toggles invisibility in the current buffer. |
| 1952 | When enabled, it makes all invisible text visible. When disabled, it |
| 1953 | restores the previous value of `buffer-invisibility-spec'. |
| 1954 | |
| 1955 | ** The new package flymake.el does on-the-fly syntax checking of program |
| 1956 | source files. See the Flymake's Info manual for more details. |
| 1957 | |
| 1958 | ** savehist saves minibuffer histories between sessions. |
| 1959 | To use this feature, turn on savehist-mode in your `.emacs' file. |
| 1960 | |
| 1961 | ** The ruler-mode.el library provides a minor mode for displaying an |
| 1962 | "active" ruler in the header line. You can use the mouse to visually |
| 1963 | change the `fill-column', `window-margins' and `tab-stop-list' |
| 1964 | settings. |
| 1965 | |
| 1966 | ** The file t-mouse.el is now part of Emacs and provides access to mouse |
| 1967 | events from the console. It still requires gpm to work but has been updated |
| 1968 | for Emacs 22. In particular, the mode-line is now position sensitive. |
| 1969 | |
| 1970 | ** The new package scroll-lock.el provides the Scroll Lock minor mode |
| 1971 | for pager-like scrolling. Keys which normally move point by line or |
| 1972 | paragraph will scroll the buffer by the respective amount of lines |
| 1973 | instead and point will be kept vertically fixed relative to window |
| 1974 | boundaries during scrolling. |
| 1975 | |
| 1976 | ** The new global minor mode `size-indication-mode' (off by default) |
| 1977 | shows the size of accessible part of the buffer on the mode line. |
| 1978 | |
| 1979 | ** The new package conf-mode.el handles thousands of configuration files, with |
| 1980 | varying syntaxes for comments (;, #, //, /* */ or !), assignment (var = value, |
| 1981 | var : value, var value or keyword var value) and sections ([section] or |
| 1982 | section { }). Many files under /etc/, or with suffixes like .cf through |
| 1983 | .config, .properties (Java), .desktop (KDE/Gnome), .ini and many others are |
| 1984 | recognized. |
| 1985 | |
| 1986 | ** GDB-Script-mode is used for files like .gdbinit. |
| 1987 | |
| 1988 | ** The new package dns-mode.el adds syntax highlighting of DNS master files. |
| 1989 | It is a modern replacement for zone-mode.el, which is now obsolete. |
| 1990 | |
| 1991 | ** `cfengine-mode' is a major mode for editing GNU Cfengine |
| 1992 | configuration files. |
| 1993 | |
| 1994 | ** The TCL package tcl-mode.el was replaced by tcl.el. |
| 1995 | This was actually done in Emacs-21.1, and was not documented. |
| 1996 | \f |
| 1997 | * Changes in Specialized Modes and Packages in Emacs 22.1: |
| 1998 | |
| 1999 | ** Changes in Dired |
| 2000 | |
| 2001 | *** Bindings for Image-Dired added. |
| 2002 | Several new keybindings, all starting with the C-t prefix, have been |
| 2003 | added to Dired. They are all bound to commands in Image-Dired. As a |
| 2004 | starting point, mark some image files in a dired buffer and do C-t d |
| 2005 | to display thumbnails of them in a separate buffer. |
| 2006 | |
| 2007 | ** Info mode changes |
| 2008 | |
| 2009 | *** Images in Info pages are supported. |
| 2010 | |
| 2011 | Info pages show embedded images, in Emacs frames with image support. |
| 2012 | Info documentation that includes images, processed with makeinfo |
| 2013 | version 4.7 or newer, compiles to Info pages with embedded images. |
| 2014 | |
| 2015 | *** `Info-index' offers completion. |
| 2016 | |
| 2017 | *** http and ftp links in Info are now operational: they look like cross |
| 2018 | references and following them calls `browse-url'. |
| 2019 | |
| 2020 | *** isearch in Info uses Info-search and searches through multiple nodes. |
| 2021 | |
| 2022 | Before leaving the initial Info node isearch fails once with the error |
| 2023 | message [initial node], and with subsequent C-s/C-r continues through |
| 2024 | other nodes. When isearch fails for the rest of the manual, it wraps |
| 2025 | around the whole manual to the top/final node. The user option |
| 2026 | `Info-isearch-search' controls whether to use Info-search for isearch, |
| 2027 | or the default isearch search function that wraps around the current |
| 2028 | Info node. |
| 2029 | |
| 2030 | *** New search commands: `Info-search-case-sensitively' (bound to S), |
| 2031 | `Info-search-backward', and `Info-search-next' which repeats the last |
| 2032 | search without prompting for a new search string. |
| 2033 | |
| 2034 | *** New command `info-apropos' searches the indices of the known |
| 2035 | Info files on your system for a string, and builds a menu of the |
| 2036 | possible matches. |
| 2037 | |
| 2038 | *** New command `Info-history-forward' (bound to r and new toolbar icon) |
| 2039 | moves forward in history to the node you returned from after using |
| 2040 | `Info-history-back' (renamed from `Info-last'). |
| 2041 | |
| 2042 | *** New command `Info-history' (bound to L) displays a menu of visited nodes. |
| 2043 | |
| 2044 | *** New command `Info-toc' (bound to T) creates a node with table of contents |
| 2045 | from the tree structure of menus of the current Info file. |
| 2046 | |
| 2047 | *** New command `Info-copy-current-node-name' (bound to w) copies |
| 2048 | the current Info node name into the kill ring. With a zero prefix |
| 2049 | arg, puts the node name inside the `info' function call. |
| 2050 | |
| 2051 | *** New face `info-xref-visited' distinguishes visited nodes from unvisited |
| 2052 | and a new option `Info-fontify-visited-nodes' to control this. |
| 2053 | |
| 2054 | *** A numeric prefix argument of `info' selects an Info buffer |
| 2055 | with the number appended to the `*info*' buffer name (e.g. "*info*<2>"). |
| 2056 | |
| 2057 | *** Info now hides node names in menus and cross references by default. |
| 2058 | |
| 2059 | If you prefer the old behavior, you can set the new user option |
| 2060 | `Info-hide-note-references' to nil. |
| 2061 | |
| 2062 | *** The default value for `Info-scroll-prefer-subnodes' is now nil. |
| 2063 | |
| 2064 | ** Emacs server changes |
| 2065 | |
| 2066 | *** You can have several Emacs servers on the same machine. |
| 2067 | |
| 2068 | % emacs --eval '(setq server-name "foo")' -f server-start & |
| 2069 | % emacs --eval '(setq server-name "bar")' -f server-start & |
| 2070 | % emacsclient -s foo file1 |
| 2071 | % emacsclient -s bar file2 |
| 2072 | |
| 2073 | *** The `emacsclient' command understands the options `--eval' and |
| 2074 | `--display' which tell Emacs respectively to evaluate the given Lisp |
| 2075 | expression and to use the given display when visiting files. |
| 2076 | |
| 2077 | *** User option `server-mode' can be used to start a server process. |
| 2078 | |
| 2079 | ** Locate changes |
| 2080 | |
| 2081 | *** By default, reverting the *Locate* buffer now just runs the last |
| 2082 | `locate' command back over again without offering to update the locate |
| 2083 | database (which normally only works if you have root privileges). If |
| 2084 | you prefer the old behavior, set the new customizable option |
| 2085 | `locate-update-when-revert' to t. |
| 2086 | |
| 2087 | ** Desktop package |
| 2088 | |
| 2089 | *** Desktop saving is now a minor mode, `desktop-save-mode'. |
| 2090 | |
| 2091 | *** The variable `desktop-enable' is obsolete. |
| 2092 | |
| 2093 | Customize `desktop-save-mode' to enable desktop saving. |
| 2094 | |
| 2095 | *** Buffers are saved in the desktop file in the same order as that in the |
| 2096 | buffer list. |
| 2097 | |
| 2098 | *** The desktop package can be customized to restore only some buffers |
| 2099 | immediately, remaining buffers are restored lazily (when Emacs is |
| 2100 | idle). |
| 2101 | |
| 2102 | *** New command line option --no-desktop |
| 2103 | |
| 2104 | *** New commands: |
| 2105 | - desktop-revert reverts to the last loaded desktop. |
| 2106 | - desktop-change-dir kills current desktop and loads a new. |
| 2107 | - desktop-save-in-desktop-dir saves desktop in the directory from which |
| 2108 | it was loaded. |
| 2109 | - desktop-lazy-complete runs the desktop load to completion. |
| 2110 | - desktop-lazy-abort aborts lazy loading of the desktop. |
| 2111 | |
| 2112 | *** New customizable variables: |
| 2113 | - desktop-save. Determines whether the desktop should be saved when it is |
| 2114 | killed. |
| 2115 | - desktop-file-name-format. Format in which desktop file names should be saved. |
| 2116 | - desktop-path. List of directories in which to lookup the desktop file. |
| 2117 | - desktop-locals-to-save. List of local variables to save. |
| 2118 | - desktop-globals-to-clear. List of global variables that `desktop-clear' will clear. |
| 2119 | - desktop-clear-preserve-buffers-regexp. Regexp identifying buffers that `desktop-clear' |
| 2120 | should not delete. |
| 2121 | - desktop-restore-eager. Number of buffers to restore immediately. Remaining buffers are |
| 2122 | restored lazily (when Emacs is idle). |
| 2123 | - desktop-lazy-verbose. Verbose reporting of lazily created buffers. |
| 2124 | - desktop-lazy-idle-delay. Idle delay before starting to create buffers. |
| 2125 | |
| 2126 | *** New hooks: |
| 2127 | - desktop-after-read-hook run after a desktop is loaded. |
| 2128 | - desktop-no-desktop-file-hook run when no desktop file is found. |
| 2129 | |
| 2130 | ** Recentf changes |
| 2131 | |
| 2132 | The recent file list is now automatically cleaned up when recentf mode is |
| 2133 | enabled. The new option `recentf-auto-cleanup' controls when to do |
| 2134 | automatic cleanup. |
| 2135 | |
| 2136 | The ten most recent files can be quickly opened by using the shortcut |
| 2137 | keys 1 to 9, and 0, when the recent list is displayed in a buffer via |
| 2138 | the `recentf-open-files', or `recentf-open-more-files' commands. |
| 2139 | |
| 2140 | The `recentf-keep' option replaces `recentf-keep-non-readable-files-p' |
| 2141 | and provides a more general mechanism to customize which file names to |
| 2142 | keep in the recent list. |
| 2143 | |
| 2144 | With the more advanced option `recentf-filename-handlers', you can |
| 2145 | specify functions that successively transform recent file names. For |
| 2146 | example, if set to `file-truename' plus `abbreviate-file-name', the |
| 2147 | same file will not be in the recent list with different symbolic |
| 2148 | links, and the file name will be abbreviated. |
| 2149 | |
| 2150 | To follow naming convention, `recentf-menu-append-commands-flag' |
| 2151 | replaces the misnamed option `recentf-menu-append-commands-p'. The |
| 2152 | old name remains available as alias, but has been marked obsolete. |
| 2153 | |
| 2154 | ** Auto-Revert changes |
| 2155 | |
| 2156 | *** You can now use Auto Revert mode to `tail' a file. |
| 2157 | |
| 2158 | If point is at the end of a file buffer before reverting, Auto Revert |
| 2159 | mode keeps it at the end after reverting. Similarly if point is |
| 2160 | displayed at the end of a file buffer in any window, it stays at the end |
| 2161 | of the buffer in that window. This allows you to "tail" a file: just |
| 2162 | put point at the end of the buffer and it stays there. This rule |
| 2163 | applies to file buffers. For non-file buffers, the behavior can be mode |
| 2164 | dependent. |
| 2165 | |
| 2166 | If you are sure that the file will only change by growing at the end, |
| 2167 | then you can tail the file more efficiently by using the new minor |
| 2168 | mode Auto Revert Tail mode. The function `auto-revert-tail-mode' |
| 2169 | toggles this mode. |
| 2170 | |
| 2171 | *** Auto Revert mode is now more careful to avoid excessive reverts and |
| 2172 | other potential problems when deciding which non-file buffers to |
| 2173 | revert. This matters especially if Global Auto Revert mode is enabled |
| 2174 | and `global-auto-revert-non-file-buffers' is non-nil. Auto Revert |
| 2175 | mode only reverts a non-file buffer if the buffer has a non-nil |
| 2176 | `revert-buffer-function' and a non-nil `buffer-stale-function', which |
| 2177 | decides whether the buffer should be reverted. Currently, this means |
| 2178 | that auto reverting works for Dired buffers (although this may not |
| 2179 | work properly on all operating systems) and for the Buffer Menu. |
| 2180 | |
| 2181 | *** If the new user option `auto-revert-check-vc-info' is non-nil, Auto |
| 2182 | Revert mode reliably updates version control info (such as the version |
| 2183 | control number in the mode line), in all version controlled buffers in |
| 2184 | which it is active. If the option is nil, the default, then this info |
| 2185 | only gets updated whenever the buffer gets reverted. |
| 2186 | |
| 2187 | ** Changes in Shell Mode |
| 2188 | |
| 2189 | *** Shell output normally scrolls so that the input line is at the |
| 2190 | bottom of the window -- thus showing the maximum possible text. (This |
| 2191 | is similar to the way sequential output to a terminal works.) |
| 2192 | |
| 2193 | ** Changes in Hi Lock |
| 2194 | |
| 2195 | *** hi-lock-mode now only affects a single buffer, and a new function |
| 2196 | `global-hi-lock-mode' enables Hi Lock in all buffers. By default, if |
| 2197 | hi-lock-mode is used in what appears to be the initialization file, a |
| 2198 | warning message suggests to use global-hi-lock-mode instead. However, |
| 2199 | if the new variable `hi-lock-archaic-interface-deduce' is non-nil, |
| 2200 | using hi-lock-mode in an initialization file will turn on Hi Lock in all |
| 2201 | buffers and no warning will be issued (for compatibility with the |
| 2202 | behavior in older versions of Emacs). |
| 2203 | |
| 2204 | ** Changes in Allout |
| 2205 | |
| 2206 | *** Topic cryptography added, enabling easy gpg topic encryption and |
| 2207 | decryption. Per-topic basis enables interspersing encrypted-text and |
| 2208 | clear-text within a single file to your heart's content, using symmetric |
| 2209 | and/or public key modes. Time-limited key caching, user-provided |
| 2210 | symmetric key hinting and consistency verification, auto-encryption of |
| 2211 | pending topics on save, and more, make it easy to use encryption in |
| 2212 | powerful ways. Encryption behavior customization is collected in the |
| 2213 | allout-encryption customization group. |
| 2214 | |
| 2215 | *** Default command prefix was changed to "\C-c " (control-c space), to |
| 2216 | avoid intruding on user's keybinding space. Customize the |
| 2217 | `allout-command-prefix' variable to your preference. |
| 2218 | |
| 2219 | *** Some previously rough topic-header format edge cases are reconciled. |
| 2220 | Level 1 topics use the mode's comment format, and lines starting with the |
| 2221 | asterisk - for instance, the comment close of some languages (eg, c's "*/" |
| 2222 | or mathematica's "*)") - at the beginning of line are no longer are |
| 2223 | interpreted as level 1 topics in those modes. |
| 2224 | |
| 2225 | *** Many or most commonly occurring "accidental" topics are disqualified. |
| 2226 | Text in item bodies that looks like a low-depth topic is no longer mistaken |
| 2227 | for one unless its first offspring (or that of its next sibling with |
| 2228 | offspring) is only one level deeper. |
| 2229 | |
| 2230 | For example, pasting some text with a bunch of leading asterisks into a |
| 2231 | topic that's followed by a level 3 or deeper topic will not cause the |
| 2232 | pasted text to be mistaken for outline structure. |
| 2233 | |
| 2234 | The same constraint is applied to any level 2 or 3 topics. |
| 2235 | |
| 2236 | This settles an old issue where typed or pasted text needed to be carefully |
| 2237 | reviewed, and sometimes doctored, to avoid accidentally disrupting the |
| 2238 | outline structure. Now that should be generally unnecessary, as the most |
| 2239 | prone-to-occur accidents are disqualified. |
| 2240 | |
| 2241 | *** Allout now refuses to create "containment discontinuities", where a |
| 2242 | topic is shifted deeper than the offspring-depth of its container. On the |
| 2243 | other hand, allout now operates gracefully with existing containment |
| 2244 | discontinuities, revealing excessively contained topics rather than either |
| 2245 | leaving them hidden or raising an error. |
| 2246 | |
| 2247 | *** Navigation within an item is easier. Repeated beginning-of-line and |
| 2248 | end-of-line key commands (usually, ^A and ^E) cycle through the |
| 2249 | beginning/end-of-line and then beginning/end of topic, etc. See new |
| 2250 | customization vars `allout-beginning-of-line-cycles' and |
| 2251 | `allout-end-of-line-cycles'. |
| 2252 | |
| 2253 | *** New or revised allout-mode activity hooks enable creation of |
| 2254 | cooperative enhancements to allout mode without changes to the mode, |
| 2255 | itself. |
| 2256 | |
| 2257 | See `allout-exposure-change-hook', `allout-structure-added-hook', |
| 2258 | `allout-structure-deleted-hook', and `allout-structure-shifted-hook'. |
| 2259 | |
| 2260 | `allout-exposure-change-hook' replaces the existing |
| 2261 | `allout-view-change-hook', which is being deprecated. Both are still |
| 2262 | invoked, but `allout-view-change-hook' will eventually be ignored. |
| 2263 | `allout-exposure-change-hook' is called with explicit arguments detailing |
| 2264 | the specifics of each change (as are the other new hooks), making it easier |
| 2265 | to use than the old version. |
| 2266 | |
| 2267 | There is a new mode deactivation hook, `allout-mode-deactivate-hook', for |
| 2268 | coordinating with deactivation of allout-mode. Both that and the mode |
| 2269 | activation hook, `allout-mode-hook' are now run after the `allout-mode' |
| 2270 | variable is changed, rather than before. |
| 2271 | |
| 2272 | *** Allout now uses text overlay's `invisible' property for concealed text, |
| 2273 | instead of selective-display. This simplifies the code, in particular |
| 2274 | avoiding the need for kludges for isearch dynamic-display, discretionary |
| 2275 | handling of edits of concealed text, undo concerns, etc. |
| 2276 | |
| 2277 | *** There are many other fixes and refinements, including: |
| 2278 | |
| 2279 | - repaired inhibition of inadvertent edits to concealed text, without |
| 2280 | inhibiting undo; we now reveal undo changes within concealed text. |
| 2281 | - auto-fill-mode is now left inactive when allout-mode starts, if it |
| 2282 | already was inactive. also, `allout-inhibit-auto-fill' custom |
| 2283 | configuration variable makes it easy to disable auto fill in allout |
| 2284 | outlines in general or on a per-buffer basis. |
| 2285 | - allout now tolerates fielded text in outlines without disruption. |
| 2286 | - hot-spot navigation now is modularized with a new function, |
| 2287 | `allout-hotspot-key-handler', enabling easier use and enhancement of |
| 2288 | the functionality in allout addons. |
| 2289 | - repaired retention of topic body hanging indent upon topic depth shifts |
| 2290 | - bulleting variation is simpler and more accommodating, both in the |
| 2291 | default behavior and in ability to vary when creating new topics |
| 2292 | - mode deactivation now does cleans up effectively, more properly |
| 2293 | restoring affected variables and hooks to former state, removing |
| 2294 | overlays, etc. see `allout-add-resumptions' and |
| 2295 | `allout-do-resumptions', which replace the old `allout-resumptions'. |
| 2296 | - included a few unit-tests for interior functionality. developers can |
| 2297 | have them automatically run at the end of module load by customizing |
| 2298 | the option `allout-run-unit-tests-on-load'. |
| 2299 | - many, many other, more minor tweaks, fixes, and refinements. |
| 2300 | - version number incremented to 2.2 |
| 2301 | |
| 2302 | ** Hideshow mode changes |
| 2303 | |
| 2304 | *** New variable `hs-set-up-overlay' allows customization of the overlay |
| 2305 | used to effect hiding for hideshow minor mode. Integration with isearch |
| 2306 | handles the overlay property `display' specially, preserving it during |
| 2307 | temporary overlay showing in the course of an isearch operation. |
| 2308 | |
| 2309 | *** New variable `hs-allow-nesting' non-nil means that hiding a block does |
| 2310 | not discard the hidden state of any "internal" blocks; when the parent |
| 2311 | block is later shown, the internal blocks remain hidden. Default is nil. |
| 2312 | |
| 2313 | ** FFAP changes |
| 2314 | |
| 2315 | *** New ffap commands and keybindings: |
| 2316 | |
| 2317 | C-x C-r (`ffap-read-only'), |
| 2318 | C-x C-v (`ffap-alternate-file'), C-x C-d (`ffap-list-directory'), |
| 2319 | C-x 4 r (`ffap-read-only-other-window'), C-x 4 d (`ffap-dired-other-window'), |
| 2320 | C-x 5 r (`ffap-read-only-other-frame'), C-x 5 d (`ffap-dired-other-frame'). |
| 2321 | |
| 2322 | *** FFAP accepts wildcards in a file name by default. |
| 2323 | |
| 2324 | C-x C-f passes the file name to `find-file' with non-nil WILDCARDS |
| 2325 | argument, which visits multiple files, and C-x d passes it to `dired'. |
| 2326 | |
| 2327 | ** Changes in Skeleton |
| 2328 | |
| 2329 | *** In skeleton.el, `-' marks the `skeleton-point' without interregion interaction. |
| 2330 | |
| 2331 | `@' has reverted to only setting `skeleton-positions' and no longer |
| 2332 | sets `skeleton-point'. Skeletons which used @ to mark |
| 2333 | `skeleton-point' independent of `_' should now use `-' instead. The |
| 2334 | updated `skeleton-insert' docstring explains these new features along |
| 2335 | with other details of skeleton construction. |
| 2336 | |
| 2337 | *** The variables `skeleton-transformation', `skeleton-filter', and |
| 2338 | `skeleton-pair-filter' have been renamed to |
| 2339 | `skeleton-transformation-function', `skeleton-filter-function', and |
| 2340 | `skeleton-pair-filter-function'. The old names are still available |
| 2341 | as aliases. |
| 2342 | |
| 2343 | ** HTML/SGML changes |
| 2344 | |
| 2345 | *** Emacs now tries to set up buffer coding systems for HTML/XML files |
| 2346 | automatically. |
| 2347 | |
| 2348 | *** SGML mode has indentation and supports XML syntax. |
| 2349 | The new variable `sgml-xml-mode' tells SGML mode to use XML syntax. |
| 2350 | When this option is enabled, SGML tags are inserted in XML style, |
| 2351 | i.e., there is always a closing tag. |
| 2352 | By default, its setting is inferred on a buffer-by-buffer basis |
| 2353 | from the file name or buffer contents. |
| 2354 | |
| 2355 | *** The variable `sgml-transformation' has been renamed to |
| 2356 | `sgml-transformation-function'. The old name is still available as |
| 2357 | alias. |
| 2358 | |
| 2359 | *** `xml-mode' is now an alias for `sgml-mode', which has XML support. |
| 2360 | |
| 2361 | ** TeX modes |
| 2362 | |
| 2363 | *** New major mode Doctex mode, for *.dtx files. |
| 2364 | |
| 2365 | *** C-c C-c prompts for a command to run, and tries to offer a good default. |
| 2366 | |
| 2367 | *** The user option `tex-start-options-string' has been replaced |
| 2368 | by two new user options: `tex-start-options', which should hold |
| 2369 | command-line options to feed to TeX, and `tex-start-commands' which should hold |
| 2370 | TeX commands to use at startup. |
| 2371 | |
| 2372 | *** verbatim environments are now highlighted in courier by font-lock |
| 2373 | and super/sub-scripts are made into super/sub-scripts. |
| 2374 | |
| 2375 | ** RefTeX mode changes |
| 2376 | |
| 2377 | *** Changes to RefTeX's table of contents |
| 2378 | |
| 2379 | The new command keys "<" and ">" in the TOC buffer promote/demote the |
| 2380 | section at point or all sections in the current region, with full |
| 2381 | support for multifile documents. |
| 2382 | |
| 2383 | The new command `reftex-toc-recenter' (`C-c -') shows the current |
| 2384 | section in the TOC buffer without selecting the TOC window. |
| 2385 | Recentering can happen automatically in idle time when the option |
| 2386 | `reftex-auto-recenter-toc' is turned on. The highlight in the TOC |
| 2387 | buffer stays when the focus moves to a different window. A dedicated |
| 2388 | frame can show the TOC with the current section always automatically |
| 2389 | highlighted. The frame is created and deleted from the toc buffer |
| 2390 | with the `d' key. |
| 2391 | |
| 2392 | The toc window can be split off horizontally instead of vertically. |
| 2393 | See new option `reftex-toc-split-windows-horizontally'. |
| 2394 | |
| 2395 | Labels can be renamed globally from the table of contents using the |
| 2396 | key `M-%'. |
| 2397 | |
| 2398 | The new command `reftex-goto-label' jumps directly to a label |
| 2399 | location. |
| 2400 | |
| 2401 | *** Changes related to citations and BibTeX database files |
| 2402 | |
| 2403 | Commands that insert a citation now prompt for optional arguments when |
| 2404 | called with a prefix argument. Related new options are |
| 2405 | `reftex-cite-prompt-optional-args' and `reftex-cite-cleanup-optional-args'. |
| 2406 | |
| 2407 | The new command `reftex-create-bibtex-file' creates a BibTeX database |
| 2408 | with all entries referenced in the current document. The keys "e" and |
| 2409 | "E" allow to produce a BibTeX database file from entries marked in a |
| 2410 | citation selection buffer. |
| 2411 | |
| 2412 | The command `reftex-citation' uses the word in the buffer before the |
| 2413 | cursor as a default search string. |
| 2414 | |
| 2415 | The support for chapterbib has been improved. Different chapters can |
| 2416 | now use BibTeX or an explicit `thebibliography' environment. |
| 2417 | |
| 2418 | The macros which specify the bibliography file (like \bibliography) |
| 2419 | can be configured with the new option `reftex-bibliography-commands'. |
| 2420 | |
| 2421 | Support for jurabib has been added. |
| 2422 | |
| 2423 | *** Global index matched may be verified with a user function. |
| 2424 | |
| 2425 | During global indexing, a user function can verify an index match. |
| 2426 | See new option `reftex-index-verify-function'. |
| 2427 | |
| 2428 | *** Parsing documents with many labels can be sped up. |
| 2429 | |
| 2430 | Operating in a document with thousands of labels can be sped up |
| 2431 | considerably by allowing RefTeX to derive the type of a label directly |
| 2432 | from the label prefix like `eq:' or `fig:'. The option |
| 2433 | `reftex-trust-label-prefix' needs to be configured in order to enable |
| 2434 | this feature. While the speed-up is significant, this may reduce the |
| 2435 | quality of the context offered by RefTeX to describe a label. |
| 2436 | |
| 2437 | *** Miscellaneous changes |
| 2438 | |
| 2439 | The macros which input a file in LaTeX (like \input, \include) can be |
| 2440 | configured in the new option `reftex-include-file-commands'. |
| 2441 | |
| 2442 | RefTeX supports global incremental search. |
| 2443 | |
| 2444 | ** BibTeX mode |
| 2445 | |
| 2446 | *** The new command `bibtex-url' browses a URL for the BibTeX entry at |
| 2447 | point (bound to C-c C-l and mouse-2, RET on clickable fields). |
| 2448 | |
| 2449 | *** The new command `bibtex-entry-update' (bound to C-c C-u) updates |
| 2450 | an existing BibTeX entry by inserting fields that may occur but are not |
| 2451 | present. |
| 2452 | |
| 2453 | *** New `bibtex-entry-format' option `required-fields', enabled by default. |
| 2454 | |
| 2455 | *** `bibtex-maintain-sorted-entries' can take values `plain', |
| 2456 | `crossref', and `entry-class' which control the sorting scheme used |
| 2457 | for BibTeX entries. `bibtex-sort-entry-class' controls the sorting |
| 2458 | scheme `entry-class'. TAB completion for reference keys and |
| 2459 | automatic detection of duplicates does not require anymore that |
| 2460 | `bibtex-maintain-sorted-entries' is non-nil. |
| 2461 | |
| 2462 | *** The new command `bibtex-complete' completes word fragment before |
| 2463 | point according to context (bound to M-tab). |
| 2464 | |
| 2465 | *** In BibTeX mode the command `fill-paragraph' (M-q) fills |
| 2466 | individual fields of a BibTeX entry. |
| 2467 | |
| 2468 | *** The new variable `bibtex-autofill-types' contains a list of entry |
| 2469 | types for which fields are filled automatically (if possible). |
| 2470 | |
| 2471 | *** The new commands `bibtex-find-entry' and `bibtex-find-crossref' |
| 2472 | locate entries and crossref'd entries (bound to C-c C-s and C-c C-x). |
| 2473 | Crossref fields are clickable (bound to mouse-2, RET). |
| 2474 | |
| 2475 | *** The new variables `bibtex-files' and `bibtex-file-path' define a set |
| 2476 | of BibTeX files that are searched for entry keys. |
| 2477 | |
| 2478 | *** The new command `bibtex-validate-globally' checks for duplicate keys |
| 2479 | in multiple BibTeX files. |
| 2480 | |
| 2481 | *** If the new variable `bibtex-autoadd-commas' is non-nil, |
| 2482 | automatically add missing commas at end of BibTeX fields. |
| 2483 | |
| 2484 | *** The new command `bibtex-copy-summary-as-kill' pushes summary |
| 2485 | of BibTeX entry to kill ring (bound to C-c C-t). |
| 2486 | |
| 2487 | *** If the new variable `bibtex-parse-keys-fast' is non-nil, |
| 2488 | use fast but simplified algorithm for parsing BibTeX keys. |
| 2489 | |
| 2490 | *** The new variables bibtex-expand-strings and |
| 2491 | bibtex-autokey-expand-strings control the expansion of strings when |
| 2492 | extracting the content of a BibTeX field. |
| 2493 | |
| 2494 | *** The variables `bibtex-autokey-name-case-convert' and |
| 2495 | `bibtex-autokey-titleword-case-convert' have been renamed to |
| 2496 | `bibtex-autokey-name-case-convert-function' and |
| 2497 | `bibtex-autokey-titleword-case-convert-function'. The old names are |
| 2498 | still available as aliases. |
| 2499 | |
| 2500 | ** GUD changes |
| 2501 | |
| 2502 | *** The new package gdb-ui.el provides an enhanced graphical interface to |
| 2503 | GDB. You can interact with GDB through the GUD buffer in the usual way, but |
| 2504 | there are also further buffers which control the execution and describe the |
| 2505 | state of your program. It can separate the input/output of your program from |
| 2506 | that of GDB and watches expressions in the speedbar. It also uses features of |
| 2507 | Emacs 21/22 such as the toolbar, and bitmaps in the fringe to indicate |
| 2508 | breakpoints. |
| 2509 | |
| 2510 | To use this package just type M-x gdb. See the Emacs manual if you want the |
| 2511 | old behavior. |
| 2512 | |
| 2513 | *** GUD mode has its own tool bar for controlling execution of the inferior |
| 2514 | and other common debugger commands. |
| 2515 | |
| 2516 | *** In GUD mode, when talking to GDB, C-x C-a C-j "jumps" the program |
| 2517 | counter to the specified source line (the one where point is). |
| 2518 | |
| 2519 | *** The variable tooltip-gud-tips-p has been removed. GUD tooltips can now be |
| 2520 | toggled independently of normal tooltips with the minor mode |
| 2521 | `gud-tooltip-mode'. |
| 2522 | |
| 2523 | *** In graphical mode, with a C program, GUD Tooltips have been extended to |
| 2524 | display the #define directive associated with an identifier when program is |
| 2525 | not executing. |
| 2526 | |
| 2527 | *** GUD mode improvements for jdb: |
| 2528 | |
| 2529 | **** Search for source files using jdb classpath and class information. |
| 2530 | Fast startup since there is no need to scan all source files up front. |
| 2531 | There is also no need to create and maintain lists of source |
| 2532 | directories to scan. Look at `gud-jdb-use-classpath' and |
| 2533 | `gud-jdb-classpath' customization variables documentation. |
| 2534 | |
| 2535 | **** The previous method of searching for source files has been |
| 2536 | preserved in case someone still wants/needs to use it. |
| 2537 | Set `gud-jdb-use-classpath' to nil. |
| 2538 | |
| 2539 | **** Supports the standard breakpoint (gud-break, gud-clear) |
| 2540 | set/clear operations from Java source files under the classpath, stack |
| 2541 | traversal (gud-up, gud-down), and run until current stack finish |
| 2542 | (gud-finish). |
| 2543 | |
| 2544 | **** Supports new jdb (Java 1.2 and later) in addition to oldjdb |
| 2545 | (Java 1.1 jdb). |
| 2546 | |
| 2547 | *** Added jdb Customization Variables |
| 2548 | |
| 2549 | **** `gud-jdb-command-name'. What command line to use to invoke jdb. |
| 2550 | |
| 2551 | **** `gud-jdb-use-classpath'. Allows selection of java source file searching |
| 2552 | method: set to t for new method, nil to scan `gud-jdb-directories' for |
| 2553 | java sources (previous method). |
| 2554 | |
| 2555 | **** `gud-jdb-directories'. List of directories to scan and search for Java |
| 2556 | classes using the original gud-jdb method (if `gud-jdb-use-classpath' |
| 2557 | is nil). |
| 2558 | |
| 2559 | *** Minor Improvements |
| 2560 | |
| 2561 | **** The STARTTLS wrapper (starttls.el) can now use GnuTLS |
| 2562 | instead of the OpenSSL based `starttls' tool. For backwards |
| 2563 | compatibility, it prefers `starttls', but you can toggle |
| 2564 | `starttls-use-gnutls' to switch to GnuTLS (or simply remove the |
| 2565 | `starttls' tool). |
| 2566 | |
| 2567 | **** Do not allow debugger output history variable to grow without bounds. |
| 2568 | |
| 2569 | ** Lisp mode changes |
| 2570 | |
| 2571 | *** Lisp mode now uses `font-lock-doc-face' for doc strings. |
| 2572 | |
| 2573 | *** C-u C-M-q in Emacs Lisp mode pretty-prints the list after point. |
| 2574 | |
| 2575 | *** New features in evaluation commands |
| 2576 | |
| 2577 | **** The function `eval-defun' (C-M-x) called on defface reinitializes |
| 2578 | the face to the value specified in the defface expression. |
| 2579 | |
| 2580 | **** Typing C-x C-e twice prints the value of the integer result |
| 2581 | in additional formats (octal, hexadecimal, character) specified |
| 2582 | by the new function `eval-expression-print-format'. The same |
| 2583 | function also defines the result format for `eval-expression' (M-:), |
| 2584 | `eval-print-last-sexp' (C-j) and some edebug evaluation functions. |
| 2585 | |
| 2586 | ** Changes to cmuscheme |
| 2587 | |
| 2588 | *** Emacs now offers to start Scheme if the user tries to |
| 2589 | evaluate a Scheme expression but no Scheme subprocess is running. |
| 2590 | |
| 2591 | *** If the file ~/.emacs_NAME or ~/.emacs.d/init_NAME.scm (where NAME |
| 2592 | is the name of the Scheme interpreter) exists, its contents are sent |
| 2593 | to the Scheme subprocess upon startup. |
| 2594 | |
| 2595 | *** There are new commands to instruct the Scheme interpreter to trace |
| 2596 | procedure calls (`scheme-trace-procedure') and to expand syntactic forms |
| 2597 | (`scheme-expand-current-form'). The commands actually sent to the Scheme |
| 2598 | subprocess are controlled by the user options `scheme-trace-command', |
| 2599 | `scheme-untrace-command' and `scheme-expand-current-form'. |
| 2600 | |
| 2601 | ** Ewoc changes |
| 2602 | |
| 2603 | *** The new function `ewoc-delete' deletes specified nodes. |
| 2604 | |
| 2605 | *** `ewoc-create' now takes optional arg NOSEP, which inhibits insertion of |
| 2606 | a newline after each pretty-printed entry and after the header and footer. |
| 2607 | This allows you to create multiple-entry ewocs on a single line and to |
| 2608 | effect "invisible" nodes by arranging for the pretty-printer to not print |
| 2609 | anything for those nodes. |
| 2610 | |
| 2611 | For example, these two sequences of expressions behave identically: |
| 2612 | |
| 2613 | ;; NOSEP nil |
| 2614 | (defun PP (data) (insert (format "%S" data))) |
| 2615 | (ewoc-create 'PP "start\n") |
| 2616 | |
| 2617 | ;; NOSEP t |
| 2618 | (defun PP (data) (insert (format "%S\n" data))) |
| 2619 | (ewoc-create 'PP "start\n\n" "\n" t) |
| 2620 | |
| 2621 | ** CC mode changes |
| 2622 | |
| 2623 | *** The CC Mode manual has been extensively revised. |
| 2624 | The information about using CC Mode has been separated from the larger |
| 2625 | and more difficult chapters about configuration. |
| 2626 | |
| 2627 | *** New Minor Modes |
| 2628 | **** Electric Minor Mode toggles the electric action of non-alphabetic keys. |
| 2629 | The new command c-toggle-electric-mode is bound to C-c C-l. Turning the |
| 2630 | mode off can be helpful for editing chaotically indented code and for |
| 2631 | users new to CC Mode, who sometimes find electric indentation |
| 2632 | disconcerting. Its current state is displayed in the mode line with an |
| 2633 | 'l', e.g. "C/al". |
| 2634 | |
| 2635 | **** Subword Minor Mode makes Emacs recognize word boundaries at upper case |
| 2636 | letters in StudlyCapsIdentifiers. You enable this feature by C-c C-w. It can |
| 2637 | also be used in non-CC Mode buffers. :-) Contributed by Masatake YAMATO. |
| 2638 | |
| 2639 | *** Support for the AWK language. |
| 2640 | Support for the AWK language has been introduced. The implementation is |
| 2641 | based around GNU AWK version 3.1, but it should work pretty well with |
| 2642 | any AWK. As yet, not all features of CC Mode have been adapted for AWK. |
| 2643 | Here is a summary: |
| 2644 | |
| 2645 | **** Indentation Engine |
| 2646 | The CC Mode indentation engine fully supports AWK mode. |
| 2647 | |
| 2648 | AWK mode handles code formatted in the conventional AWK fashion: `{'s |
| 2649 | which start actions, user-defined functions, or compound statements are |
| 2650 | placed on the same line as the associated construct; the matching `}'s |
| 2651 | are normally placed under the start of the respective pattern, function |
| 2652 | definition, or structured statement. |
| 2653 | |
| 2654 | The predefined line-up functions haven't yet been adapted for AWK |
| 2655 | mode, though some of them may work serendipitously. There shouldn't |
| 2656 | be any problems writing custom indentation functions for AWK mode. |
| 2657 | |
| 2658 | **** Font Locking |
| 2659 | There is a single level of font locking in AWK mode, rather than the |
| 2660 | three distinct levels the other modes have. There are several |
| 2661 | idiosyncrasies in AWK mode's font-locking due to the peculiarities of |
| 2662 | the AWK language itself. |
| 2663 | |
| 2664 | **** Comment and Movement Commands |
| 2665 | These commands all work for AWK buffers. The notion of "defun" has |
| 2666 | been augmented to include AWK pattern-action pairs - the standard |
| 2667 | "defun" commands on key sequences C-M-a, C-M-e, and C-M-h use this |
| 2668 | extended definition. |
| 2669 | |
| 2670 | **** "awk" style, Auto-newline Insertion and Clean-ups |
| 2671 | A new style, "awk" has been introduced, and this is now the default |
| 2672 | style for AWK code. With auto-newline enabled, the clean-up |
| 2673 | c-one-liner-defun (see above) is useful. |
| 2674 | |
| 2675 | *** Font lock support. |
| 2676 | CC Mode now provides font lock support for all its languages. This |
| 2677 | supersedes the font lock patterns that have been in the core font lock |
| 2678 | package for C, C++, Java and Objective-C. Like indentation, font |
| 2679 | locking is done in a uniform way across all languages (except the new |
| 2680 | AWK mode - see below). That means that the new font locking will be |
| 2681 | different from the old patterns in various details for most languages. |
| 2682 | |
| 2683 | The main goal of the font locking in CC Mode is accuracy, to provide a |
| 2684 | dependable aid in recognizing the various constructs. Some, like |
| 2685 | strings and comments, are easy to recognize while others like |
| 2686 | declarations and types can be very tricky. CC Mode can go to great |
| 2687 | lengths to recognize declarations and casts correctly, especially when |
| 2688 | the types aren't recognized by standard patterns. This is a fairly |
| 2689 | demanding analysis which can be slow on older hardware, and it can |
| 2690 | therefore be disabled by choosing a lower decoration level with the |
| 2691 | variable font-lock-maximum-decoration. |
| 2692 | |
| 2693 | Note that the most demanding font lock level has been tuned with lazy |
| 2694 | fontification in mind; Just-In-Time-Lock mode should be enabled for |
| 2695 | the highest font lock level (by default, it is). Fontifying a file |
| 2696 | with several thousand lines in one go can take the better part of a |
| 2697 | minute. |
| 2698 | |
| 2699 | **** The (c|c++|objc|java|idl|pike)-font-lock-extra-types variables |
| 2700 | are now used by CC Mode to recognize identifiers that are certain to |
| 2701 | be types. (They are also used in cases that aren't related to font |
| 2702 | locking.) At the maximum decoration level, types are often recognized |
| 2703 | properly anyway, so these variables should be fairly restrictive and |
| 2704 | not contain patterns for uncertain types. |
| 2705 | |
| 2706 | **** Support for documentation comments. |
| 2707 | There is a "plugin" system to fontify documentation comments like |
| 2708 | Javadoc and the markup within them. It's independent of the host |
| 2709 | language, so it's possible to e.g. turn on Javadoc font locking in C |
| 2710 | buffers. See the variable c-doc-comment-style for details. |
| 2711 | |
| 2712 | Currently three kinds of doc comment styles are recognized: Sun's |
| 2713 | Javadoc, Autodoc (which is used in Pike) and GtkDoc (used in C). (The |
| 2714 | last was contributed by Masatake YAMATO). This is by no means a |
| 2715 | complete list of the most common tools; if your doc comment extractor |
| 2716 | of choice is missing then please drop a note to bug-cc-mode@gnu.org. |
| 2717 | |
| 2718 | **** Better handling of C++ templates. |
| 2719 | As a side effect of the more accurate font locking, C++ templates are |
| 2720 | now handled much better. The angle brackets that delimit them are |
| 2721 | given parenthesis syntax so that they can be navigated like other |
| 2722 | parens. |
| 2723 | |
| 2724 | This also improves indentation of templates, although there still is |
| 2725 | work to be done in that area. E.g. it's required that multiline |
| 2726 | template clauses are written in full and then refontified to be |
| 2727 | recognized, and the indentation of nested templates is a bit odd and |
| 2728 | not as configurable as it ought to be. |
| 2729 | |
| 2730 | **** Improved handling of Objective-C and CORBA IDL. |
| 2731 | Especially the support for Objective-C and IDL has gotten an overhaul. |
| 2732 | The special "@" declarations in Objective-C are handled correctly. |
| 2733 | All the keywords used in CORBA IDL, PSDL, and CIDL are recognized and |
| 2734 | handled correctly, also wrt indentation. |
| 2735 | |
| 2736 | *** Changes in Key Sequences |
| 2737 | **** c-toggle-auto-hungry-state is no longer bound to C-c C-t. |
| 2738 | |
| 2739 | **** c-toggle-hungry-state is no longer bound to C-c C-d. |
| 2740 | This binding has been taken over by c-hungry-delete-forwards. |
| 2741 | |
| 2742 | **** c-toggle-auto-state (C-c C-t) has been renamed to c-toggle-auto-newline. |
| 2743 | c-toggle-auto-state remains as an alias. |
| 2744 | |
| 2745 | **** The new commands c-hungry-backspace and c-hungry-delete-forwards |
| 2746 | have key bindings C-c C-DEL (or C-c DEL, for the benefit of TTYs) and |
| 2747 | C-c C-d (or C-c C-<delete> or C-c <delete>) respectively. These |
| 2748 | commands delete entire blocks of whitespace with a single |
| 2749 | key-sequence. [N.B. "DEL" is the <backspace> key.] |
| 2750 | |
| 2751 | **** The new command c-toggle-electric-mode is bound to C-c C-l. |
| 2752 | |
| 2753 | **** The new command c-subword-mode is bound to C-c C-w. |
| 2754 | |
| 2755 | *** C-c C-s (`c-show-syntactic-information') now highlights the anchor |
| 2756 | position(s). |
| 2757 | |
| 2758 | *** New syntactic symbols in IDL mode. |
| 2759 | The top level constructs "module" and "composition" (from CIDL) are |
| 2760 | now handled like "namespace" in C++: They are given syntactic symbols |
| 2761 | module-open, module-close, inmodule, composition-open, |
| 2762 | composition-close, and incomposition. |
| 2763 | |
| 2764 | *** New functions to do hungry delete without enabling hungry delete mode. |
| 2765 | The new functions `c-hungry-backspace' and `c-hungry-delete-forward' |
| 2766 | provide hungry deletion without having to toggle a mode. They are |
| 2767 | bound to C-c C-DEL and C-c C-d (and several variants, for the benefit |
| 2768 | of different keyboard setups. See "Changes in key sequences" above). |
| 2769 | |
| 2770 | *** Better control over `require-final-newline'. |
| 2771 | |
| 2772 | The variable `c-require-final-newline' specifies which of the modes |
| 2773 | implemented by CC mode should insert final newlines. Its value is a |
| 2774 | list of modes, and only those modes should do it. By default the list |
| 2775 | includes C, C++ and Objective-C modes. |
| 2776 | |
| 2777 | Whichever modes are in this list will set `require-final-newline' |
| 2778 | based on `mode-require-final-newline'. |
| 2779 | |
| 2780 | *** Format change for syntactic context elements. |
| 2781 | |
| 2782 | The elements in the syntactic context returned by `c-guess-basic-syntax' |
| 2783 | and stored in `c-syntactic-context' has been changed somewhat to allow |
| 2784 | attaching more information. They are now lists instead of single cons |
| 2785 | cells. E.g. a line that previously had the syntactic analysis |
| 2786 | |
| 2787 | ((inclass . 11) (topmost-intro . 13)) |
| 2788 | |
| 2789 | is now analyzed as |
| 2790 | |
| 2791 | ((inclass 11) (topmost-intro 13)) |
| 2792 | |
| 2793 | In some cases there are more than one position given for a syntactic |
| 2794 | symbol. |
| 2795 | |
| 2796 | This change might affect code that calls `c-guess-basic-syntax' |
| 2797 | directly, and custom lineup functions if they use |
| 2798 | `c-syntactic-context'. However, the argument given to lineup |
| 2799 | functions is still a single cons cell with nil or an integer in the |
| 2800 | cdr. |
| 2801 | |
| 2802 | *** API changes for derived modes. |
| 2803 | |
| 2804 | There have been extensive changes "under the hood" which can affect |
| 2805 | derived mode writers. Some of these changes are likely to cause |
| 2806 | incompatibilities with existing derived modes, but on the other hand |
| 2807 | care has now been taken to make it possible to extend and modify CC |
| 2808 | Mode with less risk of such problems in the future. |
| 2809 | |
| 2810 | **** New language variable system. |
| 2811 | These are variables whose values vary between CC Mode's different |
| 2812 | languages. See the comment blurb near the top of cc-langs.el. |
| 2813 | |
| 2814 | **** New initialization functions. |
| 2815 | The initialization procedure has been split up into more functions to |
| 2816 | give better control: `c-basic-common-init', `c-font-lock-init', and |
| 2817 | `c-init-language-vars'. |
| 2818 | |
| 2819 | *** Changes in analysis of nested syntactic constructs. |
| 2820 | The syntactic analysis engine has better handling of cases where |
| 2821 | several syntactic constructs appear nested on the same line. They are |
| 2822 | now handled as if each construct started on a line of its own. |
| 2823 | |
| 2824 | This means that CC Mode now indents some cases differently, and |
| 2825 | although it's more consistent there might be cases where the old way |
| 2826 | gave results that's more to one's liking. So if you find a situation |
| 2827 | where you think that the indentation has become worse, please report |
| 2828 | it to bug-cc-mode@gnu.org. |
| 2829 | |
| 2830 | **** New syntactic symbol substatement-label. |
| 2831 | This symbol is used when a label is inserted between a statement and |
| 2832 | its substatement. E.g: |
| 2833 | |
| 2834 | if (x) |
| 2835 | x_is_true: |
| 2836 | do_stuff(); |
| 2837 | |
| 2838 | *** Better handling of multiline macros. |
| 2839 | |
| 2840 | **** Syntactic indentation inside macros. |
| 2841 | The contents of multiline #define's are now analyzed and indented |
| 2842 | syntactically just like other code. This can be disabled by the new |
| 2843 | variable `c-syntactic-indentation-in-macros'. A new syntactic symbol |
| 2844 | `cpp-define-intro' has been added to control the initial indentation |
| 2845 | inside `#define's. |
| 2846 | |
| 2847 | **** New lineup function `c-lineup-cpp-define'. |
| 2848 | |
| 2849 | Now used by default to line up macro continuation lines. The behavior |
| 2850 | of this function closely mimics the indentation one gets if the macro |
| 2851 | is indented while the line continuation backslashes are temporarily |
| 2852 | removed. If syntactic indentation in macros is turned off, it works |
| 2853 | much line `c-lineup-dont-change', which was used earlier, but handles |
| 2854 | empty lines within the macro better. |
| 2855 | |
| 2856 | **** Automatically inserted newlines continues the macro if used within one. |
| 2857 | This applies to the newlines inserted by the auto-newline mode, and to |
| 2858 | `c-context-line-break' and `c-context-open-line'. |
| 2859 | |
| 2860 | **** Better alignment of line continuation backslashes. |
| 2861 | `c-backslash-region' tries to adapt to surrounding backslashes. New |
| 2862 | variable `c-backslash-max-column' puts a limit on how far out |
| 2863 | backslashes can be moved. |
| 2864 | |
| 2865 | **** Automatic alignment of line continuation backslashes. |
| 2866 | This is controlled by the new variable `c-auto-align-backslashes'. It |
| 2867 | affects `c-context-line-break', `c-context-open-line' and newlines |
| 2868 | inserted in Auto-Newline mode. |
| 2869 | |
| 2870 | **** Line indentation works better inside macros. |
| 2871 | Regardless whether syntactic indentation and syntactic indentation |
| 2872 | inside macros are enabled or not, line indentation now ignores the |
| 2873 | line continuation backslashes. This is most noticeable when syntactic |
| 2874 | indentation is turned off and there are empty lines (save for the |
| 2875 | backslash) in the macro. |
| 2876 | |
| 2877 | *** indent-for-comment is more customizable. |
| 2878 | The behavior of M-; (indent-for-comment) is now configurable through |
| 2879 | the variable `c-indent-comment-alist'. The indentation behavior is |
| 2880 | based on the preceding code on the line, e.g. to get two spaces after |
| 2881 | #else and #endif but indentation to `comment-column' in most other |
| 2882 | cases (something which was hardcoded earlier). |
| 2883 | |
| 2884 | *** New function `c-context-open-line'. |
| 2885 | It's the open-line equivalent of `c-context-line-break'. |
| 2886 | |
| 2887 | *** New clean-ups |
| 2888 | |
| 2889 | **** `comment-close-slash'. |
| 2890 | With this clean-up, a block (i.e. c-style) comment can be terminated by |
| 2891 | typing a slash at the start of a line. |
| 2892 | |
| 2893 | **** `c-one-liner-defun' |
| 2894 | This clean-up compresses a short enough defun (for example, an AWK |
| 2895 | pattern/action pair) onto a single line. "Short enough" is configurable. |
| 2896 | |
| 2897 | *** New lineup functions |
| 2898 | |
| 2899 | **** `c-lineup-string-cont' |
| 2900 | This lineup function lines up a continued string under the one it |
| 2901 | continues. E.g: |
| 2902 | |
| 2903 | result = prefix + "A message " |
| 2904 | "string."; <- c-lineup-string-cont |
| 2905 | |
| 2906 | **** `c-lineup-cascaded-calls' |
| 2907 | Lines up series of calls separated by "->" or ".". |
| 2908 | |
| 2909 | **** `c-lineup-knr-region-comment' |
| 2910 | Gives (what most people think is) better indentation of comments in |
| 2911 | the "K&R region" between the function header and its body. |
| 2912 | |
| 2913 | **** `c-lineup-gcc-asm-reg' |
| 2914 | Provides better indentation inside asm blocks. |
| 2915 | |
| 2916 | **** `c-lineup-argcont' |
| 2917 | Lines up continued function arguments after the preceding comma. |
| 2918 | |
| 2919 | *** Added toggle for syntactic indentation. |
| 2920 | The function `c-toggle-syntactic-indentation' can be used to toggle |
| 2921 | syntactic indentation. |
| 2922 | |
| 2923 | *** Better caching of the syntactic context. |
| 2924 | CC Mode caches the positions of the opening parentheses (of any kind) |
| 2925 | of the lists surrounding the point. Those positions are used in many |
| 2926 | places as anchor points for various searches. The cache is now |
| 2927 | improved so that it can be reused to a large extent when the point is |
| 2928 | moved. The less it moves, the less needs to be recalculated. |
| 2929 | |
| 2930 | The effect is that CC Mode should be fast most of the time even when |
| 2931 | opening parens are hung (i.e. aren't in column zero). It's typically |
| 2932 | only the first time after the point is moved far down in a complex |
| 2933 | file that it'll take noticeable time to find out the syntactic |
| 2934 | context. |
| 2935 | |
| 2936 | *** Statements are recognized in a more robust way. |
| 2937 | Statements are recognized most of the time even when they occur in an |
| 2938 | "invalid" context, e.g. in a function argument. In practice that can |
| 2939 | happen when macros are involved. |
| 2940 | |
| 2941 | *** Improved the way `c-indent-exp' chooses the block to indent. |
| 2942 | It now indents the block for the closest sexp following the point |
| 2943 | whose closing paren ends on a different line. This means that the |
| 2944 | point doesn't have to be immediately before the block to indent. |
| 2945 | Also, only the block and the closing line is indented; the current |
| 2946 | line is left untouched. |
| 2947 | |
| 2948 | ** Changes in Makefile mode |
| 2949 | |
| 2950 | *** Makefile mode has submodes for automake, gmake, makepp, BSD make and imake. |
| 2951 | |
| 2952 | The former two couldn't be differentiated before, and the latter three |
| 2953 | are new. Font-locking is robust now and offers new customizable |
| 2954 | faces. |
| 2955 | |
| 2956 | *** The variable `makefile-query-one-target-method' has been renamed |
| 2957 | to `makefile-query-one-target-method-function'. The old name is still |
| 2958 | available as alias. |
| 2959 | |
| 2960 | ** Sql changes |
| 2961 | |
| 2962 | *** The variable `sql-product' controls the highlighting of different |
| 2963 | SQL dialects. This variable can be set globally via Customize, on a |
| 2964 | buffer-specific basis via local variable settings, or for the current |
| 2965 | session using the new SQL->Product submenu. (This menu replaces the |
| 2966 | SQL->Highlighting submenu.) |
| 2967 | |
| 2968 | The following values are supported: |
| 2969 | |
| 2970 | ansi ANSI Standard (default) |
| 2971 | db2 DB2 |
| 2972 | informix Informix |
| 2973 | ingres Ingres |
| 2974 | interbase Interbase |
| 2975 | linter Linter |
| 2976 | ms Microsoft |
| 2977 | mysql MySQL |
| 2978 | oracle Oracle |
| 2979 | postgres Postgres |
| 2980 | solid Solid |
| 2981 | sqlite SQLite |
| 2982 | sybase Sybase |
| 2983 | |
| 2984 | The current product name will be shown on the mode line following the |
| 2985 | SQL mode indicator. |
| 2986 | |
| 2987 | The technique of setting `sql-mode-font-lock-defaults' directly in |
| 2988 | your `.emacs' will no longer establish the default highlighting -- Use |
| 2989 | `sql-product' to accomplish this. |
| 2990 | |
| 2991 | ANSI keywords are always highlighted. |
| 2992 | |
| 2993 | *** The function `sql-add-product-keywords' can be used to add |
| 2994 | font-lock rules to the product specific rules. For example, to have |
| 2995 | all identifiers ending in `_t' under MS SQLServer treated as a type, |
| 2996 | you would use the following line in your .emacs file: |
| 2997 | |
| 2998 | (sql-add-product-keywords 'ms |
| 2999 | '(("\\<\\w+_t\\>" . font-lock-type-face))) |
| 3000 | |
| 3001 | *** Oracle support includes keyword highlighting for Oracle 9i. |
| 3002 | |
| 3003 | Most SQL and PL/SQL keywords are implemented. SQL*Plus commands are |
| 3004 | highlighted in `font-lock-doc-face'. |
| 3005 | |
| 3006 | *** Microsoft SQLServer support has been significantly improved. |
| 3007 | |
| 3008 | Keyword highlighting for SqlServer 2000 is implemented. |
| 3009 | sql-interactive-mode defaults to use osql, rather than isql, because |
| 3010 | osql flushes its error stream more frequently. Thus error messages |
| 3011 | are displayed when they occur rather than when the session is |
| 3012 | terminated. |
| 3013 | |
| 3014 | If the username and password are not provided to `sql-ms', osql is |
| 3015 | called with the `-E' command line argument to use the operating system |
| 3016 | credentials to authenticate the user. |
| 3017 | |
| 3018 | *** Postgres support is enhanced. |
| 3019 | Keyword highlighting of Postgres 7.3 is implemented. Prompting for |
| 3020 | the username and the pgsql `-U' option is added. |
| 3021 | |
| 3022 | *** MySQL support is enhanced. |
| 3023 | Keyword highlighting of MySql 4.0 is implemented. |
| 3024 | |
| 3025 | *** Imenu support has been enhanced to locate tables, views, indexes, |
| 3026 | packages, procedures, functions, triggers, sequences, rules, and |
| 3027 | defaults. |
| 3028 | |
| 3029 | *** Added SQL->Start SQLi Session menu entry which calls the |
| 3030 | appropriate `sql-interactive-mode' wrapper for the current setting of |
| 3031 | `sql-product'. |
| 3032 | |
| 3033 | *** sql.el supports the SQLite interpreter--call 'sql-sqlite'. |
| 3034 | |
| 3035 | ** Fortran mode changes |
| 3036 | |
| 3037 | *** F90 mode and Fortran mode have support for `hs-minor-mode' (hideshow). |
| 3038 | It cannot deal with every code format, but ought to handle a sizable |
| 3039 | majority. |
| 3040 | |
| 3041 | *** F90 mode and Fortran mode have new navigation commands |
| 3042 | `f90-end-of-block', `f90-beginning-of-block', `f90-next-block', |
| 3043 | `f90-previous-block', `fortran-end-of-block', |
| 3044 | `fortran-beginning-of-block'. |
| 3045 | |
| 3046 | *** Fortran mode does more font-locking by default. Use level 3 |
| 3047 | highlighting for the old default. |
| 3048 | |
| 3049 | *** Fortran mode has a new variable `fortran-directive-re'. |
| 3050 | Adapt this to match the format of any compiler directives you use. |
| 3051 | Lines that match are never indented, and are given distinctive font-locking. |
| 3052 | |
| 3053 | *** The new function `f90-backslash-not-special' can be used to change |
| 3054 | the syntax of backslashes in F90 buffers. |
| 3055 | |
| 3056 | ** Miscellaneous programming mode changes |
| 3057 | |
| 3058 | *** In sh-script, a continuation line is only indented if the backslash was |
| 3059 | preceded by a SPC or a TAB. |
| 3060 | |
| 3061 | *** Perl mode has a new variable `perl-indent-continued-arguments'. |
| 3062 | |
| 3063 | *** The old Octave mode bindings C-c f and C-c i have been changed |
| 3064 | to C-c C-f and C-c C-i. The C-c C-i subcommands now have duplicate |
| 3065 | bindings on control characters--thus, C-c C-i C-b is the same as |
| 3066 | C-c C-i b, and so on. |
| 3067 | |
| 3068 | *** Prolog mode has a new variable `prolog-font-lock-keywords' |
| 3069 | to support use of font-lock. |
| 3070 | |
| 3071 | ** VC Changes |
| 3072 | |
| 3073 | *** New backends for Subversion and Meta-CVS. |
| 3074 | |
| 3075 | *** The new variable `vc-cvs-global-switches' specifies switches that |
| 3076 | are passed to any CVS command invoked by VC. |
| 3077 | |
| 3078 | These switches are used as "global options" for CVS, which means they |
| 3079 | are inserted before the command name. For example, this allows you to |
| 3080 | specify a compression level using the `-z#' option for CVS. |
| 3081 | |
| 3082 | *** The key C-x C-q only changes the read-only state of the buffer |
| 3083 | (toggle-read-only). It no longer checks files in or out. |
| 3084 | |
| 3085 | We made this change because we held a poll and found that many users |
| 3086 | were unhappy with the previous behavior. If you do prefer this |
| 3087 | behavior, you can bind `vc-toggle-read-only' to C-x C-q in your |
| 3088 | `.emacs' file: |
| 3089 | |
| 3090 | (global-set-key "\C-x\C-q" 'vc-toggle-read-only) |
| 3091 | |
| 3092 | The function `vc-toggle-read-only' will continue to exist. |
| 3093 | |
| 3094 | *** VC-Annotate mode enhancements |
| 3095 | |
| 3096 | In VC-Annotate mode, you can now use the following key bindings for |
| 3097 | enhanced functionality to browse the annotations of past revisions, or |
| 3098 | to view diffs or log entries directly from vc-annotate-mode: |
| 3099 | |
| 3100 | P: annotates the previous revision |
| 3101 | N: annotates the next revision |
| 3102 | J: annotates the revision at line |
| 3103 | A: annotates the revision previous to line |
| 3104 | D: shows the diff of the revision at line with its previous revision |
| 3105 | L: shows the log of the revision at line |
| 3106 | W: annotates the workfile (most up to date) version |
| 3107 | |
| 3108 | ** pcl-cvs changes |
| 3109 | |
| 3110 | *** In pcl-cvs mode, there is a new `d y' command to view the diffs |
| 3111 | between the local version of the file and yesterday's head revision |
| 3112 | in the repository. |
| 3113 | |
| 3114 | *** In pcl-cvs mode, there is a new `d r' command to view the changes |
| 3115 | anyone has committed to the repository since you last executed |
| 3116 | `checkout', `update' or `commit'. That means using cvs diff options |
| 3117 | -rBASE -rHEAD. |
| 3118 | |
| 3119 | ** Diff changes |
| 3120 | |
| 3121 | *** M-x diff uses Diff mode instead of Compilation mode. |
| 3122 | |
| 3123 | *** Diff mode key bindings changed. |
| 3124 | |
| 3125 | These are the new bindings: |
| 3126 | |
| 3127 | C-c C-e diff-ediff-patch (old M-A) |
| 3128 | C-c C-n diff-restrict-view (old M-r) |
| 3129 | C-c C-r diff-reverse-direction (old M-R) |
| 3130 | C-c C-u diff-context->unified (old M-U) |
| 3131 | C-c C-w diff-refine-hunk (old C-c C-r) |
| 3132 | |
| 3133 | To convert unified to context format, use C-u C-c C-u. |
| 3134 | In addition, C-c C-u now operates on the region |
| 3135 | in Transient Mark mode when the mark is active. |
| 3136 | |
| 3137 | ** EDiff changes. |
| 3138 | |
| 3139 | *** When comparing directories. |
| 3140 | Typing D brings up a buffer that lists the differences between the contents of |
| 3141 | directories. Now it is possible to use this buffer to copy the missing files |
| 3142 | from one directory to another. |
| 3143 | |
| 3144 | *** When comparing files or buffers. |
| 3145 | Typing the = key now offers to perform the word-by-word comparison of the |
| 3146 | currently highlighted regions in an inferior Ediff session. If you answer 'n' |
| 3147 | then it reverts to the old behavior and asks the user to select regions for |
| 3148 | comparison. |
| 3149 | |
| 3150 | *** The new command `ediff-backup' compares a file with its most recent |
| 3151 | backup using `ediff'. If you specify the name of a backup file, |
| 3152 | `ediff-backup' compares it with the file of which it is a backup. |
| 3153 | |
| 3154 | ** Etags changes. |
| 3155 | |
| 3156 | *** New regular expressions features |
| 3157 | |
| 3158 | **** New syntax for regular expressions, multi-line regular expressions. |
| 3159 | |
| 3160 | The syntax --ignore-case-regexp=/regex/ is now undocumented and retained |
| 3161 | only for backward compatibility. The new equivalent syntax is |
| 3162 | --regex=/regex/i. More generally, it is --regex=/TAGREGEX/TAGNAME/MODS, |
| 3163 | where `/TAGNAME' is optional, as usual, and MODS is a string of 0 or |
| 3164 | more characters among `i' (ignore case), `m' (multi-line) and `s' |
| 3165 | (single-line). The `m' and `s' modifiers behave as in Perl regular |
| 3166 | expressions: `m' allows regexps to match more than one line, while `s' |
| 3167 | (which implies `m') means that `.' matches newlines. The ability to |
| 3168 | span newlines allows writing of much more powerful regular expressions |
| 3169 | and rapid prototyping for tagging new languages. |
| 3170 | |
| 3171 | **** Regular expressions can use char escape sequences as in GCC. |
| 3172 | |
| 3173 | The escaped character sequence \a, \b, \d, \e, \f, \n, \r, \t, \v, |
| 3174 | respectively, stand for the ASCII characters BEL, BS, DEL, ESC, FF, NL, |
| 3175 | CR, TAB, VT. |
| 3176 | |
| 3177 | **** Regular expressions can be bound to a given language. |
| 3178 | |
| 3179 | The syntax --regex={LANGUAGE}REGEX means that REGEX is used to make tags |
| 3180 | only for files of language LANGUAGE, and ignored otherwise. This is |
| 3181 | particularly useful when storing regexps in a file. |
| 3182 | |
| 3183 | **** Regular expressions can be read from a file. |
| 3184 | |
| 3185 | The --regex=@regexfile option means read the regexps from a file, one |
| 3186 | per line. Lines beginning with space or tab are ignored. |
| 3187 | |
| 3188 | *** New language parsing features |
| 3189 | |
| 3190 | **** New language HTML. |
| 3191 | |
| 3192 | Tags are generated for `title' as well as `h1', `h2', and `h3'. Also, |
| 3193 | when `name=' is used inside an anchor and whenever `id=' is used. |
| 3194 | |
| 3195 | **** New language PHP. |
| 3196 | |
| 3197 | Functions, classes and defines are tags. If the --members option is |
| 3198 | specified to etags, variables are tags also. |
| 3199 | |
| 3200 | **** New language Lua. |
| 3201 | |
| 3202 | All functions are tagged. |
| 3203 | |
| 3204 | **** The `::' qualifier triggers C++ parsing in C file. |
| 3205 | |
| 3206 | Previously, only the `template' and `class' keywords had this effect. |
| 3207 | |
| 3208 | **** The GCC __attribute__ keyword is now recognized and ignored. |
| 3209 | |
| 3210 | **** In C and derived languages, etags creates tags for #undef |
| 3211 | |
| 3212 | **** In Makefiles, constants are tagged. |
| 3213 | |
| 3214 | If you want the old behavior instead, thus avoiding to increase the |
| 3215 | size of the tags file, use the --no-globals option. |
| 3216 | |
| 3217 | **** In Perl, packages are tags. |
| 3218 | |
| 3219 | Subroutine tags are named from their package. You can jump to sub tags |
| 3220 | as you did before, by the sub name, or additionally by looking for |
| 3221 | package::sub. |
| 3222 | |
| 3223 | **** In Prolog, etags creates tags for rules in addition to predicates. |
| 3224 | |
| 3225 | **** New default keywords for TeX. |
| 3226 | |
| 3227 | The new keywords are def, newcommand, renewcommand, newenvironment and |
| 3228 | renewenvironment. |
| 3229 | |
| 3230 | *** Honor #line directives. |
| 3231 | |
| 3232 | When Etags parses an input file that contains C preprocessor's #line |
| 3233 | directives, it creates tags using the file name and line number |
| 3234 | specified in those directives. This is useful when dealing with code |
| 3235 | created from Cweb source files. When Etags tags the generated file, it |
| 3236 | writes tags pointing to the source file. |
| 3237 | |
| 3238 | *** New option --parse-stdin=FILE. |
| 3239 | |
| 3240 | This option is mostly useful when calling etags from programs. It can |
| 3241 | be used (only once) in place of a file name on the command line. Etags |
| 3242 | reads from standard input and marks the produced tags as belonging to |
| 3243 | the file FILE. |
| 3244 | |
| 3245 | ** Ctags changes. |
| 3246 | |
| 3247 | *** Ctags now allows duplicate tags |
| 3248 | |
| 3249 | ** Rmail changes |
| 3250 | |
| 3251 | *** Support for `movemail' from GNU mailutils was added to Rmail. |
| 3252 | |
| 3253 | This version of `movemail' allows you to read mail from a wide range of |
| 3254 | mailbox formats, including remote POP3 and IMAP4 mailboxes with or |
| 3255 | without TLS encryption. If GNU mailutils is installed on the system |
| 3256 | and its version of `movemail' can be found in exec-path, it will be |
| 3257 | used instead of the native one. |
| 3258 | |
| 3259 | *** The new commands rmail-end-of-message and rmail-summary end-of-message, |
| 3260 | by default bound to `/', go to the end of the current mail message in |
| 3261 | Rmail and Rmail summary buffers. |
| 3262 | |
| 3263 | *** Rmail now displays 5-digit message ids in its summary buffer. |
| 3264 | |
| 3265 | ** Gnus package |
| 3266 | |
| 3267 | *** Gnus now includes Sieve and PGG |
| 3268 | |
| 3269 | Sieve is a library for managing Sieve scripts. PGG is a library to handle |
| 3270 | PGP/MIME. |
| 3271 | |
| 3272 | *** There are many news features, bug fixes and improvements. |
| 3273 | |
| 3274 | See the file GNUS-NEWS or the node "Oort Gnus" in the Gnus manual for details. |
| 3275 | |
| 3276 | ** MH-E changes. |
| 3277 | |
| 3278 | Upgraded to MH-E version 8.0.3. There have been major changes since |
| 3279 | version 5.0.2; see MH-E-NEWS for details. |
| 3280 | |
| 3281 | ** Miscellaneous mail changes |
| 3282 | |
| 3283 | *** The new variable `mail-default-directory' specifies |
| 3284 | `default-directory' for mail buffers. This directory is used for |
| 3285 | auto-save files of mail buffers. It defaults to "~/". |
| 3286 | |
| 3287 | *** The mode line can indicate new mail in a directory or file. |
| 3288 | |
| 3289 | See the documentation of the user option `display-time-mail-directory'. |
| 3290 | |
| 3291 | ** Calendar changes |
| 3292 | |
| 3293 | *** There is a new calendar package, icalendar.el, that can be used to |
| 3294 | convert Emacs diary entries to/from the iCalendar format. |
| 3295 | |
| 3296 | *** The new package cal-html.el writes HTML files with calendar and |
| 3297 | diary entries. |
| 3298 | |
| 3299 | *** The new functions `diary-from-outlook', `diary-from-outlook-gnus', |
| 3300 | and `diary-from-outlook-rmail' can be used to import diary entries |
| 3301 | from Outlook-format appointments in mail messages. The variable |
| 3302 | `diary-outlook-formats' can be customized to recognize additional |
| 3303 | formats. |
| 3304 | |
| 3305 | *** The procedure for activating appointment reminders has changed: |
| 3306 | use the new function `appt-activate'. The new variable |
| 3307 | `appt-display-format' controls how reminders are displayed, replacing |
| 3308 | `appt-issue-message', `appt-visible', and `appt-msg-window'. |
| 3309 | |
| 3310 | *** The function `simple-diary-display' now by default sets a header line. |
| 3311 | This can be controlled through the variables `diary-header-line-flag' |
| 3312 | and `diary-header-line-format'. |
| 3313 | |
| 3314 | *** Diary sexp entries can have custom marking in the calendar. |
| 3315 | Diary sexp functions which only apply to certain days (such as |
| 3316 | `diary-block' or `diary-cyclic') now take an optional parameter MARK, |
| 3317 | which is the name of a face or a single-character string indicating |
| 3318 | how to highlight the day in the calendar display. Specifying a |
| 3319 | single-character string as @var{mark} places the character next to the |
| 3320 | day in the calendar. Specifying a face highlights the day with that |
| 3321 | face. This lets you have different colors or markings for vacations, |
| 3322 | appointments, paydays or anything else using a sexp. |
| 3323 | |
| 3324 | *** The meanings of C-x < and C-x > have been interchanged. |
| 3325 | < means to scroll backward in time, and > means to scroll forward. |
| 3326 | |
| 3327 | *** You can now use < and >, instead of C-x < and C-x >, to scroll |
| 3328 | the calendar left or right. |
| 3329 | |
| 3330 | *** The new function `calendar-goto-day-of-year' (g D) prompts for a |
| 3331 | year and day number, and moves to that date. Negative day numbers |
| 3332 | count backward from the end of the year. |
| 3333 | |
| 3334 | *** The new Calendar function `calendar-goto-iso-week' (g w) |
| 3335 | prompts for a year and a week number, and moves to the first |
| 3336 | day of that ISO week. |
| 3337 | |
| 3338 | *** The functions `holiday-easter-etc' and `holiday-advent' now take |
| 3339 | optional arguments, in order to only report on the specified holiday |
| 3340 | rather than all. This makes customization of variables such as |
| 3341 | `christian-holidays' simpler. |
| 3342 | |
| 3343 | *** The new variable `calendar-minimum-window-height' affects the |
| 3344 | window generated by the function `generate-calendar-window'. |
| 3345 | |
| 3346 | ** Speedbar changes |
| 3347 | |
| 3348 | *** Speedbar items can now be selected by clicking mouse-1, based on |
| 3349 | the `mouse-1-click-follows-link' mechanism. |
| 3350 | |
| 3351 | *** The new command `speedbar-toggle-line-expansion', bound to SPC, |
| 3352 | contracts or expands the line under the cursor. |
| 3353 | |
| 3354 | *** New command `speedbar-create-directory', bound to `M'. |
| 3355 | |
| 3356 | *** The new commands `speedbar-expand-line-descendants' and |
| 3357 | `speedbar-contract-line-descendants', bound to `[' and `]' |
| 3358 | respectively, expand and contract the line under cursor with all of |
| 3359 | its descendants. |
| 3360 | |
| 3361 | *** The new user option `speedbar-use-tool-tips-flag', if non-nil, |
| 3362 | means to display tool-tips for speedbar items. |
| 3363 | |
| 3364 | *** The new user option `speedbar-query-confirmation-method' controls |
| 3365 | how querying is performed for file operations. A value of 'always |
| 3366 | means to always query before file operations; 'none-but-delete means |
| 3367 | to not query before any file operations, except before a file |
| 3368 | deletion. |
| 3369 | |
| 3370 | *** The new user option `speedbar-select-frame-method' specifies how |
| 3371 | to select a frame for displaying a file opened with the speedbar. A |
| 3372 | value of 'attached means to use the attached frame (the frame that |
| 3373 | speedbar was started from.) A number such as 1 or -1 means to pass |
| 3374 | that number to `other-frame'. |
| 3375 | |
| 3376 | *** SPC and DEL are no longer bound to scroll up/down in the speedbar |
| 3377 | keymap. |
| 3378 | |
| 3379 | *** The frame management code in speedbar.el has been split into a new |
| 3380 | `dframe' library. Emacs Lisp code that makes use of the speedbar |
| 3381 | should use `dframe-attached-frame' instead of |
| 3382 | `speedbar-attached-frame', `dframe-timer' instead of `speedbar-timer', |
| 3383 | `dframe-close-frame' instead of `speedbar-close-frame', and |
| 3384 | `dframe-activity-change-focus-flag' instead of |
| 3385 | `speedbar-activity-change-focus-flag'. The variables |
| 3386 | `speedbar-update-speed' and `speedbar-navigating-speed' are also |
| 3387 | obsolete; use `dframe-update-speed' instead. |
| 3388 | |
| 3389 | ** battery.el changes |
| 3390 | |
| 3391 | *** display-battery-mode replaces display-battery. |
| 3392 | |
| 3393 | *** battery.el now works on recent versions of OS X. |
| 3394 | |
| 3395 | ** Games |
| 3396 | |
| 3397 | *** The game `mpuz' is enhanced. |
| 3398 | |
| 3399 | `mpuz' now allows the 2nd factor not to have two identical digits. By |
| 3400 | default, all trivial operations involving whole lines are performed |
| 3401 | automatically. The game uses faces for better visual feedback. |
| 3402 | |
| 3403 | ** Obsolete and deleted packages |
| 3404 | |
| 3405 | *** fast-lock.el and lazy-lock.el are obsolete. Use jit-lock.el instead. |
| 3406 | |
| 3407 | *** iso-acc.el is now obsolete. Use one of the latin input methods instead. |
| 3408 | |
| 3409 | *** zone-mode.el is now obsolete. Use dns-mode.el instead. |
| 3410 | |
| 3411 | *** cplus-md.el has been deleted. |
| 3412 | |
| 3413 | ** Miscellaneous |
| 3414 | |
| 3415 | *** The variable `woman-topic-at-point' is renamed |
| 3416 | to `woman-use-topic-at-point' and behaves differently: if this |
| 3417 | variable is non-nil, the `woman' command uses the word at point |
| 3418 | automatically, without asking for a confirmation. Otherwise, the word |
| 3419 | at point is suggested as default, but not inserted at the prompt. |
| 3420 | |
| 3421 | *** You can now customize `fill-nobreak-predicate' to control where |
| 3422 | filling can break lines. The value is now normally a list of |
| 3423 | functions, but it can also be a single function, for compatibility. |
| 3424 | |
| 3425 | Emacs provide two predicates, `fill-single-word-nobreak-p' and |
| 3426 | `fill-french-nobreak-p', for use as the value of |
| 3427 | `fill-nobreak-predicate'. |
| 3428 | |
| 3429 | *** M-x view-file and commands that use it now avoid interfering |
| 3430 | with special modes such as Tar mode. |
| 3431 | |
| 3432 | *** `global-whitespace-mode' is a new alias for `whitespace-global-mode'. |
| 3433 | |
| 3434 | *** The saveplace.el package now filters out unreadable files. |
| 3435 | |
| 3436 | When you exit Emacs, the saved positions in visited files no longer |
| 3437 | include files that aren't readable, e.g. files that don't exist. |
| 3438 | Customize the new option `save-place-forget-unreadable-files' to nil |
| 3439 | to get the old behavior. The new options `save-place-save-skipped' |
| 3440 | and `save-place-skip-check-regexp' allow further fine-tuning of this |
| 3441 | feature. |
| 3442 | |
| 3443 | *** Commands `winner-redo' and `winner-undo', from winner.el, are now |
| 3444 | bound to C-c <left> and C-c <right>, respectively. This is an |
| 3445 | incompatible change. |
| 3446 | |
| 3447 | *** The type-break package now allows `type-break-file-name' to be nil |
| 3448 | and if so, doesn't store any data across sessions. This is handy if |
| 3449 | you don't want the `.type-break' file in your home directory or are |
| 3450 | annoyed by the need for interaction when you kill Emacs. |
| 3451 | |
| 3452 | *** `ps-print' can now print characters from the mule-unicode charsets. |
| 3453 | |
| 3454 | Printing text with characters from the mule-unicode-* sets works with |
| 3455 | `ps-print', provided that you have installed the appropriate BDF |
| 3456 | fonts. See the file INSTALL for URLs where you can find these fonts. |
| 3457 | |
| 3458 | *** New command `strokes-global-set-stroke-string'. |
| 3459 | This is like `strokes-global-set-stroke', but it allows you to bind |
| 3460 | the stroke directly to a string to insert. This is convenient for |
| 3461 | using strokes as an input method. |
| 3462 | |
| 3463 | *** In Outline mode, `hide-body' no longer hides lines at the top |
| 3464 | of the file that precede the first header line. |
| 3465 | |
| 3466 | *** `hide-ifdef-mode' now uses overlays rather than selective-display |
| 3467 | to hide its text. This should be mostly transparent but slightly |
| 3468 | changes the behavior of motion commands like C-e and C-p. |
| 3469 | |
| 3470 | *** In Artist mode the variable `artist-text-renderer' has been |
| 3471 | renamed to `artist-text-renderer-function'. The old name is still |
| 3472 | available as alias. |
| 3473 | |
| 3474 | *** In Enriched mode, `set-left-margin' and `set-right-margin' are now |
| 3475 | by default bound to `C-c [' and `C-c ]' instead of the former `C-c C-l' |
| 3476 | and `C-c C-r'. |
| 3477 | |
| 3478 | *** `partial-completion-mode' now handles partial completion on directory names. |
| 3479 | |
| 3480 | *** You can now disable pc-selection-mode after enabling it. |
| 3481 | |
| 3482 | M-x pc-selection-mode behaves like a proper minor mode, and with no |
| 3483 | argument it toggles the mode. Turning off PC-Selection mode restores |
| 3484 | the global key bindings that were replaced by turning on the mode. |
| 3485 | |
| 3486 | *** `uniquify-strip-common-suffix' tells uniquify to prefer |
| 3487 | `file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'. |
| 3488 | |
| 3489 | *** New user option `add-log-always-start-new-record'. |
| 3490 | |
| 3491 | When this option is enabled, M-x add-change-log-entry always |
| 3492 | starts a new record regardless of when the last record is. |
| 3493 | |
| 3494 | *** M-x compare-windows now can automatically skip non-matching text to |
| 3495 | resync points in both windows. |
| 3496 | |
| 3497 | *** PO translation files are decoded according to their MIME headers |
| 3498 | when Emacs visits them. |
| 3499 | |
| 3500 | *** Telnet now prompts you for a port number with C-u M-x telnet. |
| 3501 | |
| 3502 | *** calculator.el now has radix grouping mode. |
| 3503 | |
| 3504 | To enable this, set `calculator-output-radix' non-nil. In this mode a |
| 3505 | separator character is used every few digits, making it easier to see |
| 3506 | byte boundaries etc. For more info, see the documentation of the |
| 3507 | variable `calculator-radix-grouping-mode'. |
| 3508 | |
| 3509 | *** LDAP support now defaults to ldapsearch from OpenLDAP version 2. |
| 3510 | |
| 3511 | *** The terminal emulation code in term.el has been improved; it can |
| 3512 | run most curses applications now. |
| 3513 | |
| 3514 | *** Support for `magic cookie' standout modes has been removed. |
| 3515 | |
| 3516 | Emacs still works on terminals that require magic cookies in order to |
| 3517 | use standout mode, but they can no longer display mode-lines in |
| 3518 | inverse-video. |
| 3519 | |
| 3520 | \f |
| 3521 | * Changes in Emacs 22.1 on non-free operating systems |
| 3522 | |
| 3523 | ** The HOME directory defaults to Application Data under the user profile. |
| 3524 | |
| 3525 | If you used a previous version of Emacs without setting the HOME |
| 3526 | environment variable and a `.emacs' was saved, then Emacs will continue |
| 3527 | using C:/ as the default HOME. But if you are installing Emacs afresh, |
| 3528 | the default location will be the "Application Data" (or similar |
| 3529 | localized name) subdirectory of your user profile. A typical location |
| 3530 | of this directory is "C:\Documents and Settings\USERNAME\Application Data", |
| 3531 | where USERNAME is your user name. |
| 3532 | |
| 3533 | This change means that users can now have their own `.emacs' files on |
| 3534 | shared computers, and the default HOME directory is less likely to be |
| 3535 | read-only on computers that are administered by someone else. |
| 3536 | |
| 3537 | ** Images are now supported on MS Windows. |
| 3538 | |
| 3539 | PBM and XBM images are supported out of the box. Other image formats |
| 3540 | depend on external libraries. All of these libraries have been ported |
| 3541 | to Windows, and can be found in both source and binary form at |
| 3542 | http://gnuwin32.sourceforge.net/. Note that libpng also depends on |
| 3543 | zlib, and tiff depends on the version of jpeg that it was compiled |
| 3544 | against. For additional information, see nt/INSTALL. |
| 3545 | |
| 3546 | ** Sound is now supported on MS Windows. |
| 3547 | |
| 3548 | WAV format is supported on all versions of Windows, other formats such |
| 3549 | as AU, AIFF and MP3 may be supported in the more recent versions of |
| 3550 | Windows, or when other software provides hooks into the system level |
| 3551 | sound support for those formats. |
| 3552 | |
| 3553 | ** Tooltips now work on MS Windows. |
| 3554 | |
| 3555 | See the Emacs 21.1 NEWS entry for tooltips for details. |
| 3556 | |
| 3557 | ** Pointing devices with more than 3 buttons are now supported on MS Windows. |
| 3558 | |
| 3559 | The new variable `w32-pass-extra-mouse-buttons-to-system' controls |
| 3560 | whether Emacs should handle the extra buttons itself (the default), or |
| 3561 | pass them to Windows to be handled with system-wide functions. |
| 3562 | |
| 3563 | ** Passing resources on the command line now works on MS Windows. |
| 3564 | |
| 3565 | You can use --xrm to pass resource settings to Emacs, overriding any |
| 3566 | existing values. For example: |
| 3567 | |
| 3568 | emacs --xrm "Emacs.Background:red" --xrm "Emacs.Geometry:100x20" |
| 3569 | |
| 3570 | will start up Emacs on an initial frame of 100x20 with red background, |
| 3571 | irrespective of geometry or background setting on the Windows registry. |
| 3572 | |
| 3573 | ** Emacs takes note of colors defined in Control Panel on MS-Windows. |
| 3574 | |
| 3575 | The Control Panel defines some default colors for applications in much |
| 3576 | the same way as wildcard X Resources do on X. Emacs now adds these |
| 3577 | colors to the colormap prefixed by System (eg SystemMenu for the |
| 3578 | default Menu background, SystemMenuText for the foreground), and uses |
| 3579 | some of them to initialize some of the default faces. |
| 3580 | `list-colors-display' shows the list of System color names, in case |
| 3581 | you wish to use them in other faces. |
| 3582 | |
| 3583 | ** Running in a console window in Windows now uses the console size. |
| 3584 | |
| 3585 | Previous versions of Emacs erred on the side of having a usable Emacs |
| 3586 | through telnet, even though that was inconvenient if you use Emacs in |
| 3587 | a local console window with a scrollback buffer. The default value of |
| 3588 | w32-use-full-screen-buffer is now nil, which favors local console |
| 3589 | windows. Recent versions of Windows telnet also work well with this |
| 3590 | setting. If you are using an older telnet server then Emacs detects |
| 3591 | that the console window dimensions that are reported are not sane, and |
| 3592 | defaults to 80x25. If you use such a telnet server regularly at a size |
| 3593 | other than 80x25, you can still manually set |
| 3594 | w32-use-full-screen-buffer to t. |
| 3595 | |
| 3596 | ** Different shaped mouse pointers are supported on MS Windows. |
| 3597 | |
| 3598 | The mouse pointer changes shape depending on what is under the pointer. |
| 3599 | |
| 3600 | ** On MS Windows, the "system caret" now follows the cursor. |
| 3601 | |
| 3602 | This enables Emacs to work better with programs that need to track the |
| 3603 | cursor, for example screen magnifiers and text to speech programs. |
| 3604 | When such a program is in use, the system caret is made visible |
| 3605 | instead of Emacs drawing its own cursor. This seems to be required by |
| 3606 | some programs. The new variable w32-use-visible-system-caret allows |
| 3607 | the caret visibility to be manually toggled. |
| 3608 | |
| 3609 | ** On MS Windows NT/W2K/XP, Emacs uses Unicode for clipboard operations. |
| 3610 | |
| 3611 | Those systems use Unicode internally, so this allows Emacs to share |
| 3612 | multilingual text with other applications. On other versions of |
| 3613 | MS Windows, Emacs now uses the appropriate locale coding-system, so |
| 3614 | the clipboard should work correctly for your local language without |
| 3615 | any customizations. |
| 3616 | |
| 3617 | ** On Mac OS, `keyboard-coding-system' changes based on the keyboard script. |
| 3618 | |
| 3619 | ** The variable `mac-keyboard-text-encoding' and the constants |
| 3620 | `kTextEncodingMacRoman', `kTextEncodingISOLatin1', and |
| 3621 | `kTextEncodingISOLatin2' are obsolete. |
| 3622 | |
| 3623 | ** The variable `mac-command-key-is-meta' is obsolete. Use |
| 3624 | `mac-command-modifier' and `mac-option-modifier' instead. |
| 3625 | \f |
| 3626 | * Incompatible Lisp Changes in Emacs 22.1 |
| 3627 | |
| 3628 | ** Mode line display ignores text properties as well as the |
| 3629 | :propertize and :eval forms in the value of a variable whose |
| 3630 | `risky-local-variable' property is nil. |
| 3631 | |
| 3632 | The function `comint-send-input' now accepts 3 optional arguments: |
| 3633 | |
| 3634 | (comint-send-input &optional no-newline artificial) |
| 3635 | |
| 3636 | Callers sending input not from the user should use bind the 3rd |
| 3637 | argument `artificial' to a non-nil value, to prevent Emacs from |
| 3638 | deleting the part of subprocess output that matches the input. |
| 3639 | |
| 3640 | ** The `read-file-name' function now returns a null string if the |
| 3641 | user just types RET. |
| 3642 | |
| 3643 | ** The variables post-command-idle-hook and post-command-idle-delay have |
| 3644 | been removed. Use run-with-idle-timer instead. |
| 3645 | |
| 3646 | ** A hex or octal escape in a string constant forces the string to |
| 3647 | be multibyte or unibyte, respectively. |
| 3648 | |
| 3649 | ** The explicit method of creating a display table element by |
| 3650 | combining a face number and a character code into a numeric |
| 3651 | glyph code is deprecated. |
| 3652 | |
| 3653 | Instead, the new functions `make-glyph-code', `glyph-char', and |
| 3654 | `glyph-face' must be used to create and decode glyph codes in |
| 3655 | display tables. |
| 3656 | |
| 3657 | ** `suppress-keymap' now works by remapping `self-insert-command' to |
| 3658 | the command `undefined'. (In earlier Emacs versions, it used |
| 3659 | `substitute-key-definition' to rebind self inserting characters to |
| 3660 | `undefined'.) |
| 3661 | |
| 3662 | ** The third argument of `accept-process-output' is now milliseconds. |
| 3663 | It used to be microseconds. |
| 3664 | |
| 3665 | ** The function find-operation-coding-system may be called with a cons |
| 3666 | (FILENAME . BUFFER) in the second argument if the first argument |
| 3667 | OPERATION is `insert-file-contents', and thus a function registered in |
| 3668 | `file-coding-system-alist' is also called with such an argument. |
| 3669 | |
| 3670 | ** When Emacs receives a USR1 or USR2 signal, this generates |
| 3671 | input events: sigusr1 or sigusr2. Use special-event-map to |
| 3672 | handle these events. |
| 3673 | |
| 3674 | ** The variable `memory-full' now remains t until |
| 3675 | there is no longer a shortage of memory. |
| 3676 | |
| 3677 | ** Support for Mocklisp has been removed. |
| 3678 | |
| 3679 | \f |
| 3680 | * Lisp Changes in Emacs 22.1 |
| 3681 | |
| 3682 | ** General Lisp changes: |
| 3683 | |
| 3684 | *** New syntax: \s now stands for the SPACE character. |
| 3685 | |
| 3686 | `?\s' is a new way to write the space character. You must make sure |
| 3687 | it is not followed by a dash, since `?\s-...' indicates the "super" |
| 3688 | modifier. However, it would be strange to write a character constant |
| 3689 | and a following symbol (beginning with `-') with no space between |
| 3690 | them. |
| 3691 | |
| 3692 | `\s' stands for space in strings, too, but it is not really meant for |
| 3693 | strings; it is easier and nicer just to write a space. |
| 3694 | |
| 3695 | *** New syntax: \uXXXX and \UXXXXXXXX specify Unicode code points in hex. |
| 3696 | |
| 3697 | For instance, you can use "\u0428" to specify a string consisting of |
| 3698 | CYRILLIC CAPITAL LETTER SHA, or `"U0001D6E2" to specify one consisting |
| 3699 | of MATHEMATICAL ITALIC CAPITAL ALPHA (the latter is greater than |
| 3700 | #xFFFF and thus needs the longer syntax). |
| 3701 | |
| 3702 | This syntax works for both character constants and strings. |
| 3703 | |
| 3704 | *** New function `unsafep' determines whether a Lisp form is safe. |
| 3705 | |
| 3706 | It returns nil if the given Lisp form can't possibly do anything |
| 3707 | dangerous; otherwise it returns a reason why the form might be unsafe |
| 3708 | (calls unknown function, alters global variable, etc.). |
| 3709 | |
| 3710 | *** The function `eql' is now available without requiring the CL package. |
| 3711 | |
| 3712 | *** The new function `memql' is like `memq', but uses `eql' for comparison, |
| 3713 | that is, floats are compared by value and other elements with `eq'. |
| 3714 | |
| 3715 | *** New functions `string-or-null-p' and `booleanp'. |
| 3716 | |
| 3717 | `string-or-null-p' returns non-nil if OBJECT is a string or nil. |
| 3718 | `booleanp' returns non-nil if OBJECT is t or nil. |
| 3719 | |
| 3720 | *** `makehash' is now obsolete. Use `make-hash-table' instead. |
| 3721 | |
| 3722 | *** Minor change in the function `format'. |
| 3723 | |
| 3724 | Some flags that were accepted but not implemented (such as "*") are no |
| 3725 | longer accepted. |
| 3726 | |
| 3727 | *** `add-to-list' takes an optional third argument, APPEND. |
| 3728 | |
| 3729 | If APPEND is non-nil, the new element gets added at the end of the |
| 3730 | list instead of at the beginning. This change actually occurred in |
| 3731 | Emacs 21.1, but was not documented then. |
| 3732 | |
| 3733 | *** New function `add-to-ordered-list' is like `add-to-list' but |
| 3734 | associates a numeric ordering of each element added to the list. |
| 3735 | |
| 3736 | *** New function `add-to-history' adds an element to a history list. |
| 3737 | |
| 3738 | Lisp packages should use this function to add elements to their |
| 3739 | history lists. |
| 3740 | |
| 3741 | If `history-delete-duplicates' is non-nil, it removes duplicates of |
| 3742 | the new element from the history list it updates. |
| 3743 | |
| 3744 | *** New function `copy-tree' makes a copy of a tree. |
| 3745 | |
| 3746 | It recursively copies through both CARs and CDRs. |
| 3747 | |
| 3748 | *** New function `delete-dups' deletes `equal' duplicate elements from a list. |
| 3749 | |
| 3750 | It modifies the list destructively, like `delete'. Of several `equal' |
| 3751 | occurrences of an element in the list, the one that's kept is the |
| 3752 | first one. |
| 3753 | |
| 3754 | *** New function `rassq-delete-all'. |
| 3755 | |
| 3756 | (rassq-delete-all VALUE ALIST) deletes, from ALIST, each element whose |
| 3757 | CDR is `eq' to the specified value. |
| 3758 | |
| 3759 | *** Functions `get' and `plist-get' no longer give errors for bad plists. |
| 3760 | |
| 3761 | They return nil for a malformed property list or if the list is |
| 3762 | cyclic. |
| 3763 | |
| 3764 | *** New functions `lax-plist-get' and `lax-plist-put'. |
| 3765 | |
| 3766 | They are like `plist-get' and `plist-put', except that they compare |
| 3767 | the property name using `equal' rather than `eq'. |
| 3768 | |
| 3769 | *** The function `number-sequence' makes a list of equally-separated numbers. |
| 3770 | |
| 3771 | For instance, (number-sequence 4 9) returns (4 5 6 7 8 9). By |
| 3772 | default, the separation is 1, but you can specify a different |
| 3773 | separation as the third argument. (number-sequence 1.5 6 2) returns |
| 3774 | (1.5 3.5 5.5). |
| 3775 | |
| 3776 | *** New variables `most-positive-fixnum' and `most-negative-fixnum'. |
| 3777 | |
| 3778 | They hold the largest and smallest possible integer values. |
| 3779 | |
| 3780 | *** The function `expt' handles negative exponents differently. |
| 3781 | The value for `(expt A B)', if both A and B are integers and B is |
| 3782 | negative, is now a float. For example: (expt 2 -2) => 0.25. |
| 3783 | |
| 3784 | *** The function `atan' now accepts an optional second argument. |
| 3785 | |
| 3786 | When called with 2 arguments, as in `(atan Y X)', `atan' returns the |
| 3787 | angle in radians between the vector [X, Y] and the X axis. (This is |
| 3788 | equivalent to the standard C library function `atan2'.) |
| 3789 | |
| 3790 | *** New macro `with-case-table' |
| 3791 | |
| 3792 | This executes the body with the case table temporarily set to a given |
| 3793 | case table. |
| 3794 | |
| 3795 | *** New macro `with-local-quit' temporarily allows quitting. |
| 3796 | |
| 3797 | A quit inside the body of `with-local-quit' is caught by the |
| 3798 | `with-local-quit' form itself, but another quit will happen later once |
| 3799 | the code that has inhibited quitting exits. |
| 3800 | |
| 3801 | This is for use around potentially blocking or long-running code |
| 3802 | inside timer functions and `post-command-hook' functions. |
| 3803 | |
| 3804 | *** New macro `define-obsolete-function-alias'. |
| 3805 | |
| 3806 | This combines `defalias' and `make-obsolete'. |
| 3807 | |
| 3808 | *** New macro `eval-at-startup' specifies expressions to |
| 3809 | evaluate when Emacs starts up. If this is done after startup, |
| 3810 | it evaluates those expressions immediately. |
| 3811 | |
| 3812 | This is useful in packages that can be preloaded. |
| 3813 | |
| 3814 | *** New function `macroexpand-all' expands all macros in a form. |
| 3815 | |
| 3816 | It is similar to the Common-Lisp function of the same name. |
| 3817 | One difference is that it guarantees to return the original argument |
| 3818 | if no expansion is done, which can be tested using `eq'. |
| 3819 | |
| 3820 | *** A function or macro's doc string can now specify the calling pattern. |
| 3821 | |
| 3822 | You put this info in the doc string's last line. It should be |
| 3823 | formatted so as to match the regexp "\n\n(fn .*)\\'". If you don't |
| 3824 | specify this explicitly, Emacs determines it from the actual argument |
| 3825 | names. Usually that default is right, but not always. |
| 3826 | |
| 3827 | *** New variable `print-continuous-numbering'. |
| 3828 | |
| 3829 | When this is non-nil, successive calls to print functions use a single |
| 3830 | numbering scheme for circular structure references. This is only |
| 3831 | relevant when `print-circle' is non-nil. |
| 3832 | |
| 3833 | When you bind `print-continuous-numbering' to t, you should |
| 3834 | also bind `print-number-table' to nil. |
| 3835 | |
| 3836 | *** `list-faces-display' takes an optional argument, REGEXP. |
| 3837 | |
| 3838 | If it is non-nil, the function lists only faces matching this regexp. |
| 3839 | |
| 3840 | *** New hook `command-error-function'. |
| 3841 | |
| 3842 | By setting this variable to a function, you can control |
| 3843 | how the editor command loop shows the user an error message. |
| 3844 | |
| 3845 | *** `debug-on-entry' accepts primitive functions that are not special forms. |
| 3846 | |
| 3847 | ** Lisp code indentation features: |
| 3848 | |
| 3849 | *** The `defmacro' form can contain indentation and edebug declarations. |
| 3850 | |
| 3851 | These declarations specify how to indent the macro calls in Lisp mode |
| 3852 | and how to debug them with Edebug. You write them like this: |
| 3853 | |
| 3854 | (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...) |
| 3855 | |
| 3856 | DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'. The |
| 3857 | possible declaration specifiers are: |
| 3858 | |
| 3859 | (indent INDENT) |
| 3860 | Set NAME's `lisp-indent-function' property to INDENT. |
| 3861 | |
| 3862 | (edebug DEBUG) |
| 3863 | Set NAME's `edebug-form-spec' property to DEBUG. (This is |
| 3864 | equivalent to writing a `def-edebug-spec' for the macro, |
| 3865 | but this is cleaner.) |
| 3866 | |
| 3867 | *** cl-indent now allows customization of Indentation of backquoted forms. |
| 3868 | |
| 3869 | See the new user option `lisp-backquote-indentation'. |
| 3870 | |
| 3871 | *** cl-indent now handles indentation of simple and extended `loop' forms. |
| 3872 | |
| 3873 | The new user options `lisp-loop-keyword-indentation', |
| 3874 | `lisp-loop-forms-indentation', and `lisp-simple-loop-indentation' can |
| 3875 | be used to customize the indentation of keywords and forms in loop |
| 3876 | forms. |
| 3877 | |
| 3878 | ** Variable aliases: |
| 3879 | |
| 3880 | *** New function: defvaralias ALIAS-VAR BASE-VAR [DOCSTRING] |
| 3881 | |
| 3882 | This function defines the symbol ALIAS-VAR as a variable alias for |
| 3883 | symbol BASE-VAR. This means that retrieving the value of ALIAS-VAR |
| 3884 | returns the value of BASE-VAR, and changing the value of ALIAS-VAR |
| 3885 | changes the value of BASE-VAR. |
| 3886 | |
| 3887 | DOCSTRING, if present, is the documentation for ALIAS-VAR; else it has |
| 3888 | the same documentation as BASE-VAR. |
| 3889 | |
| 3890 | *** The macro `define-obsolete-variable-alias' combines `defvaralias' and |
| 3891 | `make-obsolete-variable'. |
| 3892 | |
| 3893 | *** New function: indirect-variable VARIABLE |
| 3894 | |
| 3895 | This function returns the variable at the end of the chain of aliases |
| 3896 | of VARIABLE. If VARIABLE is not a symbol, or if VARIABLE is not |
| 3897 | defined as an alias, the function returns VARIABLE. |
| 3898 | |
| 3899 | It might be noteworthy that variables aliases work for all kinds of |
| 3900 | variables, including buffer-local and frame-local variables. |
| 3901 | |
| 3902 | ** defcustom changes: |
| 3903 | |
| 3904 | *** The package-version keyword has been added to provide |
| 3905 | `customize-changed-options' functionality to packages in the future. |
| 3906 | Developers who make use of this keyword must also update the new |
| 3907 | variable `customize-package-emacs-version-alist'. |
| 3908 | |
| 3909 | *** The new customization type `float' requires a floating point number. |
| 3910 | |
| 3911 | ** String changes: |
| 3912 | |
| 3913 | *** A hex escape in a string constant forces the string to be multibyte. |
| 3914 | |
| 3915 | *** An octal escape in a string constant forces the string to be unibyte. |
| 3916 | |
| 3917 | *** New function `string-to-multibyte' converts a unibyte string to a |
| 3918 | multibyte string with the same individual character codes. |
| 3919 | |
| 3920 | *** `split-string' now includes null substrings in the returned list if |
| 3921 | the optional argument SEPARATORS is non-nil and there are matches for |
| 3922 | SEPARATORS at the beginning or end of the string. If SEPARATORS is |
| 3923 | nil, or if the new optional third argument OMIT-NULLS is non-nil, all |
| 3924 | empty matches are omitted from the returned list. |
| 3925 | |
| 3926 | *** The new function `assoc-string' replaces `assoc-ignore-case' and |
| 3927 | `assoc-ignore-representation', which are still available, but have |
| 3928 | been declared obsolete. |
| 3929 | |
| 3930 | *** New function `substring-no-properties' returns a substring without |
| 3931 | text properties. |
| 3932 | |
| 3933 | ** Displaying warnings to the user. |
| 3934 | |
| 3935 | See the functions `warn' and `display-warning', or the Lisp Manual. |
| 3936 | If you want to be sure the warning will not be overlooked, this |
| 3937 | facility is much better than using `message', since it displays |
| 3938 | warnings in a separate window. |
| 3939 | |
| 3940 | ** Progress reporters. |
| 3941 | |
| 3942 | These provide a simple and uniform way for commands to present |
| 3943 | progress messages for the user. |
| 3944 | |
| 3945 | See the new functions `make-progress-reporter', |
| 3946 | `progress-reporter-update', `progress-reporter-force-update', |
| 3947 | `progress-reporter-done', and `dotimes-with-progress-reporter'. |
| 3948 | |
| 3949 | ** Buffer positions: |
| 3950 | |
| 3951 | *** Function `compute-motion' now calculates the usable window |
| 3952 | width if the WIDTH argument is nil. If the TOPOS argument is nil, |
| 3953 | the usable window height and width is used. |
| 3954 | |
| 3955 | *** The `line-move', `scroll-up', and `scroll-down' functions will now |
| 3956 | modify the window vscroll to scroll through display rows that are |
| 3957 | taller that the height of the window, for example in the presence of |
| 3958 | large images. To disable this feature, bind the new variable |
| 3959 | `auto-window-vscroll' to nil. |
| 3960 | |
| 3961 | *** The argument to `forward-word', `backward-word' is optional. |
| 3962 | |
| 3963 | It defaults to 1. |
| 3964 | |
| 3965 | *** Argument to `forward-to-indentation' and `backward-to-indentation' is optional. |
| 3966 | |
| 3967 | It defaults to 1. |
| 3968 | |
| 3969 | *** `field-beginning' and `field-end' take new optional argument, LIMIT. |
| 3970 | |
| 3971 | This argument tells them not to search beyond LIMIT. Instead they |
| 3972 | give up and return LIMIT. |
| 3973 | |
| 3974 | *** New function `window-line-height' is an efficient way to get |
| 3975 | information about a specific text line in a window provided that the |
| 3976 | window's display is up-to-date. |
| 3977 | |
| 3978 | *** New function `line-number-at-pos' returns the line number of a position. |
| 3979 | |
| 3980 | It an optional buffer position argument that defaults to point. |
| 3981 | |
| 3982 | *** Function `pos-visible-in-window-p' now returns the pixel coordinates |
| 3983 | and partial visibility state of the corresponding row, if the PARTIALLY |
| 3984 | arg is non-nil. |
| 3985 | |
| 3986 | *** New functions `posn-at-point' and `posn-at-x-y' return |
| 3987 | click-event-style position information for a given visible buffer |
| 3988 | position or for a given window pixel coordinate. |
| 3989 | |
| 3990 | *** New function `mouse-on-link-p' tests if a position is in a clickable link. |
| 3991 | |
| 3992 | This is the function used by the new `mouse-1-click-follows-link' |
| 3993 | functionality. |
| 3994 | |
| 3995 | ** Text modification: |
| 3996 | |
| 3997 | *** The new function `buffer-chars-modified-tick' returns a buffer's |
| 3998 | tick counter for changes to characters. Each time text in that buffer |
| 3999 | is inserted or deleted, the character-change counter is updated to the |
| 4000 | tick counter (`buffer-modified-tick'). Text property changes leave it |
| 4001 | unchanged. |
| 4002 | |
| 4003 | *** The new function `insert-for-yank' normally works like `insert', but |
| 4004 | removes the text properties in the `yank-excluded-properties' list |
| 4005 | and handles the `yank-handler' text property. |
| 4006 | |
| 4007 | *** The new function `insert-buffer-substring-as-yank' is like |
| 4008 | `insert-for-yank' except that it gets the text from another buffer as |
| 4009 | in `insert-buffer-substring'. |
| 4010 | |
| 4011 | *** The new function `insert-buffer-substring-no-properties' is like |
| 4012 | `insert-buffer-substring', but removes all text properties from the |
| 4013 | inserted substring. |
| 4014 | |
| 4015 | *** The new function `filter-buffer-substring' extracts a buffer |
| 4016 | substring, passes it through a set of filter functions, and returns |
| 4017 | the filtered substring. Use it instead of `buffer-substring' or |
| 4018 | `delete-and-extract-region' when copying text into a user-accessible |
| 4019 | data structure, such as the kill-ring, X clipboard, or a register. |
| 4020 | |
| 4021 | The list of filter function is specified by the new variable |
| 4022 | `buffer-substring-filters'. For example, Longlines mode adds to |
| 4023 | `buffer-substring-filters' to remove soft newlines from the copied |
| 4024 | text. |
| 4025 | |
| 4026 | *** Function `translate-region' accepts also a char-table as TABLE |
| 4027 | argument. |
| 4028 | |
| 4029 | *** The new translation table `translation-table-for-input' |
| 4030 | is used for customizing self-insertion. The character to |
| 4031 | be inserted is translated through it. |
| 4032 | |
| 4033 | *** Text clones. |
| 4034 | |
| 4035 | The new function `text-clone-create'. Text clones are chunks of text |
| 4036 | that are kept identical by transparently propagating changes from one |
| 4037 | clone to the other. |
| 4038 | |
| 4039 | *** The function `insert-string' is now obsolete. |
| 4040 | |
| 4041 | ** Filling changes. |
| 4042 | |
| 4043 | *** In determining an adaptive fill prefix, Emacs now tries the function in |
| 4044 | `adaptive-fill-function' _before_ matching the buffer line against |
| 4045 | `adaptive-fill-regexp' rather than _after_ it. |
| 4046 | |
| 4047 | ** Atomic change groups. |
| 4048 | |
| 4049 | To perform some changes in the current buffer "atomically" so that |
| 4050 | they either all succeed or are all undone, use `atomic-change-group' |
| 4051 | around the code that makes changes. For instance: |
| 4052 | |
| 4053 | (atomic-change-group |
| 4054 | (insert foo) |
| 4055 | (delete-region x y)) |
| 4056 | |
| 4057 | If an error (or other nonlocal exit) occurs inside the body of |
| 4058 | `atomic-change-group', it unmakes all the changes in that buffer that |
| 4059 | were during the execution of the body. The change group has no effect |
| 4060 | on any other buffers--any such changes remain. |
| 4061 | |
| 4062 | If you need something more sophisticated, you can directly call the |
| 4063 | lower-level functions that `atomic-change-group' uses. Here is how. |
| 4064 | |
| 4065 | To set up a change group for one buffer, call `prepare-change-group'. |
| 4066 | Specify the buffer as argument; it defaults to the current buffer. |
| 4067 | This function returns a "handle" for the change group. You must save |
| 4068 | the handle to activate the change group and then finish it. |
| 4069 | |
| 4070 | Before you change the buffer again, you must activate the change |
| 4071 | group. Pass the handle to `activate-change-group' afterward to |
| 4072 | do this. |
| 4073 | |
| 4074 | After you make the changes, you must finish the change group. You can |
| 4075 | either accept the changes or cancel them all. Call |
| 4076 | `accept-change-group' to accept the changes in the group as final; |
| 4077 | call `cancel-change-group' to undo them all. |
| 4078 | |
| 4079 | You should use `unwind-protect' to make sure the group is always |
| 4080 | finished. The call to `activate-change-group' should be inside the |
| 4081 | `unwind-protect', in case the user types C-g just after it runs. |
| 4082 | (This is one reason why `prepare-change-group' and |
| 4083 | `activate-change-group' are separate functions.) Once you finish the |
| 4084 | group, don't use the handle again--don't try to finish the same group |
| 4085 | twice. |
| 4086 | |
| 4087 | To make a multibuffer change group, call `prepare-change-group' once |
| 4088 | for each buffer you want to cover, then use `nconc' to combine the |
| 4089 | returned values, like this: |
| 4090 | |
| 4091 | (nconc (prepare-change-group buffer-1) |
| 4092 | (prepare-change-group buffer-2)) |
| 4093 | |
| 4094 | You can then activate the multibuffer change group with a single call |
| 4095 | to `activate-change-group', and finish it with a single call to |
| 4096 | `accept-change-group' or `cancel-change-group'. |
| 4097 | |
| 4098 | Nested use of several change groups for the same buffer works as you |
| 4099 | would expect. Non-nested use of change groups for the same buffer |
| 4100 | will lead to undesirable results, so don't let it happen; the first |
| 4101 | change group you start for any given buffer should be the last one |
| 4102 | finished. |
| 4103 | |
| 4104 | ** Buffer-related changes: |
| 4105 | |
| 4106 | *** The new function `buffer-local-value' returns the buffer-local |
| 4107 | binding of VARIABLE (a symbol) in buffer BUFFER. If VARIABLE does not |
| 4108 | have a buffer-local binding in buffer BUFFER, it returns the default |
| 4109 | value of VARIABLE instead. |
| 4110 | |
| 4111 | *** `list-buffers-noselect' now takes an additional argument, BUFFER-LIST. |
| 4112 | |
| 4113 | If it is non-nil, it specifies which buffers to list. |
| 4114 | |
| 4115 | *** `kill-buffer-hook' is now a permanent local. |
| 4116 | |
| 4117 | *** The function `frame-or-buffer-changed-p' now lets you maintain |
| 4118 | various status records in parallel. |
| 4119 | |
| 4120 | It takes a variable (a symbol) as argument. If the variable is non-nil, |
| 4121 | then its value should be a vector installed previously by |
| 4122 | `frame-or-buffer-changed-p'. If the frame names, buffer names, buffer |
| 4123 | order, or their read-only or modified flags have changed, since the |
| 4124 | time the vector's contents were recorded by a previous call to |
| 4125 | `frame-or-buffer-changed-p', then the function returns t. Otherwise |
| 4126 | it returns nil. |
| 4127 | |
| 4128 | On the first call to `frame-or-buffer-changed-p', the variable's |
| 4129 | value should be nil. `frame-or-buffer-changed-p' stores a suitable |
| 4130 | vector into the variable and returns t. |
| 4131 | |
| 4132 | If the variable is itself nil, then `frame-or-buffer-changed-p' uses, |
| 4133 | for compatibility, an internal variable which exists only for this |
| 4134 | purpose. |
| 4135 | |
| 4136 | *** The function `read-buffer' follows the convention for reading from |
| 4137 | the minibuffer with a default value: if DEF is non-nil, the minibuffer |
| 4138 | prompt provided in PROMPT is edited to show the default value provided |
| 4139 | in DEF before the terminal colon and space. |
| 4140 | |
| 4141 | ** Searching and matching changes: |
| 4142 | |
| 4143 | *** New function `looking-back' checks whether a regular expression matches |
| 4144 | the text before point. Specifying the LIMIT argument bounds how far |
| 4145 | back the match can start; this is a way to keep it from taking too long. |
| 4146 | |
| 4147 | *** The new variable `search-spaces-regexp' controls how to search |
| 4148 | for spaces in a regular expression. If it is non-nil, it should be a |
| 4149 | regular expression, and any series of spaces stands for that regular |
| 4150 | expression. If it is nil, spaces stand for themselves. |
| 4151 | |
| 4152 | Spaces inside of constructs such as `[..]' and inside loops such as |
| 4153 | `*', `+', and `?' are never replaced with `search-spaces-regexp'. |
| 4154 | |
| 4155 | *** New regular expression operators, `\_<' and `\_>'. |
| 4156 | |
| 4157 | These match the beginning and end of a symbol. A symbol is a |
| 4158 | non-empty sequence of either word or symbol constituent characters, as |
| 4159 | specified by the syntax table. |
| 4160 | |
| 4161 | *** `skip-chars-forward' and `skip-chars-backward' now handle |
| 4162 | character classes such as `[:alpha:]', along with individual |
| 4163 | characters and ranges. |
| 4164 | |
| 4165 | *** In `replace-match', the replacement text no longer inherits |
| 4166 | properties from surrounding text. |
| 4167 | |
| 4168 | *** The list returned by `(match-data t)' now has the buffer as a final |
| 4169 | element, if the last match was on a buffer. `set-match-data' |
| 4170 | accepts such a list for restoring the match state. |
| 4171 | |
| 4172 | *** Functions `match-data' and `set-match-data' now have an optional |
| 4173 | argument `reseat'. When non-nil, all markers in the match data list |
| 4174 | passed to these functions will be reseated to point to nowhere. |
| 4175 | |
| 4176 | *** rx.el has new corresponding `symbol-start' and `symbol-end' elements. |
| 4177 | |
| 4178 | *** The default value of `sentence-end' is now defined using the new |
| 4179 | variable `sentence-end-without-space', which contains such characters |
| 4180 | that end a sentence without following spaces. |
| 4181 | |
| 4182 | The function `sentence-end' should be used to obtain the value of the |
| 4183 | variable `sentence-end'. If the variable `sentence-end' is nil, then |
| 4184 | this function returns the regexp constructed from the variables |
| 4185 | `sentence-end-without-period', `sentence-end-double-space' and |
| 4186 | `sentence-end-without-space'. |
| 4187 | |
| 4188 | ** Undo changes: |
| 4189 | |
| 4190 | *** `buffer-undo-list' allows programmable elements. |
| 4191 | |
| 4192 | These elements have the form (apply FUNNAME . ARGS), where FUNNAME is |
| 4193 | a symbol other than t or nil. That stands for a high-level change |
| 4194 | that should be undone by evaluating (apply FUNNAME ARGS). |
| 4195 | |
| 4196 | These entries can also have the form (apply DELTA BEG END FUNNAME . ARGS) |
| 4197 | which indicates that the change which took place was limited to the |
| 4198 | range BEG...END and increased the buffer size by DELTA. |
| 4199 | |
| 4200 | *** If the buffer's undo list for the current command gets longer than |
| 4201 | `undo-outer-limit', garbage collection empties it. This is to prevent |
| 4202 | it from using up the available memory and choking Emacs. |
| 4203 | |
| 4204 | ** Killing and yanking changes: |
| 4205 | |
| 4206 | *** New `yank-handler' text property can be used to control how |
| 4207 | previously killed text on the kill ring is reinserted. |
| 4208 | |
| 4209 | The value of the `yank-handler' property must be a list with one to four |
| 4210 | elements with the following format: |
| 4211 | (FUNCTION PARAM NOEXCLUDE UNDO). |
| 4212 | |
| 4213 | The `insert-for-yank' function looks for a yank-handler property on |
| 4214 | the first character on its string argument (typically the first |
| 4215 | element on the kill-ring). If a `yank-handler' property is found, |
| 4216 | the normal behavior of `insert-for-yank' is modified in various ways: |
| 4217 | |
| 4218 | When FUNCTION is present and non-nil, it is called instead of `insert' |
| 4219 | to insert the string. FUNCTION takes one argument--the object to insert. |
| 4220 | If PARAM is present and non-nil, it replaces STRING as the object |
| 4221 | passed to FUNCTION (or `insert'); for example, if FUNCTION is |
| 4222 | `yank-rectangle', PARAM should be a list of strings to insert as a |
| 4223 | rectangle. |
| 4224 | If NOEXCLUDE is present and non-nil, the normal removal of the |
| 4225 | `yank-excluded-properties' is not performed; instead FUNCTION is |
| 4226 | responsible for removing those properties. This may be necessary |
| 4227 | if FUNCTION adjusts point before or after inserting the object. |
| 4228 | If UNDO is present and non-nil, it is a function that will be called |
| 4229 | by `yank-pop' to undo the insertion of the current object. It is |
| 4230 | called with two arguments, the start and end of the current region. |
| 4231 | FUNCTION can set `yank-undo-function' to override the UNDO value. |
| 4232 | |
| 4233 | *** The functions `kill-new', `kill-append', and `kill-region' now have an |
| 4234 | optional argument to specify the `yank-handler' text property to put on |
| 4235 | the killed text. |
| 4236 | |
| 4237 | *** The function `yank-pop' will now use a non-nil value of the variable |
| 4238 | `yank-undo-function' (instead of `delete-region') to undo the previous |
| 4239 | `yank' or `yank-pop' command (or a call to `insert-for-yank'). The function |
| 4240 | `insert-for-yank' automatically sets that variable according to the UNDO |
| 4241 | element of the string argument's `yank-handler' text property if present. |
| 4242 | |
| 4243 | *** The function `insert-for-yank' now supports strings where the |
| 4244 | `yank-handler' property does not span the first character of the |
| 4245 | string. The old behavior is available if you call |
| 4246 | `insert-for-yank-1' instead. |
| 4247 | |
| 4248 | ** Syntax table changes: |
| 4249 | |
| 4250 | *** The new function `syntax-ppss' provides an efficient way to find the |
| 4251 | current syntactic context at point. |
| 4252 | |
| 4253 | *** The new function `syntax-after' returns the syntax code |
| 4254 | of the character after a specified buffer position, taking account |
| 4255 | of text properties as well as the character code. |
| 4256 | |
| 4257 | *** `syntax-class' extracts the class of a syntax code (as returned |
| 4258 | by `syntax-after'). |
| 4259 | |
| 4260 | *** The macro `with-syntax-table' no longer copies the syntax table. |
| 4261 | |
| 4262 | ** File operation changes: |
| 4263 | |
| 4264 | *** New vars `exec-suffixes' and `load-suffixes' used when |
| 4265 | searching for an executable or an Emacs Lisp file. |
| 4266 | |
| 4267 | *** New function `locate-file' searches for a file in a list of directories. |
| 4268 | `locate-file' accepts a name of a file to search (a string), and two |
| 4269 | lists: a list of directories to search in and a list of suffixes to |
| 4270 | try; typical usage might use `exec-path' and `load-path' for the list |
| 4271 | of directories, and `exec-suffixes' and `load-suffixes' for the list |
| 4272 | of suffixes. The function also accepts a predicate argument to |
| 4273 | further filter candidate files. |
| 4274 | |
| 4275 | One advantage of using this function is that the list of suffixes in |
| 4276 | `exec-suffixes' is OS-dependent, so this function will find |
| 4277 | executables without polluting Lisp code with OS dependencies. |
| 4278 | |
| 4279 | *** The new function `file-remote-p' tests a file name and returns |
| 4280 | non-nil if it specifies a remote file (one that Emacs accesses using |
| 4281 | its own special methods and not directly through the file system). |
| 4282 | The value in that case is an identifier for the remote file system. |
| 4283 | |
| 4284 | *** The new hook `before-save-hook' is invoked by `basic-save-buffer' |
| 4285 | before saving buffers. This allows packages to perform various final |
| 4286 | tasks. For example, it can be used by the copyright package to make |
| 4287 | sure saved files have the current year in any copyright headers. |
| 4288 | |
| 4289 | *** `file-chase-links' now takes an optional second argument LIMIT which |
| 4290 | specifies the maximum number of links to chase through. If after that |
| 4291 | many iterations the file name obtained is still a symbolic link, |
| 4292 | `file-chase-links' returns it anyway. |
| 4293 | |
| 4294 | *** Functions `file-name-sans-extension' and `file-name-extension' now |
| 4295 | ignore the leading dots in file names, so that file names such as |
| 4296 | `.emacs' are treated as extensionless. |
| 4297 | |
| 4298 | *** If `buffer-save-without-query' is non-nil in some buffer, |
| 4299 | `save-some-buffers' will always save that buffer without asking (if |
| 4300 | it's modified). |
| 4301 | |
| 4302 | *** `buffer-auto-save-file-format' is the new name for what was |
| 4303 | formerly called `auto-save-file-format'. It is now a permanent local. |
| 4304 | |
| 4305 | *** `visited-file-modtime' and `calendar-time-from-absolute' now return |
| 4306 | a list of two integers, instead of a cons. |
| 4307 | |
| 4308 | *** The precedence of file name handlers has been changed. |
| 4309 | |
| 4310 | Instead of choosing the first handler that matches, |
| 4311 | `find-file-name-handler' now gives precedence to a file name handler |
| 4312 | that matches nearest the end of the file name. More precisely, the |
| 4313 | handler whose (match-beginning 0) is the largest is chosen. In case |
| 4314 | of ties, the old "first matched" rule applies. |
| 4315 | |
| 4316 | *** A file name handler can declare which operations it handles. |
| 4317 | |
| 4318 | You do this by putting an `operation' property on the handler name |
| 4319 | symbol. The property value should be a list of the operations that |
| 4320 | the handler really handles. It won't be called for any other |
| 4321 | operations. |
| 4322 | |
| 4323 | This is useful for autoloaded handlers, to prevent them from being |
| 4324 | autoloaded when not really necessary. |
| 4325 | |
| 4326 | *** The function `make-auto-save-file-name' is now handled by file |
| 4327 | name handlers. This will be exploited for remote files mainly. |
| 4328 | |
| 4329 | *** The function `file-name-completion' accepts an optional argument |
| 4330 | PREDICATE, and rejects completion candidates that don't satisfy PREDICATE. |
| 4331 | |
| 4332 | *** The new primitive `set-file-times' sets a file's access and |
| 4333 | modification times. Magic file name handlers can handle this |
| 4334 | operation. |
| 4335 | |
| 4336 | ** Input changes: |
| 4337 | |
| 4338 | *** Functions `y-or-n-p', `read-char', `read-key-sequence' and the like, that |
| 4339 | display a prompt but don't use the minibuffer, now display the prompt |
| 4340 | using the text properties (esp. the face) of the prompt string. |
| 4341 | |
| 4342 | *** The functions `read-event', `read-char', and `read-char-exclusive' |
| 4343 | have a new optional argument SECONDS. If non-nil, this specifies a |
| 4344 | maximum time to wait for input, in seconds. If no input arrives after |
| 4345 | this time elapses, the functions stop waiting and return nil. |
| 4346 | |
| 4347 | *** An interactive specification can now use the code letter `U' to get |
| 4348 | the up-event that was discarded in case the last key sequence read for a |
| 4349 | previous `k' or `K' argument was a down-event; otherwise nil is used. |
| 4350 | |
| 4351 | *** The new interactive-specification `G' reads a file name |
| 4352 | much like `F', but if the input is a directory name (even defaulted), |
| 4353 | it returns just the directory name. |
| 4354 | |
| 4355 | *** (while-no-input BODY...) runs BODY, but only so long as no input |
| 4356 | arrives. If the user types or clicks anything, BODY stops as if a |
| 4357 | quit had occurred. `while-no-input' returns the value of BODY, if BODY |
| 4358 | finishes. It returns nil if BODY was aborted by a quit, and t if |
| 4359 | BODY was aborted by arrival of input. |
| 4360 | |
| 4361 | *** `recent-keys' now returns the last 300 keys. |
| 4362 | |
| 4363 | ** Minibuffer changes: |
| 4364 | |
| 4365 | *** The new function `minibufferp' returns non-nil if its optional |
| 4366 | buffer argument is a minibuffer. If the argument is omitted, it |
| 4367 | defaults to the current buffer. |
| 4368 | |
| 4369 | *** New function `minibuffer-selected-window' returns the window which |
| 4370 | was selected when entering the minibuffer. |
| 4371 | |
| 4372 | *** The `read-file-name' function now takes an additional argument which |
| 4373 | specifies a predicate which the file name read must satisfy. The |
| 4374 | new variable `read-file-name-predicate' contains the predicate argument |
| 4375 | while reading the file name from the minibuffer; the predicate in this |
| 4376 | variable is used by read-file-name-internal to filter the completion list. |
| 4377 | |
| 4378 | *** The new variable `read-file-name-function' can be used by Lisp code |
| 4379 | to override the built-in `read-file-name' function. |
| 4380 | |
| 4381 | *** The new variable `read-file-name-completion-ignore-case' specifies |
| 4382 | whether completion ignores case when reading a file name with the |
| 4383 | `read-file-name' function. |
| 4384 | |
| 4385 | *** The new function `read-directory-name' is for reading a directory name. |
| 4386 | |
| 4387 | It is like `read-file-name' except that the defaulting works better |
| 4388 | for directories, and completion inside it shows only directories. |
| 4389 | |
| 4390 | *** The new variable `history-add-new-input' specifies whether to add new |
| 4391 | elements in history. If set to nil, minibuffer reading functions don't |
| 4392 | add new elements to the history list, so it is possible to do this |
| 4393 | afterwards by calling `add-to-history' explicitly. |
| 4394 | |
| 4395 | ** Completion changes: |
| 4396 | |
| 4397 | *** The new function `minibuffer-completion-contents' returns the contents |
| 4398 | of the minibuffer just before point. That is what completion commands |
| 4399 | operate on. |
| 4400 | |
| 4401 | *** The functions `all-completions' and `try-completion' now accept lists |
| 4402 | of strings as well as hash-tables additionally to alists, obarrays |
| 4403 | and functions. Furthermore, the function `test-completion' is now |
| 4404 | exported to Lisp. The keys in alists and hash tables can be either |
| 4405 | strings or symbols, which are automatically converted with to strings. |
| 4406 | |
| 4407 | *** The new macro `dynamic-completion-table' supports using functions |
| 4408 | as a dynamic completion table. |
| 4409 | |
| 4410 | (dynamic-completion-table FUN) |
| 4411 | |
| 4412 | FUN is called with one argument, the string for which completion is required, |
| 4413 | and it should return an alist containing all the intended possible |
| 4414 | completions. This alist can be a full list of possible completions so that FUN |
| 4415 | can ignore the value of its argument. If completion is performed in the |
| 4416 | minibuffer, FUN will be called in the buffer from which the minibuffer was |
| 4417 | entered. `dynamic-completion-table' then computes the completion. |
| 4418 | |
| 4419 | *** The new macro `lazy-completion-table' initializes a variable |
| 4420 | as a lazy completion table. |
| 4421 | |
| 4422 | (lazy-completion-table VAR FUN) |
| 4423 | |
| 4424 | If the completion table VAR is used for the first time (e.g., by passing VAR |
| 4425 | as an argument to `try-completion'), the function FUN is called with no |
| 4426 | arguments. FUN must return the completion table that will be stored in VAR. |
| 4427 | If completion is requested in the minibuffer, FUN will be called in the buffer |
| 4428 | from which the minibuffer was entered. The return value of |
| 4429 | `lazy-completion-table' must be used to initialize the value of VAR. |
| 4430 | |
| 4431 | ** Abbrev changes: |
| 4432 | |
| 4433 | *** `define-abbrev' now accepts an optional argument SYSTEM-FLAG. |
| 4434 | |
| 4435 | If non-nil, this marks the abbrev as a "system" abbrev, which means |
| 4436 | that it won't be stored in the user's abbrevs file if he saves the |
| 4437 | abbrevs. Major modes that predefine some abbrevs should always |
| 4438 | specify this flag. |
| 4439 | |
| 4440 | *** The new function `copy-abbrev-table' copies an abbrev table. |
| 4441 | |
| 4442 | It returns a new abbrev table that is a copy of a given abbrev table. |
| 4443 | |
| 4444 | ** Enhancements to keymaps. |
| 4445 | |
| 4446 | *** Cleaner way to enter key sequences. |
| 4447 | |
| 4448 | You can enter a constant key sequence in a more natural format, the |
| 4449 | same one used for saving keyboard macros, using the macro `kbd'. For |
| 4450 | example, |
| 4451 | |
| 4452 | (kbd "C-x C-f") => "\^x\^f" |
| 4453 | |
| 4454 | Actually, this format has existed since Emacs 20.1. |
| 4455 | |
| 4456 | *** Interactive commands can be remapped through keymaps. |
| 4457 | |
| 4458 | This is an alternative to using `defadvice' or `substitute-key-definition' |
| 4459 | to modify the behavior of a key binding using the normal keymap |
| 4460 | binding and lookup functionality. |
| 4461 | |
| 4462 | When a key sequence is bound to a command, and that command is |
| 4463 | remapped to another command, that command is run instead of the |
| 4464 | original command. |
| 4465 | |
| 4466 | Example: |
| 4467 | Suppose that minor mode `my-mode' has defined the commands |
| 4468 | `my-kill-line' and `my-kill-word', and it wants C-k (and any other key |
| 4469 | bound to `kill-line') to run the command `my-kill-line' instead of |
| 4470 | `kill-line', and likewise it wants to run `my-kill-word' instead of |
| 4471 | `kill-word'. |
| 4472 | |
| 4473 | Instead of rebinding C-k and the other keys in the minor mode map, |
| 4474 | command remapping allows you to directly map `kill-line' into |
| 4475 | `my-kill-line' and `kill-word' into `my-kill-word' using `define-key': |
| 4476 | |
| 4477 | (define-key my-mode-map [remap kill-line] 'my-kill-line) |
| 4478 | (define-key my-mode-map [remap kill-word] 'my-kill-word) |
| 4479 | |
| 4480 | When `my-mode' is enabled, its minor mode keymap is enabled too. So |
| 4481 | when the user types C-k, that runs the command `my-kill-line'. |
| 4482 | |
| 4483 | Only one level of remapping is supported. In the above example, this |
| 4484 | means that if `my-kill-line' is remapped to `other-kill', then C-k still |
| 4485 | runs `my-kill-line'. |
| 4486 | |
| 4487 | The following changes have been made to provide command remapping: |
| 4488 | |
| 4489 | - Command remappings are defined using `define-key' with a prefix-key |
| 4490 | `remap', i.e. `(define-key MAP [remap CMD] DEF)' remaps command CMD |
| 4491 | to definition DEF in keymap MAP. The definition is not limited to |
| 4492 | another command; it can be anything accepted for a normal binding. |
| 4493 | |
| 4494 | - The new function `command-remapping' returns the binding for a |
| 4495 | remapped command in the current keymaps, or nil if not remapped. |
| 4496 | |
| 4497 | - `key-binding' now remaps interactive commands unless the optional |
| 4498 | third argument NO-REMAP is non-nil. |
| 4499 | |
| 4500 | - `where-is-internal' now returns nil for a remapped command (e.g. |
| 4501 | `kill-line', when `my-mode' is enabled), and the actual key binding for |
| 4502 | the command it is remapped to (e.g. C-k for my-kill-line). |
| 4503 | It also has a new optional fifth argument, NO-REMAP, which inhibits |
| 4504 | remapping if non-nil (e.g. it returns "C-k" for `kill-line', and |
| 4505 | "<kill-line>" for `my-kill-line'). |
| 4506 | |
| 4507 | - The new variable `this-original-command' contains the original |
| 4508 | command before remapping. It is equal to `this-command' when the |
| 4509 | command was not remapped. |
| 4510 | |
| 4511 | *** The definition of a key-binding passed to define-key can use XEmacs-style |
| 4512 | key-sequences, such as [(control a)]. |
| 4513 | |
| 4514 | *** New keymaps for typing file names |
| 4515 | |
| 4516 | Two new keymaps, `minibuffer-local-filename-completion-map' and |
| 4517 | `minibuffer-local-must-match-filename-map', apply whenever |
| 4518 | Emacs reads a file name in the minibuffer. These key maps override |
| 4519 | the usual binding of SPC to `minibuffer-complete-word' (so that file |
| 4520 | names with embedded spaces could be typed without the need to quote |
| 4521 | the spaces). |
| 4522 | |
| 4523 | *** New function `current-active-maps' returns a list of currently |
| 4524 | active keymaps. |
| 4525 | |
| 4526 | *** New function `describe-buffer-bindings' inserts the list of all |
| 4527 | defined keys and their definitions. |
| 4528 | |
| 4529 | *** New function `keymap-prompt' returns the prompt string of a keymap. |
| 4530 | |
| 4531 | *** If text has a `keymap' property, that keymap takes precedence |
| 4532 | over minor mode keymaps. |
| 4533 | |
| 4534 | *** The `keymap' property now also works at the ends of overlays and |
| 4535 | text properties, according to their stickiness. This also means that it |
| 4536 | works with empty overlays. The same hold for the `local-map' property. |
| 4537 | |
| 4538 | *** `key-binding' will now look up mouse-specific bindings. The |
| 4539 | keymaps consulted by `key-binding' will get adapted if the key |
| 4540 | sequence is started with a mouse event. Instead of letting the click |
| 4541 | position be determined from the key sequence itself, it is also |
| 4542 | possible to specify it with an optional argument explicitly. |
| 4543 | |
| 4544 | *** `define-key-after' now accepts keys longer than 1. |
| 4545 | |
| 4546 | *** (map-keymap FUNCTION KEYMAP) applies the function to each binding |
| 4547 | in the keymap. |
| 4548 | |
| 4549 | *** New variable `emulation-mode-map-alists'. |
| 4550 | |
| 4551 | Lisp packages using many minor mode keymaps can now maintain their own |
| 4552 | keymap alist separate from `minor-mode-map-alist' by adding their |
| 4553 | keymap alist to this list. |
| 4554 | |
| 4555 | *** Dense keymaps now handle inheritance correctly. |
| 4556 | |
| 4557 | Previously a dense keymap would hide all of the simple-char key |
| 4558 | bindings of the parent keymap. |
| 4559 | |
| 4560 | ** Enhancements to process support |
| 4561 | |
| 4562 | *** Adaptive read buffering of subprocess output. |
| 4563 | |
| 4564 | On some systems, when Emacs reads the output from a subprocess, the |
| 4565 | output data is read in very small blocks, potentially resulting in |
| 4566 | very poor performance. This behavior can be remedied to some extent |
| 4567 | by setting the new variable `process-adaptive-read-buffering' to a |
| 4568 | non-nil value (the default), as it will automatically delay reading |
| 4569 | from such processes, allowing them to produce more output before |
| 4570 | Emacs tries to read it. |
| 4571 | |
| 4572 | *** Processes now have an associated property list where programs can |
| 4573 | maintain process state and other per-process related information. |
| 4574 | |
| 4575 | Use the new functions `process-get' and `process-put' to access, add, |
| 4576 | and modify elements on this property list. Use the new functions |
| 4577 | `process-plist' and `set-process-plist' to access and replace the |
| 4578 | entire property list of a process. |
| 4579 | |
| 4580 | *** Function `list-processes' now has an optional argument; if non-nil, |
| 4581 | it lists only the processes whose query-on-exit flag is set. |
| 4582 | |
| 4583 | *** New fns `set-process-query-on-exit-flag' and `process-query-on-exit-flag'. |
| 4584 | |
| 4585 | These replace the old function `process-kill-without-query'. That |
| 4586 | function is still supported, but new code should use the new |
| 4587 | functions. |
| 4588 | |
| 4589 | *** The new function `call-process-shell-command'. |
| 4590 | |
| 4591 | This executes a shell command synchronously in a separate process. |
| 4592 | |
| 4593 | *** The new function `process-file' is similar to `call-process', but |
| 4594 | obeys file handlers. The file handler is chosen based on |
| 4595 | `default-directory'. |
| 4596 | |
| 4597 | *** Function `signal-process' now accepts a process object or process |
| 4598 | name in addition to a process id to identify the signaled process. |
| 4599 | |
| 4600 | *** Function `accept-process-output' has a new optional fourth arg |
| 4601 | JUST-THIS-ONE. If non-nil, only output from the specified process |
| 4602 | is handled, suspending output from other processes. If value is an |
| 4603 | integer, also inhibit running timers. This feature is generally not |
| 4604 | recommended, but may be necessary for specific applications, such as |
| 4605 | speech synthesis. |
| 4606 | |
| 4607 | *** A process filter function gets the output as multibyte string |
| 4608 | if the process specifies t for its filter's multibyteness. |
| 4609 | |
| 4610 | That multibyteness is decided by the value of |
| 4611 | `default-enable-multibyte-characters' when the process is created, and |
| 4612 | you can change it later with `set-process-filter-multibyte'. |
| 4613 | |
| 4614 | *** The new function `set-process-filter-multibyte' sets the |
| 4615 | multibyteness of the strings passed to the process's filter. |
| 4616 | |
| 4617 | *** The new function `process-filter-multibyte-p' returns the |
| 4618 | multibyteness of the strings passed to the process's filter. |
| 4619 | |
| 4620 | *** If a process's coding system is `raw-text' or `no-conversion' and its |
| 4621 | buffer is multibyte, the output of the process is at first converted |
| 4622 | to multibyte by `string-to-multibyte' then inserted in the buffer. |
| 4623 | Previously, it was converted to multibyte by `string-as-multibyte', |
| 4624 | which was not compatible with the behavior of file reading. |
| 4625 | |
| 4626 | ** Enhanced networking support. |
| 4627 | |
| 4628 | *** The new `make-network-process' function makes network connections. |
| 4629 | It allows opening of stream and datagram connections to a server, as well as |
| 4630 | create a stream or datagram server inside Emacs. |
| 4631 | |
| 4632 | - A server is started using :server t arg. |
| 4633 | - Datagram connection is selected using :type 'datagram arg. |
| 4634 | - A server can open on a random port using :service t arg. |
| 4635 | - Local sockets are supported using :family 'local arg. |
| 4636 | - IPv6 is supported (when available). You may explicitly select IPv6 |
| 4637 | using :family 'ipv6 arg. |
| 4638 | - Non-blocking connect is supported using :nowait t arg. |
| 4639 | - The process' property list can be initialized using :plist PLIST arg; |
| 4640 | a copy of the server process' property list is automatically inherited |
| 4641 | by new client processes created to handle incoming connections. |
| 4642 | |
| 4643 | To test for the availability of a given feature, use featurep like this: |
| 4644 | (featurep 'make-network-process '(:type datagram)) |
| 4645 | (featurep 'make-network-process '(:family ipv6)) |
| 4646 | |
| 4647 | *** The old `open-network-stream' now uses `make-network-process'. |
| 4648 | |
| 4649 | *** `process-contact' has an optional KEY argument. |
| 4650 | |
| 4651 | Depending on this argument, you can get the complete list of network |
| 4652 | process properties or a specific property. Using :local or :remote as |
| 4653 | the KEY, you get the address of the local or remote end-point. |
| 4654 | |
| 4655 | An Inet address is represented as a 5 element vector, where the first |
| 4656 | 4 elements contain the IP address and the fifth is the port number. |
| 4657 | |
| 4658 | *** New functions `stop-process' and `continue-process'. |
| 4659 | |
| 4660 | These functions stop and restart communication through a network |
| 4661 | connection. For a server process, no connections are accepted in the |
| 4662 | stopped state. For a client process, no input is received in the |
| 4663 | stopped state. |
| 4664 | |
| 4665 | *** New function `format-network-address'. |
| 4666 | |
| 4667 | This function reformats the Lisp representation of a network address |
| 4668 | to a printable string. For example, an IP address A.B.C.D and port |
| 4669 | number P is represented as a five element vector [A B C D P], and the |
| 4670 | printable string returned for this vector is "A.B.C.D:P". See the doc |
| 4671 | string for other formatting options. |
| 4672 | |
| 4673 | *** New function `network-interface-list'. |
| 4674 | |
| 4675 | This function returns a list of network interface names and their |
| 4676 | current network addresses. |
| 4677 | |
| 4678 | *** New function `network-interface-info'. |
| 4679 | |
| 4680 | This function returns the network address, hardware address, current |
| 4681 | status, and other information about a specific network interface. |
| 4682 | |
| 4683 | *** New functions `process-datagram-address', `set-process-datagram-address'. |
| 4684 | |
| 4685 | These functions are used with datagram-based network processes to get |
| 4686 | and set the current address of the remote partner. |
| 4687 | |
| 4688 | *** Deleting a network process with `delete-process' calls the sentinel. |
| 4689 | |
| 4690 | The status message passed to the sentinel for a deleted network |
| 4691 | process is "deleted". The message passed to the sentinel when the |
| 4692 | connection is closed by the remote peer has been changed to |
| 4693 | "connection broken by remote peer". |
| 4694 | |
| 4695 | ** Using window objects: |
| 4696 | |
| 4697 | *** You can now make a window as short as one line. |
| 4698 | |
| 4699 | A window that is just one line tall does not display either a mode |
| 4700 | line or a header line, even if the variables `mode-line-format' and |
| 4701 | `header-line-format' call for them. A window that is two lines tall |
| 4702 | cannot display both a mode line and a header line at once; if the |
| 4703 | variables call for both, only the mode line actually appears. |
| 4704 | |
| 4705 | *** The new function `window-inside-edges' returns the edges of the |
| 4706 | actual text portion of the window, not including the scroll bar or |
| 4707 | divider line, the fringes, the display margins, the header line and |
| 4708 | the mode line. |
| 4709 | |
| 4710 | *** The new functions `window-pixel-edges' and `window-inside-pixel-edges' |
| 4711 | return window edges in units of pixels, rather than columns and lines. |
| 4712 | |
| 4713 | *** New function `window-body-height'. |
| 4714 | |
| 4715 | This is like `window-height' but does not count the mode line or the |
| 4716 | header line. |
| 4717 | |
| 4718 | *** The new function `adjust-window-trailing-edge' moves the right |
| 4719 | or bottom edge of a window. It does not move other window edges. |
| 4720 | |
| 4721 | *** The new macro `with-selected-window' temporarily switches the |
| 4722 | selected window without impacting the order of `buffer-list'. |
| 4723 | It saves and restores the current buffer, too. |
| 4724 | |
| 4725 | *** `select-window' takes an optional second argument NORECORD. |
| 4726 | |
| 4727 | This is like `switch-to-buffer'. |
| 4728 | |
| 4729 | *** `save-selected-window' now saves and restores the selected window |
| 4730 | of every frame. This way, it restores everything that can be changed |
| 4731 | by calling `select-window'. It also saves and restores the current |
| 4732 | buffer. |
| 4733 | |
| 4734 | *** `set-window-buffer' has an optional argument KEEP-MARGINS. |
| 4735 | |
| 4736 | If non-nil, that says to preserve the window's current margin, fringe, |
| 4737 | and scroll-bar settings. |
| 4738 | |
| 4739 | *** The new function `window-tree' returns a frame's window tree. |
| 4740 | |
| 4741 | *** The functions `get-lru-window' and `get-largest-window' take an optional |
| 4742 | argument `dedicated'. If non-nil, those functions do not ignore |
| 4743 | dedicated windows. |
| 4744 | |
| 4745 | ** Customizable fringe bitmaps |
| 4746 | |
| 4747 | *** There are new display properties, `left-fringe' and `right-fringe', |
| 4748 | that can be used to show a specific bitmap in the left or right fringe |
| 4749 | bitmap of the display line. |
| 4750 | |
| 4751 | Format is `display (left-fringe BITMAP [FACE])', where BITMAP is a |
| 4752 | symbol identifying a fringe bitmap, either built-in or defined with |
| 4753 | `define-fringe-bitmap', and FACE is an optional face name to be used |
| 4754 | for displaying the bitmap instead of the default `fringe' face. |
| 4755 | When specified, FACE is automatically merged with the `fringe' face. |
| 4756 | |
| 4757 | *** New buffer-local variables `fringe-indicator-alist' and |
| 4758 | `fringe-cursor-alist' maps between logical (internal) fringe indicator |
| 4759 | and cursor symbols and the actual fringe bitmaps to be displayed. |
| 4760 | This decouples the logical meaning of the fringe indicators from the |
| 4761 | physical appearance, as well as allowing different fringe bitmaps to |
| 4762 | be used in different windows showing different buffers. |
| 4763 | |
| 4764 | *** New function `define-fringe-bitmap' can now be used to create new |
| 4765 | fringe bitmaps, as well as change the built-in fringe bitmaps. |
| 4766 | |
| 4767 | *** New function `destroy-fringe-bitmap' deletes a fringe bitmap |
| 4768 | or restores a built-in one to its default value. |
| 4769 | |
| 4770 | *** New function `set-fringe-bitmap-face' specifies the face to be |
| 4771 | used for a specific fringe bitmap. The face is automatically merged |
| 4772 | with the `fringe' face, so normally, the face should only specify the |
| 4773 | foreground color of the bitmap. |
| 4774 | |
| 4775 | *** New function `fringe-bitmaps-at-pos' returns the current fringe |
| 4776 | bitmaps in the display line at a given buffer position. |
| 4777 | |
| 4778 | ** Other window fringe features: |
| 4779 | |
| 4780 | *** Controlling the default left and right fringe widths. |
| 4781 | |
| 4782 | The default left and right fringe widths for all windows of a frame |
| 4783 | can now be controlled by setting the `left-fringe' and `right-fringe' |
| 4784 | frame parameters to an integer value specifying the width in pixels. |
| 4785 | Setting the width to 0 effectively removes the corresponding fringe. |
| 4786 | |
| 4787 | The actual default fringe widths for the frame may deviate from the |
| 4788 | specified widths, since the combined fringe widths must match an |
| 4789 | integral number of columns. The extra width is distributed evenly |
| 4790 | between the left and right fringe. To force a specific fringe width, |
| 4791 | specify the width as a negative integer (if both widths are negative, |
| 4792 | only the left fringe gets the specified width). |
| 4793 | |
| 4794 | Setting the width to nil (the default), restores the default fringe |
| 4795 | width which is the minimum number of pixels necessary to display any |
| 4796 | of the currently defined fringe bitmaps. The width of the built-in |
| 4797 | fringe bitmaps is 8 pixels. |
| 4798 | |
| 4799 | *** Per-window fringe and scrollbar settings |
| 4800 | |
| 4801 | **** Windows can now have their own individual fringe widths and |
| 4802 | position settings. |
| 4803 | |
| 4804 | To control the fringe widths of a window, either set the buffer-local |
| 4805 | variables `left-fringe-width', `right-fringe-width', or call |
| 4806 | `set-window-fringes'. |
| 4807 | |
| 4808 | To control the fringe position in a window, that is, whether fringes |
| 4809 | are positioned between the display margins and the window's text area, |
| 4810 | or at the edges of the window, either set the buffer-local variable |
| 4811 | `fringes-outside-margins' or call `set-window-fringes'. |
| 4812 | |
| 4813 | The function `window-fringes' can be used to obtain the current |
| 4814 | settings. To make `left-fringe-width', `right-fringe-width', and |
| 4815 | `fringes-outside-margins' take effect, you must set them before |
| 4816 | displaying the buffer in a window, or use `set-window-buffer' to force |
| 4817 | an update of the display margins. |
| 4818 | |
| 4819 | **** Windows can now have their own individual scroll-bar settings |
| 4820 | controlling the width and position of scroll-bars. |
| 4821 | |
| 4822 | To control the scroll-bar of a window, either set the buffer-local |
| 4823 | variables `scroll-bar-mode' and `scroll-bar-width', or call |
| 4824 | `set-window-scroll-bars'. The function `window-scroll-bars' can be |
| 4825 | used to obtain the current settings. To make `scroll-bar-mode' and |
| 4826 | `scroll-bar-width' take effect, you must set them before displaying |
| 4827 | the buffer in a window, or use `set-window-buffer' to force an update |
| 4828 | of the display margins. |
| 4829 | |
| 4830 | ** Redisplay features: |
| 4831 | |
| 4832 | *** `sit-for' can now be called with args (SECONDS &optional NODISP). |
| 4833 | |
| 4834 | *** Iconifying or deiconifying a frame no longer makes sit-for return. |
| 4835 | |
| 4836 | *** New function `redisplay' causes an immediate redisplay if no input is |
| 4837 | available, equivalent to (sit-for 0). The call (redisplay t) forces |
| 4838 | an immediate redisplay even if input is pending. |
| 4839 | |
| 4840 | *** New function `force-window-update' can initiate a full redisplay of |
| 4841 | one or all windows. Normally, this is not needed as changes in window |
| 4842 | contents are detected automatically. However, certain implicit |
| 4843 | changes to mode lines, header lines, or display properties may require |
| 4844 | forcing an explicit window update. |
| 4845 | |
| 4846 | *** (char-displayable-p CHAR) returns non-nil if Emacs ought to be able |
| 4847 | to display CHAR. More precisely, if the selected frame's fontset has |
| 4848 | a font to display the character set that CHAR belongs to. |
| 4849 | |
| 4850 | Fontsets can specify a font on a per-character basis; when the fontset |
| 4851 | does that, this value cannot be accurate. |
| 4852 | |
| 4853 | *** You can define multiple overlay arrows via the new |
| 4854 | variable `overlay-arrow-variable-list'. |
| 4855 | |
| 4856 | It contains a list of variables which contain overlay arrow position |
| 4857 | markers, including the original `overlay-arrow-position' variable. |
| 4858 | |
| 4859 | Each variable on this list can have individual `overlay-arrow-string' |
| 4860 | and `overlay-arrow-bitmap' properties that specify an overlay arrow |
| 4861 | string (for non-window terminals) or fringe bitmap (for window |
| 4862 | systems) to display at the corresponding overlay arrow position. |
| 4863 | If either property is not set, the default `overlay-arrow-string' or |
| 4864 | 'overlay-arrow-fringe-bitmap' will be used. |
| 4865 | |
| 4866 | *** New `line-height' and `line-spacing' properties for newline characters |
| 4867 | |
| 4868 | A newline can now have `line-height' and `line-spacing' text or overlay |
| 4869 | properties that control the height of the corresponding display row. |
| 4870 | |
| 4871 | If the `line-height' property value is t, the newline does not |
| 4872 | contribute to the height of the display row; instead the height of the |
| 4873 | newline glyph is reduced. Also, a `line-spacing' property on this |
| 4874 | newline is ignored. This can be used to tile small images or image |
| 4875 | slices without adding blank areas between the images. |
| 4876 | |
| 4877 | If the `line-height' property value is a positive integer, the value |
| 4878 | specifies the minimum line height in pixels. If necessary, the line |
| 4879 | height it increased by increasing the line's ascent. |
| 4880 | |
| 4881 | If the `line-height' property value is a float, the minimum line |
| 4882 | height is calculated by multiplying the default frame line height by |
| 4883 | the given value. |
| 4884 | |
| 4885 | If the `line-height' property value is a cons (FACE . RATIO), the |
| 4886 | minimum line height is calculated as RATIO * height of named FACE. |
| 4887 | RATIO is int or float. If FACE is t, it specifies the current face. |
| 4888 | |
| 4889 | If the `line-height' property value is a cons (nil . RATIO), the line |
| 4890 | height is calculated as RATIO * actual height of the line's contents. |
| 4891 | |
| 4892 | If the `line-height' value is a cons (HEIGHT . TOTAL), HEIGHT specifies |
| 4893 | the line height as described above, while TOTAL is any of the forms |
| 4894 | described above and specifies the total height of the line, causing a |
| 4895 | varying number of pixels to be inserted after the line to make it line |
| 4896 | exactly that many pixels high. |
| 4897 | |
| 4898 | If the `line-spacing' property value is an positive integer, the value |
| 4899 | is used as additional pixels to insert after the display line; this |
| 4900 | overrides the default frame `line-spacing' and any buffer local value of |
| 4901 | the `line-spacing' variable. |
| 4902 | |
| 4903 | If the `line-spacing' property is a float or cons, the line spacing |
| 4904 | is calculated as specified above for the `line-height' property. |
| 4905 | |
| 4906 | *** The buffer local `line-spacing' variable can now have a float value, |
| 4907 | which is used as a height relative to the default frame line height. |
| 4908 | |
| 4909 | *** Enhancements to stretch display properties |
| 4910 | |
| 4911 | The display property stretch specification form `(space PROPS)', where |
| 4912 | PROPS is a property list, now allows pixel based width and height |
| 4913 | specifications, as well as enhanced horizontal text alignment. |
| 4914 | |
| 4915 | The value of these properties can now be a (primitive) expression |
| 4916 | which is evaluated during redisplay. The following expressions |
| 4917 | are supported: |
| 4918 | |
| 4919 | EXPR ::= NUM | (NUM) | UNIT | ELEM | POS | IMAGE | FORM |
| 4920 | NUM ::= INTEGER | FLOAT | SYMBOL |
| 4921 | UNIT ::= in | mm | cm | width | height |
| 4922 | ELEM ::= left-fringe | right-fringe | left-margin | right-margin |
| 4923 | | scroll-bar | text |
| 4924 | POS ::= left | center | right |
| 4925 | FORM ::= (NUM . EXPR) | (OP EXPR ...) |
| 4926 | OP ::= + | - |
| 4927 | |
| 4928 | The form `NUM' specifies a fractional width or height of the default |
| 4929 | frame font size. The form `(NUM)' specifies an absolute number of |
| 4930 | pixels. If a symbol is specified, its buffer-local variable binding |
| 4931 | is used. The `in', `mm', and `cm' units specifies the number of |
| 4932 | pixels per inch, milli-meter, and centi-meter, resp. The `width' and |
| 4933 | `height' units correspond to the width and height of the current face |
| 4934 | font. An image specification corresponds to the width or height of |
| 4935 | the image. |
| 4936 | |
| 4937 | The `left-fringe', `right-fringe', `left-margin', `right-margin', |
| 4938 | `scroll-bar', and `text' elements specify to the width of the |
| 4939 | corresponding area of the window. |
| 4940 | |
| 4941 | The `left', `center', and `right' positions can be used with :align-to |
| 4942 | to specify a position relative to the left edge, center, or right edge |
| 4943 | of the text area. One of the above window elements (except `text') |
| 4944 | can also be used with :align-to to specify that the position is |
| 4945 | relative to the left edge of the given area. Once the base offset for |
| 4946 | a relative position has been set (by the first occurrence of one of |
| 4947 | these symbols), further occurrences of these symbols are interpreted as |
| 4948 | the width of the area. |
| 4949 | |
| 4950 | For example, to align to the center of the left-margin, use |
| 4951 | :align-to (+ left-margin (0.5 . left-margin)) |
| 4952 | |
| 4953 | If no specific base offset is set for alignment, it is always relative |
| 4954 | to the left edge of the text area. For example, :align-to 0 in a |
| 4955 | header line aligns with the first text column in the text area. |
| 4956 | |
| 4957 | The value of the form `(NUM . EXPR)' is the value of NUM multiplied by |
| 4958 | the value of the expression EXPR. For example, (2 . in) specifies a |
| 4959 | width of 2 inches, while (0.5 . IMAGE) specifies half the width (or |
| 4960 | height) of the specified image. |
| 4961 | |
| 4962 | The form `(+ EXPR ...)' adds up the value of the expressions. |
| 4963 | The form `(- EXPR ...)' negates or subtracts the value of the expressions. |
| 4964 | |
| 4965 | *** Normally, the cursor is displayed at the end of any overlay and |
| 4966 | text property string that may be present at the current window |
| 4967 | position. The cursor can now be placed on any character of such |
| 4968 | strings by giving that character a non-nil `cursor' text property. |
| 4969 | |
| 4970 | *** The display space :width and :align-to text properties are now |
| 4971 | supported on text terminals. |
| 4972 | |
| 4973 | *** Support for displaying image slices |
| 4974 | |
| 4975 | **** New display property (slice X Y WIDTH HEIGHT) can be used with |
| 4976 | an image property to display only a specific slice of the image. |
| 4977 | |
| 4978 | **** Function `insert-image' has new optional fourth arg to |
| 4979 | specify image slice (X Y WIDTH HEIGHT). |
| 4980 | |
| 4981 | **** New function `insert-sliced-image' inserts a given image as a |
| 4982 | specified number of evenly sized slices (rows x columns). |
| 4983 | |
| 4984 | *** Images can now have an associated image map via the :map property. |
| 4985 | |
| 4986 | An image map is an alist where each element has the format (AREA ID PLIST). |
| 4987 | An AREA is specified as either a rectangle, a circle, or a polygon: |
| 4988 | A rectangle is a cons (rect . ((X0 . Y0) . (X1 . Y1))) specifying the |
| 4989 | pixel coordinates of the upper left and bottom right corners. |
| 4990 | A circle is a cons (circle . ((X0 . Y0) . R)) specifying the center |
| 4991 | and the radius of the circle; R can be a float or integer. |
| 4992 | A polygon is a cons (poly . [X0 Y0 X1 Y1 ...]) where each pair in the |
| 4993 | vector describes one corner in the polygon. |
| 4994 | |
| 4995 | When the mouse pointer is above a hot-spot area of an image, the |
| 4996 | PLIST of that hot-spot is consulted; if it contains a `help-echo' |
| 4997 | property it defines a tool-tip for the hot-spot, and if it contains |
| 4998 | a `pointer' property, it defines the shape of the mouse cursor when |
| 4999 | it is over the hot-spot. See the variable `void-area-text-pointer' |
| 5000 | for possible pointer shapes. |
| 5001 | |
| 5002 | When you click the mouse when the mouse pointer is over a hot-spot, |
| 5003 | an event is composed by combining the ID of the hot-spot with the |
| 5004 | mouse event, e.g. [area4 mouse-1] if the hot-spot's ID is `area4'. |
| 5005 | |
| 5006 | *** The function `find-image' now searches in etc/images/ and etc/. |
| 5007 | The new variable `image-load-path' is a list of locations in which to |
| 5008 | search for image files. The default is to search in etc/images, then |
| 5009 | in etc/, and finally in the directories specified by `load-path'. |
| 5010 | Subdirectories of etc/ and etc/images are not recursively searched; if |
| 5011 | you put an image file in a subdirectory, you have to specify it |
| 5012 | explicitly; for example, if an image is put in etc/images/foo/bar.xpm: |
| 5013 | |
| 5014 | (defimage foo-image '((:type xpm :file "foo/bar.xpm"))) |
| 5015 | |
| 5016 | Note that all images formerly located in the lisp directory have been |
| 5017 | moved to etc/images. |
| 5018 | |
| 5019 | *** New function `image-load-path-for-library' returns a suitable |
| 5020 | search path for images relative to library. This function is useful in |
| 5021 | external packages to save users from having to update |
| 5022 | `image-load-path'. |
| 5023 | |
| 5024 | *** The new variable `max-image-size' defines the maximum size of |
| 5025 | images that Emacs will load and display. |
| 5026 | |
| 5027 | *** The new variable `display-mm-dimensions-alist' can be used to |
| 5028 | override incorrect graphical display dimensions returned by functions |
| 5029 | `display-mm-height' and `display-mm-width'. |
| 5030 | |
| 5031 | ** Mouse pointer features: |
| 5032 | |
| 5033 | *** The mouse pointer shape in void text areas (i.e. after the end of a |
| 5034 | line or below the last line in the buffer) of the text window is now |
| 5035 | controlled by the new variable `void-text-area-pointer'. The default |
| 5036 | is to use the `arrow' (non-text) pointer. Other choices are `text' |
| 5037 | (or nil), `hand', `vdrag', `hdrag', `modeline', and `hourglass'. |
| 5038 | |
| 5039 | *** The mouse pointer shape over an image can now be controlled by the |
| 5040 | :pointer image property. |
| 5041 | |
| 5042 | *** The mouse pointer shape over ordinary text or images can now be |
| 5043 | controlled/overridden via the `pointer' text property. |
| 5044 | |
| 5045 | ** Mouse event enhancements: |
| 5046 | |
| 5047 | *** All mouse events now include a buffer position regardless of where |
| 5048 | you clicked. For mouse clicks in window margins and fringes, this is |
| 5049 | a sensible buffer position corresponding to the surrounding text. |
| 5050 | |
| 5051 | *** Mouse events for clicks on window fringes now specify `left-fringe' |
| 5052 | or `right-fringe' as the area. |
| 5053 | |
| 5054 | *** Mouse events include actual glyph column and row for all event types |
| 5055 | and all areas. |
| 5056 | |
| 5057 | *** Mouse events can now indicate an image object clicked on. |
| 5058 | |
| 5059 | *** Mouse events include relative X and Y pixel coordinates relative to |
| 5060 | the top left corner of the object (image or character) clicked on. |
| 5061 | |
| 5062 | *** Mouse events include the pixel width and height of the object |
| 5063 | (image or character) clicked on. |
| 5064 | |
| 5065 | *** Function `mouse-set-point' now works for events outside text area. |
| 5066 | |
| 5067 | *** `posn-point' now returns buffer position for non-text area events. |
| 5068 | |
| 5069 | *** New function `posn-area' returns window area clicked on (nil means |
| 5070 | text area). |
| 5071 | |
| 5072 | *** New function `posn-actual-col-row' returns the actual glyph coordinates |
| 5073 | of the mouse event position. |
| 5074 | |
| 5075 | *** New functions 'posn-object', 'posn-object-x-y', 'posn-object-width-height'. |
| 5076 | |
| 5077 | These return the image or string object of a mouse click, the X and Y |
| 5078 | pixel coordinates relative to the top left corner of that object, and |
| 5079 | the total width and height of that object. |
| 5080 | |
| 5081 | ** Text property and overlay changes: |
| 5082 | |
| 5083 | *** Arguments for `remove-overlays' are now optional, so that you can |
| 5084 | remove all overlays in the buffer with just (remove-overlays). |
| 5085 | |
| 5086 | *** New variable `char-property-alias-alist'. |
| 5087 | |
| 5088 | This variable allows you to create alternative names for text |
| 5089 | properties. It works at the same level as `default-text-properties', |
| 5090 | although it applies to overlays as well. This variable was introduced |
| 5091 | to implement the `font-lock-face' property. |
| 5092 | |
| 5093 | *** New function `get-char-property-and-overlay' accepts the same |
| 5094 | arguments as `get-char-property' and returns a cons whose car is the |
| 5095 | return value of `get-char-property' called with those arguments and |
| 5096 | whose cdr is the overlay in which the property was found, or nil if |
| 5097 | it was found as a text property or not found at all. |
| 5098 | |
| 5099 | *** The new function `remove-list-of-text-properties'. |
| 5100 | |
| 5101 | It is like `remove-text-properties' except that it takes a list of |
| 5102 | property names as argument rather than a property list. |
| 5103 | |
| 5104 | ** Face changes |
| 5105 | |
| 5106 | *** The variable `facemenu-unlisted-faces' has been removed. |
| 5107 | Emacs has a lot more faces than in the past, and nearly all of them |
| 5108 | needed to be excluded. The new variable `facemenu-listed-faces' lists |
| 5109 | the faces to include in the face menu. |
| 5110 | |
| 5111 | *** The new face attribute condition `min-colors' can be used to tailor |
| 5112 | the face color to the number of colors supported by a display, and |
| 5113 | define the foreground and background colors accordingly so that they |
| 5114 | look best on a terminal that supports at least this many colors. This |
| 5115 | is now the preferred method for defining default faces in a way that |
| 5116 | makes a good use of the capabilities of the display. |
| 5117 | |
| 5118 | *** New function `display-supports-face-attributes-p' can be used to test |
| 5119 | whether a given set of face attributes is actually displayable. |
| 5120 | |
| 5121 | A new predicate `supports' has also been added to the `defface' face |
| 5122 | specification language, which can be used to do this test for faces |
| 5123 | defined with `defface'. |
| 5124 | |
| 5125 | *** The special treatment of faces whose names are of the form `fg:COLOR' |
| 5126 | or `bg:COLOR' has been removed. Lisp programs should use the |
| 5127 | `defface' facility for defining faces with specific colors, or use |
| 5128 | the feature of specifying the face attributes :foreground and :background |
| 5129 | directly in the `face' property instead of using a named face. |
| 5130 | |
| 5131 | *** The first face specification element in a defface can specify |
| 5132 | `default' instead of frame classification. Then its attributes act as |
| 5133 | defaults that apply to all the subsequent cases (and can be overridden |
| 5134 | by them). |
| 5135 | |
| 5136 | *** The function `face-differs-from-default-p' now truly checks |
| 5137 | whether the given face displays differently from the default face or |
| 5138 | not (previously it did only a very cursory check). |
| 5139 | |
| 5140 | *** `face-attribute', `face-foreground', `face-background', `face-stipple'. |
| 5141 | |
| 5142 | These now accept a new optional argument, INHERIT, which controls how |
| 5143 | face inheritance is used when determining the value of a face |
| 5144 | attribute. |
| 5145 | |
| 5146 | *** New functions `face-attribute-relative-p' and `merge-face-attribute' |
| 5147 | help with handling relative face attributes. |
| 5148 | |
| 5149 | *** The priority of faces in an :inherit attribute face list is reversed. |
| 5150 | |
| 5151 | If a face contains an :inherit attribute with a list of faces, earlier |
| 5152 | faces in the list override later faces in the list; in previous |
| 5153 | releases of Emacs, the order was the opposite. This change was made |
| 5154 | so that :inherit face lists operate identically to face lists in text |
| 5155 | `face' properties. |
| 5156 | |
| 5157 | *** The variable `face-font-rescale-alist' specifies how much larger |
| 5158 | (or smaller) font we should use. For instance, if the value is |
| 5159 | '((SOME-FONTNAME-PATTERN . 1.3)) and a face requests a font of 10 |
| 5160 | point, we actually use a font of 13 point if the font matches |
| 5161 | SOME-FONTNAME-PATTERN. |
| 5162 | |
| 5163 | *** On terminals, faces with the :inverse-video attribute are displayed |
| 5164 | with swapped foreground and background colors even when one of them is |
| 5165 | not specified. In previous releases of Emacs, if either foreground |
| 5166 | or background color was unspecified, colors were not swapped. This |
| 5167 | was inconsistent with the face behavior under X. |
| 5168 | |
| 5169 | *** `set-fontset-font', `fontset-info', `fontset-font' now operate on |
| 5170 | the default fontset if the argument NAME is nil.. |
| 5171 | |
| 5172 | ** Font-Lock changes: |
| 5173 | |
| 5174 | *** New special text property `font-lock-face'. |
| 5175 | |
| 5176 | This property acts like the `face' property, but it is controlled by |
| 5177 | M-x font-lock-mode. It is not, strictly speaking, a builtin text |
| 5178 | property. Instead, it is implemented inside font-core.el, using the |
| 5179 | new variable `char-property-alias-alist'. |
| 5180 | |
| 5181 | *** font-lock can manage arbitrary text-properties beside `face'. |
| 5182 | |
| 5183 | **** the FACENAME returned in `font-lock-keywords' can be a list of the |
| 5184 | form (face FACE PROP1 VAL1 PROP2 VAL2 ...) so you can set other |
| 5185 | properties than `face'. |
| 5186 | |
| 5187 | **** `font-lock-extra-managed-props' can be set to make sure those |
| 5188 | extra properties are automatically cleaned up by font-lock. |
| 5189 | |
| 5190 | *** jit-lock obeys a new text-property `jit-lock-defer-multiline'. |
| 5191 | |
| 5192 | If a piece of text with that property gets contextually refontified |
| 5193 | (see `jit-lock-defer-contextually'), then all of that text will |
| 5194 | be refontified. This is useful when the syntax of a textual element |
| 5195 | depends on text several lines further down (and when `font-lock-multiline' |
| 5196 | is not appropriate to solve that problem). For example in Perl: |
| 5197 | |
| 5198 | s{ |
| 5199 | foo |
| 5200 | }{ |
| 5201 | bar |
| 5202 | }e |
| 5203 | |
| 5204 | Adding/removing the last `e' changes the `bar' from being a piece of |
| 5205 | text to being a piece of code, so you'd put a `jit-lock-defer-multiline' |
| 5206 | property over the second half of the command to force (deferred) |
| 5207 | refontification of `bar' whenever the `e' is added/removed. |
| 5208 | |
| 5209 | *** `font-lock-extend-region-functions' makes it possible to alter the way |
| 5210 | the fontification region is chosen. This can be used to prevent rounding |
| 5211 | up to whole lines, or to extend the region to include all related lines |
| 5212 | of multiline constructs so that such constructs get properly recognized. |
| 5213 | |
| 5214 | ** Major mode mechanism changes: |
| 5215 | |
| 5216 | *** New variable `magic-mode-alist' determines major mode for a file by |
| 5217 | looking at the file contents. It takes precedence over `auto-mode-alist'. |
| 5218 | |
| 5219 | *** New variable `magic-fallback-mode-alist' determines major mode for a file by |
| 5220 | looking at the file contents. It is handled after `auto-mode-alist', |
| 5221 | only if `auto-mode-alist' (and `magic-mode-alist') says nothing about the file. |
| 5222 | |
| 5223 | *** XML or SGML major mode is selected when file starts with an `<?xml' |
| 5224 | or `<!DOCTYPE' declaration. |
| 5225 | |
| 5226 | *** An interpreter magic line (if present) takes precedence over the |
| 5227 | file name when setting the major mode. |
| 5228 | |
| 5229 | *** If new variable `auto-mode-case-fold' is set to a non-nil value, |
| 5230 | Emacs will perform a second case-insensitive search through |
| 5231 | `auto-mode-alist' if the first case-sensitive search fails. This |
| 5232 | means that a file FILE.TXT is opened in text-mode, and a file |
| 5233 | PROG.HTML is opened in html-mode. Note however, that independent of |
| 5234 | this setting, *.C files are usually recognized as C++ files. It also |
| 5235 | has no effect on systems with case-insensitive file names. |
| 5236 | |
| 5237 | *** All major mode functions should now run the new normal hook |
| 5238 | `after-change-major-mode-hook', at their very end, after the mode |
| 5239 | hooks. `run-mode-hooks' does this automatically. |
| 5240 | |
| 5241 | *** Major modes can define `eldoc-documentation-function' |
| 5242 | locally to provide Eldoc functionality by some method appropriate to |
| 5243 | the language. |
| 5244 | |
| 5245 | *** Use the new function `run-mode-hooks' to run the major mode's mode hook. |
| 5246 | |
| 5247 | *** The new function `run-mode-hooks' and the new macro `delay-mode-hooks' |
| 5248 | are used by `define-derived-mode' to make sure the mode hook for the |
| 5249 | parent mode is run at the end of the child mode. |
| 5250 | |
| 5251 | *** `define-derived-mode' by default creates a new empty abbrev table. |
| 5252 | It does not copy abbrevs from the parent mode's abbrev table. |
| 5253 | |
| 5254 | *** If a major mode function has a non-nil `no-clone-indirect' |
| 5255 | property, `clone-indirect-buffer' signals an error if you use |
| 5256 | it in that buffer. |
| 5257 | |
| 5258 | ** Minor mode changes: |
| 5259 | |
| 5260 | *** `define-minor-mode' now accepts arbitrary additional keyword arguments |
| 5261 | and simply passes them to `defcustom', if applicable. |
| 5262 | |
| 5263 | *** `define-globalized-minor-mode'. |
| 5264 | |
| 5265 | This is a new name for what was formerly called |
| 5266 | `easy-mmode-define-global-mode'. The old name remains as an alias. |
| 5267 | |
| 5268 | *** `minor-mode-list' now holds a list of minor mode commands. |
| 5269 | |
| 5270 | ** Command loop changes: |
| 5271 | |
| 5272 | *** The new function `called-interactively-p' does what many people |
| 5273 | have mistakenly believed `interactive-p' to do: it returns t if the |
| 5274 | calling function was called through `call-interactively'. |
| 5275 | |
| 5276 | Only use this when you cannot solve the problem by adding a new |
| 5277 | INTERACTIVE argument to the command. |
| 5278 | |
| 5279 | *** The function `commandp' takes an additional optional argument. |
| 5280 | |
| 5281 | If it is non-nil, then `commandp' checks for a function that could be |
| 5282 | called with `call-interactively', and does not return t for keyboard |
| 5283 | macros. |
| 5284 | |
| 5285 | *** When a command returns, the command loop moves point out from |
| 5286 | within invisible text, in the same way it moves out from within text |
| 5287 | covered by an image or composition property. |
| 5288 | |
| 5289 | This makes it generally unnecessary to mark invisible text as intangible. |
| 5290 | This is particularly good because the intangible property often has |
| 5291 | unexpected side-effects since the property applies to everything |
| 5292 | (including `goto-char', ...) whereas this new code is only run after |
| 5293 | `post-command-hook' and thus does not care about intermediate states. |
| 5294 | |
| 5295 | *** If a command sets `transient-mark-mode' to `only', that |
| 5296 | enables Transient Mark mode for the following command only. |
| 5297 | During that following command, the value of `transient-mark-mode' |
| 5298 | is `identity'. If it is still `identity' at the end of the command, |
| 5299 | the next return to the command loop changes to nil. |
| 5300 | |
| 5301 | *** Both the variable and the function `disabled-command-hook' have |
| 5302 | been renamed to `disabled-command-function'. The variable |
| 5303 | `disabled-command-hook' has been kept as an obsolete alias. |
| 5304 | |
| 5305 | *** `emacsserver' now runs `pre-command-hook' and `post-command-hook' |
| 5306 | when it receives a request from emacsclient. |
| 5307 | |
| 5308 | *** `current-idle-time' reports how long Emacs has been idle. |
| 5309 | |
| 5310 | ** Lisp file loading changes: |
| 5311 | |
| 5312 | *** `load-history' can now have elements of the form (t . FUNNAME), |
| 5313 | which means FUNNAME was previously defined as an autoload (before the |
| 5314 | current file redefined it). |
| 5315 | |
| 5316 | *** `load-history' now records (defun . FUNNAME) when a function is |
| 5317 | defined. For a variable, it records just the variable name. |
| 5318 | |
| 5319 | *** The function `symbol-file' can now search specifically for function, |
| 5320 | variable or face definitions. |
| 5321 | |
| 5322 | *** `provide' and `featurep' now accept an optional second argument |
| 5323 | to test/provide subfeatures. Also `provide' now checks `after-load-alist' |
| 5324 | and runs any code associated with the provided feature. |
| 5325 | |
| 5326 | *** The variable `recursive-load-depth-limit' has been deleted. |
| 5327 | Emacs now signals an error if the same file is loaded with more |
| 5328 | than 3 levels of nesting. |
| 5329 | |
| 5330 | ** Byte compiler changes: |
| 5331 | |
| 5332 | *** The byte compiler now displays the actual line and character |
| 5333 | position of errors, where possible. Additionally, the form of its |
| 5334 | warning and error messages have been brought into line with GNU standards |
| 5335 | for these. As a result, you can use next-error and friends on the |
| 5336 | compilation output buffer. |
| 5337 | |
| 5338 | *** The new macro `with-no-warnings' suppresses all compiler warnings |
| 5339 | inside its body. In terms of execution, it is equivalent to `progn'. |
| 5340 | |
| 5341 | *** You can avoid warnings for possibly-undefined symbols with a |
| 5342 | simple convention that the compiler understands. (This is mostly |
| 5343 | useful in code meant to be portable to different Emacs versions.) |
| 5344 | Write forms like the following, or code that macroexpands into such |
| 5345 | forms: |
| 5346 | |
| 5347 | (if (fboundp 'foo) <then> <else>) |
| 5348 | (if (boundp 'foo) <then> <else) |
| 5349 | |
| 5350 | In the first case, using `foo' as a function inside the <then> form |
| 5351 | won't produce a warning if it's not defined as a function, and in the |
| 5352 | second case, using `foo' as a variable won't produce a warning if it's |
| 5353 | unbound. The test must be in exactly one of the above forms (after |
| 5354 | macro expansion), but such tests can be nested. Note that `when' and |
| 5355 | `unless' expand to `if', but `cond' doesn't. |
| 5356 | |
| 5357 | *** `(featurep 'xemacs)' is treated by the compiler as nil. This |
| 5358 | helps to avoid noisy compiler warnings in code meant to run under both |
| 5359 | Emacs and XEmacs and can sometimes make the result significantly more |
| 5360 | efficient. Since byte code from recent versions of XEmacs won't |
| 5361 | generally run in Emacs and vice versa, this optimization doesn't lose |
| 5362 | you anything. |
| 5363 | |
| 5364 | *** The local variable `no-byte-compile' in Lisp files is now obeyed. |
| 5365 | |
| 5366 | *** When a Lisp file uses CL functions at run-time, compiling the file |
| 5367 | now issues warnings about these calls, unless the file performs |
| 5368 | (require 'cl) when loaded. |
| 5369 | |
| 5370 | ** Frame operations: |
| 5371 | |
| 5372 | *** New functions `frame-current-scroll-bars' and `window-current-scroll-bars'. |
| 5373 | |
| 5374 | These functions return the current locations of the vertical and |
| 5375 | horizontal scroll bars in a frame or window. |
| 5376 | |
| 5377 | *** The new function `modify-all-frames-parameters' modifies parameters |
| 5378 | for all (existing and future) frames. |
| 5379 | |
| 5380 | *** The new frame parameter `tty-color-mode' specifies the mode to use |
| 5381 | for color support on character terminal frames. Its value can be a |
| 5382 | number of colors to support, or a symbol. See the Emacs Lisp |
| 5383 | Reference manual for more detailed documentation. |
| 5384 | |
| 5385 | *** When using non-toolkit scroll bars with the default width, |
| 5386 | the `scroll-bar-width' frame parameter value is nil. |
| 5387 | |
| 5388 | ** Mode line changes: |
| 5389 | |
| 5390 | *** New function `format-mode-line'. |
| 5391 | |
| 5392 | This returns the mode line or header line of the selected (or a |
| 5393 | specified) window as a string with or without text properties. |
| 5394 | |
| 5395 | *** The new mode-line construct `(:propertize ELT PROPS...)' can be |
| 5396 | used to add text properties to mode-line elements. |
| 5397 | |
| 5398 | *** The new `%i' and `%I' constructs for `mode-line-format' can be used |
| 5399 | to display the size of the accessible part of the buffer on the mode |
| 5400 | line. |
| 5401 | |
| 5402 | *** Mouse-face on mode-line (and header-line) is now supported. |
| 5403 | |
| 5404 | ** Menu manipulation changes: |
| 5405 | |
| 5406 | *** To manipulate the File menu using easy-menu, you must specify the |
| 5407 | proper name "file". In previous Emacs versions, you had to specify |
| 5408 | "files", even though the menu item itself was changed to say "File" |
| 5409 | several versions ago. |
| 5410 | |
| 5411 | *** The dummy function keys made by easy-menu are now always lower case. |
| 5412 | If you specify the menu item name "Ada", for instance, it uses `ada' |
| 5413 | as the "key" bound by that key binding. |
| 5414 | |
| 5415 | This is relevant only if Lisp code looks for the bindings that were |
| 5416 | made with easy-menu. |
| 5417 | |
| 5418 | *** `easy-menu-define' now allows you to use nil for the symbol name |
| 5419 | if you don't need to give the menu a name. If you install the menu |
| 5420 | into other keymaps right away (MAPS is non-nil), it usually doesn't |
| 5421 | need to have a name. |
| 5422 | |
| 5423 | ** Mule changes: |
| 5424 | |
| 5425 | *** Already true in Emacs 21.1, but not emphasized clearly enough: |
| 5426 | |
| 5427 | Multibyte buffers can now faithfully record all 256 character codes |
| 5428 | from 0 to 255. As a result, most of the past reasons to use unibyte |
| 5429 | buffers no longer exist. We only know of three reasons to use them |
| 5430 | now: |
| 5431 | |
| 5432 | 1. If you prefer to use unibyte text all of the time. |
| 5433 | |
| 5434 | 2. For reading files into temporary buffers, when you want to avoid |
| 5435 | the time it takes to convert the format. |
| 5436 | |
| 5437 | 3. For binary files where format conversion would be pointless and |
| 5438 | wasteful. |
| 5439 | |
| 5440 | *** The new variable `auto-coding-functions' lets you specify functions |
| 5441 | to examine a file being visited and deduce the proper coding system |
| 5442 | for it. (If the coding system is detected incorrectly for a specific |
| 5443 | file, you can put a `coding:' tags to override it.) |
| 5444 | |
| 5445 | *** The new variable `ascii-case-table' stores the case table for the |
| 5446 | ascii character set. Language environments (such as Turkish) may |
| 5447 | alter the case correspondences of ASCII characters. This variable |
| 5448 | saves the original ASCII case table before any such changes. |
| 5449 | |
| 5450 | *** The new function `merge-coding-systems' fills in unspecified aspects |
| 5451 | of one coding system from another coding system. |
| 5452 | |
| 5453 | *** New coding system property `mime-text-unsuitable' indicates that |
| 5454 | the coding system's `mime-charset' is not suitable for MIME text |
| 5455 | parts, e.g. utf-16. |
| 5456 | |
| 5457 | *** New function `decode-coding-inserted-region' decodes a region as if |
| 5458 | it is read from a file without decoding. |
| 5459 | |
| 5460 | *** New CCL functions `lookup-character' and `lookup-integer' access |
| 5461 | hash tables defined by the Lisp function `define-translation-hash-table'. |
| 5462 | |
| 5463 | *** New function `quail-find-key' returns a list of keys to type in the |
| 5464 | current input method to input a character. |
| 5465 | |
| 5466 | *** `set-buffer-file-coding-system' now takes an additional argument, |
| 5467 | NOMODIFY. If it is non-nil, it means don't mark the buffer modified. |
| 5468 | |
| 5469 | ** Operating system access: |
| 5470 | |
| 5471 | *** The new primitive `get-internal-run-time' returns the processor |
| 5472 | run time used by Emacs since start-up. |
| 5473 | |
| 5474 | *** Functions `user-uid' and `user-real-uid' now return floats if the |
| 5475 | user UID doesn't fit in a Lisp integer. Function `user-full-name' |
| 5476 | accepts a float as UID parameter. |
| 5477 | |
| 5478 | *** New function `locale-info' accesses locale information. |
| 5479 | |
| 5480 | *** On MS Windows, locale-coding-system is used to interact with the OS. |
| 5481 | The Windows specific variable w32-system-coding-system, which was |
| 5482 | formerly used for that purpose is now an alias for locale-coding-system. |
| 5483 | |
| 5484 | *** New function `redirect-debugging-output' can be used to redirect |
| 5485 | debugging output on the stderr file handle to a file. |
| 5486 | |
| 5487 | ** GC changes: |
| 5488 | |
| 5489 | *** New variable `gc-cons-percentage' automatically grows the GC cons threshold |
| 5490 | as the heap size increases. |
| 5491 | |
| 5492 | *** New variables `gc-elapsed' and `gcs-done' provide extra information |
| 5493 | on garbage collection. |
| 5494 | |
| 5495 | *** The normal hook `post-gc-hook' is run at the end of garbage collection. |
| 5496 | |
| 5497 | The hook is run with GC inhibited, so use it with care. |
| 5498 | |
| 5499 | ** Miscellaneous: |
| 5500 | |
| 5501 | *** A number of hooks have been renamed to better follow the conventions: |
| 5502 | |
| 5503 | `find-file-hooks' to `find-file-hook', |
| 5504 | `find-file-not-found-hooks' to `find-file-not-found-functions', |
| 5505 | `write-file-hooks' to `write-file-functions', |
| 5506 | `write-contents-hooks' to `write-contents-functions', |
| 5507 | `x-lost-selection-hooks' to `x-lost-selection-functions', |
| 5508 | `x-sent-selection-hooks' to `x-sent-selection-functions', |
| 5509 | `delete-frame-hook' to `delete-frame-functions'. |
| 5510 | |
| 5511 | In each case the old name remains as an alias for the moment. |
| 5512 | |
| 5513 | *** Variable `local-write-file-hooks' is marked obsolete. |
| 5514 | |
| 5515 | Use the LOCAL arg of `add-hook'. |
| 5516 | |
| 5517 | *** New function `x-send-client-message' sends a client message when |
| 5518 | running under X. |
| 5519 | \f |
| 5520 | * New Packages for Lisp Programming in Emacs 22.1 |
| 5521 | |
| 5522 | ** The new library button.el implements simple and fast `clickable |
| 5523 | buttons' in Emacs buffers. Buttons are much lighter-weight than the |
| 5524 | `widgets' implemented by widget.el, and can be used by lisp code that |
| 5525 | doesn't require the full power of widgets. Emacs uses buttons for |
| 5526 | such things as help and apropos buffers. |
| 5527 | |
| 5528 | ** The new library tree-widget.el provides a widget to display a set |
| 5529 | of hierarchical data as an outline. For example, the tree-widget is |
| 5530 | well suited to display a hierarchy of directories and files. |
| 5531 | |
| 5532 | ** The new library bindat.el provides functions to unpack and pack |
| 5533 | binary data structures, such as network packets, to and from Lisp |
| 5534 | data structures. |
| 5535 | |
| 5536 | ** master-mode.el implements a minor mode for scrolling a slave |
| 5537 | buffer without leaving your current buffer, the master buffer. |
| 5538 | |
| 5539 | It can be used by sql.el, for example: the SQL buffer is the master |
| 5540 | and its SQLi buffer is the slave. This allows you to scroll the SQLi |
| 5541 | buffer containing the output from the SQL buffer containing the |
| 5542 | commands. |
| 5543 | |
| 5544 | This is how to use sql.el and master.el together: the variable |
| 5545 | sql-buffer contains the slave buffer. It is a local variable in the |
| 5546 | SQL buffer. |
| 5547 | |
| 5548 | (add-hook 'sql-mode-hook |
| 5549 | (function (lambda () |
| 5550 | (master-mode t) |
| 5551 | (master-set-slave sql-buffer)))) |
| 5552 | (add-hook 'sql-set-sqli-hook |
| 5553 | (function (lambda () |
| 5554 | (master-set-slave sql-buffer)))) |
| 5555 | |
| 5556 | ** The new library benchmark.el does timing measurements on Lisp code. |
| 5557 | |
| 5558 | This includes measuring garbage collection time. |
| 5559 | |
| 5560 | ** The new library testcover.el does test coverage checking. |
| 5561 | |
| 5562 | This is so you can tell whether you've tested all paths in your Lisp |
| 5563 | code. It works with edebug. |
| 5564 | |
| 5565 | The function `testcover-start' instruments all functions in a given |
| 5566 | file. Then test your code. The function `testcover-mark-all' adds |
| 5567 | overlay "splotches" to the Lisp file's buffer to show where coverage |
| 5568 | is lacking. The command `testcover-next-mark' (bind it to a key!) |
| 5569 | will move point forward to the next spot that has a splotch. |
| 5570 | |
| 5571 | Normally, a red splotch indicates the form was never completely |
| 5572 | evaluated; a brown splotch means it always evaluated to the same |
| 5573 | value. The red splotches are skipped for forms that can't possibly |
| 5574 | complete their evaluation, such as `error'. The brown splotches are |
| 5575 | skipped for forms that are expected to always evaluate to the same |
| 5576 | value, such as (setq x 14). |
| 5577 | |
| 5578 | For difficult cases, you can add do-nothing macros to your code to |
| 5579 | help out the test coverage tool. The macro `noreturn' suppresses a |
| 5580 | red splotch. It is an error if the argument to `noreturn' does |
| 5581 | return. The macro `1value' suppresses a brown splotch for its argument. |
| 5582 | This macro is a no-op except during test-coverage -- then it signals |
| 5583 | an error if the argument actually returns differing values. |
| 5584 | |
| 5585 | |
| 5586 | \f |
| 5587 | ---------------------------------------------------------------------- |
| 5588 | This file is part of GNU Emacs. |
| 5589 | |
| 5590 | GNU Emacs is free software: you can redistribute it and/or modify |
| 5591 | it under the terms of the GNU General Public License as published by |
| 5592 | the Free Software Foundation, either version 3 of the License, or |
| 5593 | (at your option) any later version. |
| 5594 | |
| 5595 | GNU Emacs is distributed in the hope that it will be useful, |
| 5596 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 5597 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 5598 | GNU General Public License for more details. |
| 5599 | |
| 5600 | You should have received a copy of the GNU General Public License |
| 5601 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
| 5602 | |
| 5603 | \f |
| 5604 | Local variables: |
| 5605 | mode: outline |
| 5606 | paragraph-separate: "[ \f]*$" |
| 5607 | end: |