1GNU Emacs NEWS -- history of user-visible changes. 2006-05-31 2 3Copyright (C) 2000-2021 Free Software Foundation, Inc. 4See the end of the file for license conditions. 5 6 7This file is about changes in Emacs version 21. 8 9 10 11* Emacs 21.4 is a bug-fix release with no user-visible changes. 12 13 14 15* Installation changes in Emacs 21.3 16 17** Support for GNU/Linux on little-endian MIPS and on IBM S390 has 18been added. 19 20 21* Changes in Emacs 21.3 22 23** The obsolete C mode (c-mode.el) has been removed to avoid problems 24with Custom. 25 26** UTF-16 coding systems are available, encoding the same characters 27as mule-utf-8. 28 29** There is a new language environment for UTF-8 (set up automatically 30in UTF-8 locales). 31 32** Translation tables are available between equivalent characters in 33different Emacs charsets -- for instance `e with acute' coming from the 34Latin-1 and Latin-2 charsets. User options `unify-8859-on-encoding-mode' 35and `unify-8859-on-decoding-mode' respectively turn on translation 36between ISO 8859 character sets (`unification') on encoding 37(e.g. writing a file) and decoding (e.g. reading a file). Note that 38`unify-8859-on-encoding-mode' is useful and safe, but 39`unify-8859-on-decoding-mode' can cause text to change when you read 40it and write it out again without edits, so it is not generally advisable. 41By default `unify-8859-on-encoding-mode' is turned on. 42 43** In Emacs running on the X window system, the default value of 44`selection-coding-system' is now `compound-text-with-extensions'. 45 46If you want the old behavior, set selection-coding-system to 47compound-text, which may be significantly more efficient. Using 48compound-text-with-extensions seems to be necessary only for decoding 49text from applications under XFree86 4.2, whose behavior is actually 50contrary to the compound text specification. 51 52 53 54* Installation changes in Emacs 21.2 55 56** Support for BSD/OS 5.0 has been added. 57 58** Support for AIX 5.1 was added. 59 60 61* Changes in Emacs 21.2 62 63** Emacs now supports compound-text extended segments in X selections. 64 65X applications can use `extended segments' to encode characters in 66compound text that belong to character sets which are not part of the 67list of approved standard encodings for X, e.g. Big5. To paste 68selections with such characters into Emacs, use the new coding system 69compound-text-with-extensions as the value of selection-coding-system. 70 71** The default values of `tooltip-delay' and `tooltip-hide-delay' 72were changed. 73 74** On terminals whose erase-char is ^H (Backspace), Emacs 75now uses normal-erase-is-backspace-mode. 76 77** When the *scratch* buffer is recreated, its mode is set from 78initial-major-mode, which normally is lisp-interaction-mode, 79instead of using default-major-mode. 80 81** The new option `Info-scroll-prefer-subnodes' causes Info to behave 82like the stand-alone Info reader (from the GNU Texinfo package) as far 83as motion between nodes and their subnodes is concerned. If it is t 84(the default), Emacs behaves as before when you type SPC in a menu: it 85visits the subnode pointed to by the first menu entry. If this option 86is nil, SPC scrolls to the end of the current node, and only then goes 87to the first menu item, like the stand-alone reader does. 88 89This change was already in Emacs 21.1, but wasn't advertised in the 90NEWS. 91 92 93* Lisp Changes in Emacs 21.2 94 95** The meanings of scroll-up-aggressively and scroll-down-aggressively 96have been interchanged, so that the former now controls scrolling up, 97and the latter now controls scrolling down. 98 99** The variable `compilation-parse-errors-filename-function' can 100be used to transform filenames found in compilation output. 101 102 103 104* Installation Changes in Emacs 21.1 105 106See the INSTALL file for information on installing extra libraries and 107fonts to take advantage of the new graphical features and extra 108charsets in this release. 109 110** Support for GNU/Linux on IA64 machines has been added. 111 112** Support for LynxOS has been added. 113 114** There are new configure options associated with the support for 115images and toolkit scrollbars. Use the --help option in `configure' 116to list them. 117 118** You can build a 64-bit Emacs for SPARC/Solaris systems which 119support 64-bit executables and also on Irix 6.5. This increases the 120maximum buffer size. See etc/MACHINES for instructions. Changes to 121build on other 64-bit systems should be straightforward modulo any 122necessary changes to unexec. 123 124** There is a new configure option `--disable-largefile' to omit 125Unix-98-style support for large files if that is available. 126 127** There is a new configure option `--without-xim' that instructs 128Emacs to not use X Input Methods (XIM), if these are available. 129 130** `movemail' defaults to supporting POP. You can turn this off using 131the --without-pop configure option, should that be necessary. 132 133** This version can be built for the Macintosh, but does not implement 134all of the new display features described below. The port currently 135lacks unexec, asynchronous processes, and networking support. See the 136"Emacs and the Mac OS" appendix in the Emacs manual, for the 137description of aspects specific to the Mac. 138 139** Note that the MS-Windows port does not yet implement various of the 140new display features described below. 141 142 143* Changes in Emacs 21.1 144 145** Emacs has a new redisplay engine. 146 147The new redisplay handles characters of variable width and height. 148Italic text can be used without redisplay problems. Fonts containing 149oversized characters, i.e. characters larger than the logical height 150of a font can be used. Images of various formats can be displayed in 151the text. 152 153** Emacs has a new face implementation. 154 155The new faces no longer fundamentally use X font names to specify the 156font. Instead, each face has several independent attributes--family, 157height, width, weight and slant--that it may or may not specify. 158These attributes can be merged from various faces, and then together 159specify a font. 160 161Faces are supported on terminals that can display color or fonts. 162These terminal capabilities are auto-detected. Details can be found 163under Lisp changes, below. 164 165** Emacs can display faces on TTY frames. 166 167Emacs automatically detects terminals that are able to display colors. 168Faces with a weight greater than normal are displayed extra-bright, if 169the terminal supports it. Faces with a weight less than normal and 170italic faces are displayed dimmed, if the terminal supports it. 171Underlined faces are displayed underlined if possible. Other face 172attributes such as `overline', `strike-through', and `box' are ignored 173on terminals. 174 175The command-line options `-fg COLOR', `-bg COLOR', and `-rv' are now 176supported on character terminals. 177 178Emacs automatically remaps all X-style color specifications to one of 179the colors supported by the terminal. This means you could have the 180same color customizations that work both on a windowed display and on 181a TTY or when Emacs is invoked with the -nw option. 182 183** New default font is Courier 12pt under X. 184 185** Sound support 186 187Emacs supports playing sound files on GNU/Linux and FreeBSD (Voxware 188driver and native BSD driver, a.k.a. Luigi's driver). Currently 189supported file formats are RIFF-WAVE (*.wav) and Sun Audio (*.au). 190You must configure Emacs with the option `--with-sound=yes' to enable 191sound support. 192 193** Emacs now resizes mini-windows if appropriate. 194 195If a message is longer than one line, or minibuffer contents are 196longer than one line, Emacs can resize the minibuffer window unless it 197is on a frame of its own. You can control resizing and the maximum 198minibuffer window size by setting the following variables: 199 200- User option: max-mini-window-height 201 202Maximum height for resizing mini-windows. If a float, it specifies a 203fraction of the mini-window frame's height. If an integer, it 204specifies a number of lines. 205 206Default is 0.25. 207 208- User option: resize-mini-windows 209 210How to resize mini-windows. If nil, don't resize. If t, always 211resize to fit the size of the text. If `grow-only', let mini-windows 212grow only, until they become empty, at which point they are shrunk 213again. 214 215Default is `grow-only'. 216 217** LessTif support. 218 219Emacs now runs with the LessTif toolkit (see 220<http://lesstif.sourceforge.net>). You will need version 0.92.26, or later. 221 222** LessTif/Motif file selection dialog. 223 224When Emacs is configured to use LessTif or Motif, reading a file name 225from a menu will pop up a file selection dialog if `use-dialog-box' is 226non-nil. 227 228** File selection dialog on MS-Windows is supported. 229 230When a file is visited by clicking File->Open, the MS-Windows version 231now pops up a standard file selection dialog where you can select a 232file to visit. File->Save As also pops up that dialog. 233 234** Toolkit scroll bars. 235 236Emacs now uses toolkit scroll bars if available. When configured for 237LessTif/Motif, it will use that toolkit's scroll bar. Otherwise, when 238configured for Lucid and Athena widgets, it will use the Xaw3d scroll 239bar if Xaw3d is available. You can turn off the use of toolkit scroll 240bars by specifying `--with-toolkit-scroll-bars=no' when configuring 241Emacs. 242 243When you encounter problems with the Xaw3d scroll bar, watch out how 244Xaw3d is compiled on your system. If the Makefile generated from 245Xaw3d's Imakefile contains a `-DNARROWPROTO' compiler option, and your 246Emacs system configuration file `s/your-system.h' does not contain a 247define for NARROWPROTO, you might consider adding it. Take 248`s/freebsd.h' as an example. 249 250Alternatively, if you don't have access to the Xaw3d source code, take 251a look at your system's imake configuration file, for example in the 252directory `/usr/X11R6/lib/X11/config' (paths are different on 253different systems). You will find files `*.cf' there. If your 254system's cf-file contains a line like `#define NeedWidePrototypes NO', 255add a `#define NARROWPROTO' to your Emacs system configuration file. 256 257The reason for this is that one Xaw3d function uses `double' or 258`float' function parameters depending on the setting of NARROWPROTO. 259This is not a problem when Imakefiles are used because each system's 260imake configuration file contains the necessary information. Since 261Emacs doesn't use imake, this has do be done manually. 262 263** Tool bar support. 264 265Emacs supports a tool bar at the top of a frame under X. For details 266of how to define a tool bar, see the page describing Lisp-level 267changes. Tool-bar global minor mode controls whether or not it is 268displayed and is on by default. The appearance of the bar is improved 269if Emacs has been built with XPM image support. Otherwise monochrome 270icons will be used. 271 272To make the tool bar more useful, we need contributions of extra icons 273for specific modes (with copyright assignments). 274 275** Tooltips. 276 277Tooltips are small X windows displaying a help string at the current 278mouse position. The Lisp package `tooltip' implements them. You can 279turn them off via the user option `tooltip-mode'. 280 281Tooltips also provides support for GUD debugging. If activated, 282variable values can be displayed in tooltips by pointing at them with 283the mouse in source buffers. You can customize various aspects of the 284tooltip display in the group `tooltip'. 285 286** Automatic Hscrolling 287 288Horizontal scrolling now happens automatically if 289`automatic-hscrolling' is set (the default). This setting can be 290customized. 291 292If a window is scrolled horizontally with set-window-hscroll, or 293scroll-left/scroll-right (C-x <, C-x >), this serves as a lower bound 294for automatic horizontal scrolling. Automatic scrolling will scroll 295the text more to the left if necessary, but won't scroll the text more 296to the right than the column set with set-window-hscroll etc. 297 298** When using a windowing terminal, each Emacs window now has a cursor 299of its own. By default, when a window is selected, the cursor is 300solid; otherwise, it is hollow. The user-option 301`cursor-in-non-selected-windows' controls how to display the 302cursor in non-selected windows. If nil, no cursor is shown, if 303non-nil a hollow box cursor is shown. 304 305** Fringes to the left and right of windows are used to display 306truncation marks, continuation marks, overlay arrows and alike. The 307foreground, background, and stipple of these areas can be changed by 308customizing face `fringe'. 309 310** The mode line under X is now drawn with shadows by default. 311You can change its appearance by modifying the face `mode-line'. 312In particular, setting the `:box' attribute to nil turns off the 3D 313appearance of the mode line. (The 3D appearance makes the mode line 314occupy more space, and thus might cause the first or the last line of 315the window to be partially obscured.) 316 317The variable `mode-line-inverse-video', which was used in older 318versions of emacs to make the mode-line stand out, is now deprecated. 319However, setting it to nil will cause the `mode-line' face to be 320ignored, and mode-lines to be drawn using the default text face. 321 322** Mouse-sensitive mode line. 323 324Different parts of the mode line have been made mouse-sensitive on all 325systems which support the mouse. Moving the mouse to a 326mouse-sensitive part in the mode line changes the appearance of the 327mouse pointer to an arrow, and help about available mouse actions is 328displayed either in the echo area, or in the tooltip window if you 329have enabled one. 330 331Currently, the following actions have been defined: 332 333- Mouse-1 on the buffer name in the mode line goes to the next buffer. 334 335- Mouse-3 on the buffer-name goes to the previous buffer. 336 337- Mouse-2 on the read-only or modified status in the mode line (`%' or 338`*') toggles the status. 339 340- Mouse-3 on the major mode name displays a major mode menu. 341 342- Mouse-3 on the mode name displays a minor-mode menu. 343 344** Hourglass pointer 345 346Emacs can optionally display an hourglass pointer under X. You can 347turn the display on or off by customizing group `cursor'. 348 349** Blinking cursor 350 351M-x blink-cursor-mode toggles a blinking cursor under X and on 352terminals having terminal capabilities `vi', `vs', and `ve'. Blinking 353and related parameters like frequency and delay can be customized in 354the group `cursor'. 355 356** New font-lock support mode `jit-lock-mode'. 357 358This support mode is roughly equivalent to `lazy-lock' but is 359generally faster. It supports stealth and deferred fontification. 360See the documentation of the function `jit-lock-mode' for more 361details. 362 363Font-lock uses jit-lock-mode as default support mode, so you don't 364have to do anything to activate it. 365 366** The default binding of the Delete key has changed. 367 368The new user-option `normal-erase-is-backspace' can be set to 369determine the effect of the Delete and Backspace function keys. 370 371On window systems, the default value of this option is chosen 372according to the keyboard used. If the keyboard has both a Backspace 373key and a Delete key, and both are mapped to their usual meanings, the 374option's default value is set to t, so that Backspace can be used to 375delete backward, and Delete can be used to delete forward. On 376keyboards which either have only one key (usually labeled DEL), or two 377keys DEL and BS which produce the same effect, the option's value is 378set to nil, and these keys delete backward. 379 380If not running under a window system, setting this option accomplishes 381a similar effect by mapping C-h, which is usually generated by the 382Backspace key, to DEL, and by mapping DEL to C-d via 383`keyboard-translate'. The former functionality of C-h is available on 384the F1 key. You should probably not use this setting on a text-only 385terminal if you don't have both Backspace, Delete and F1 keys. 386 387Programmatically, you can call function normal-erase-is-backspace-mode 388to toggle the behavior of the Delete and Backspace keys. 389 390** The default for user-option `next-line-add-newlines' has been 391changed to nil, i.e. C-n will no longer add newlines at the end of a 392buffer by default. 393 394** The <home> and <end> keys now move to the beginning or end of the 395current line, respectively. C-<home> and C-<end> move to the 396beginning and end of the buffer. 397 398** Emacs now checks for recursive loads of Lisp files. If the 399recursion depth exceeds `recursive-load-depth-limit', an error is 400signaled. 401 402** When an error is signaled during the loading of the user's init 403file, Emacs now pops up the *Messages* buffer. 404 405** Emacs now refuses to load compiled Lisp files which weren't 406compiled with Emacs. Set `load-dangerous-libraries' to t to change 407this behavior. 408 409The reason for this change is an incompatible change in XEmacs's byte 410compiler. Files compiled with XEmacs can contain byte codes that let 411Emacs dump core. 412 413** Toggle buttons and radio buttons in menus. 414 415When compiled with LessTif (or Motif) support, Emacs uses toolkit 416widgets for radio and toggle buttons in menus. When configured for 417Lucid, Emacs draws radio buttons and toggle buttons similar to Motif. 418 419** The menu bar configuration has changed. The new configuration is 420more CUA-compliant. The most significant change is that Options is 421now a separate menu-bar item, with Mule and Customize as its submenus. 422 423** Item Save Options on the Options menu allows saving options set 424using that menu. 425 426** Highlighting of trailing whitespace. 427 428When `show-trailing-whitespace' is non-nil, Emacs displays trailing 429whitespace in the face `trailing-whitespace'. Trailing whitespace is 430defined as spaces or tabs at the end of a line. To avoid busy 431highlighting when entering new text, trailing whitespace is not 432displayed if point is at the end of the line containing the 433whitespace. 434 435** C-x 5 1 runs the new command delete-other-frames which deletes 436all frames except the selected one. 437 438** The new user-option `confirm-kill-emacs' can be customized to 439let Emacs ask for confirmation before exiting. 440 441** The header line in an Info buffer is now displayed as an emacs 442header-line (which is like a mode-line, but at the top of the window), 443so that it remains visible even when the buffer has been scrolled. 444This behavior may be disabled by customizing the option 445`Info-use-header-line'. 446 447** Polish, Czech, German, and French translations of Emacs' reference card 448have been added. They are named `pl-refcard.tex', `cs-refcard.tex', 449`de-refcard.tex' and `fr-refcard.tex'. PostScript files are included. 450 451** An `Emacs Survival Guide', etc/survival.tex, is available. 452 453** A reference card for Dired has been added. Its name is 454`dired-ref.tex'. A French translation is available in 455`fr-drdref.tex'. 456 457** C-down-mouse-3 is bound differently. Now if the menu bar is not 458displayed it pops up a menu containing the items which would be on the 459menu bar. If the menu bar is displayed, it pops up the major mode 460menu or the Edit menu if there is no major mode menu. 461 462** Variable `load-path' is no longer customizable through Customize. 463 464You can no longer use `M-x customize-variable' to customize `load-path' 465because it now contains a version-dependent component. You can still 466use `add-to-list' and `setq' to customize this variable in your 467`~/.emacs' init file or to modify it from any Lisp program in general. 468 469** C-u C-x = provides detailed information about the character at 470point in a pop-up window. 471 472** Emacs can now support 'wheeled' mice (such as the MS IntelliMouse) 473under XFree86. To enable this, use the `mouse-wheel-mode' command, or 474customize the variable `mouse-wheel-mode'. 475 476The variables `mouse-wheel-follow-mouse' and `mouse-wheel-scroll-amount' 477determine where and by how much buffers are scrolled. 478 479** Emacs' auto-save list files are now by default stored in a 480sub-directory `.emacs.d/auto-save-list/' of the user's home directory. 481(On MS-DOS, this subdirectory's name is `_emacs.d/auto-save.list/'.) 482You can customize `auto-save-list-file-prefix' to change this location. 483 484** The function `getenv' is now callable interactively. 485 486** The new user-option `even-window-heights' can be set to nil 487to prevent `display-buffer' from evening out window heights. 488 489** The new command M-x delete-trailing-whitespace RET will delete the 490trailing whitespace within the current restriction. You can also add 491this function to `write-file-hooks' or `local-write-file-hooks'. 492 493** When visiting a file with M-x find-file-literally, no newlines will 494be added to the end of the buffer even if `require-final-newline' is 495non-nil. 496 497** The new user-option `find-file-suppress-same-file-warnings' can be 498set to suppress warnings ``X and Y are the same file'' when visiting a 499file that is already visited under a different name. 500 501** The new user-option `electric-help-shrink-window' can be set to 502nil to prevent adjusting the help window size to the buffer size. 503 504** New command M-x describe-character-set reads a character set name 505and displays information about that. 506 507** The new variable `auto-mode-interpreter-regexp' contains a regular 508expression matching interpreters, for file mode determination. 509 510This regular expression is matched against the first line of a file to 511determine the file's mode in `set-auto-mode' when Emacs can't deduce a 512mode from the file's name. If it matches, the file is assumed to be 513interpreted by the interpreter matched by the second group of the 514regular expression. The mode is then determined as the mode 515associated with that interpreter in `interpreter-mode-alist'. 516 517** New function executable-make-buffer-file-executable-if-script-p is 518suitable as an after-save-hook as an alternative to `executable-chmod'. 519 520** The most preferred coding-system is now used to save a buffer if 521buffer-file-coding-system is `undecided' and it is safe for the buffer 522contents. (The most preferred is set by set-language-environment or 523by M-x prefer-coding-system.) Thus if you visit an ASCII file and 524insert a non-ASCII character from your current language environment, 525the file will be saved silently with the appropriate coding. 526Previously you would be prompted for a safe coding system. 527 528** The many obsolete language `setup-...-environment' commands have 529been removed -- use `set-language-environment'. 530 531** The new Custom option `keyboard-coding-system' specifies a coding 532system for keyboard input. 533 534** New variable `inhibit-iso-escape-detection' determines if Emacs' 535coding system detection algorithm should pay attention to ISO2022's 536escape sequences. If this variable is non-nil, the algorithm ignores 537such escape sequences. The default value is nil, and it is 538recommended not to change it except for the special case that you 539always want to read any escape code verbatim. If you just want to 540read a specific file without decoding escape codes, use C-x RET c 541(`universal-coding-system-argument'). For instance, C-x RET c latin-1 542RET C-x C-f filename RET. 543 544** Variable `default-korean-keyboard' is initialized properly from the 545environment variable `HANGUL_KEYBOARD_TYPE'. 546 547** New command M-x list-charset-chars reads a character set name and 548displays all characters in that character set. 549 550** M-x set-terminal-coding-system (C-x RET t) now allows CCL-based 551coding systems such as cpXXX and cyrillic-koi8. 552 553** Emacs now attempts to determine the initial language environment 554and preferred and locale coding systems systematically from the 555LC_ALL, LC_CTYPE, and LANG environment variables during startup. 556 557** New language environments `Polish', `Latin-8' and `Latin-9'. 558Latin-8 and Latin-9 correspond respectively to the ISO character sets 5598859-14 (Celtic) and 8859-15 (updated Latin-1, with the Euro sign). 560GNU Intlfonts doesn't support these yet but recent X releases have 5618859-15. See etc/INSTALL for information on obtaining extra fonts. 562There are new Leim input methods for Latin-8 and Latin-9 prefix (only) 563and Polish `slash'. 564 565** New language environments `Dutch' and `Spanish'. 566These new environments mainly select appropriate translations 567of the tutorial. 568 569** In Ethiopic language environment, special key bindings for 570function keys are changed as follows. This is to conform to "Emacs 571Lisp Coding Convention". 572 573 new command old-binding 574 --- ------- ----------- 575 f3 ethio-fidel-to-sera-buffer f5 576 S-f3 ethio-fidel-to-sera-region f5 577 C-f3 ethio-fidel-to-sera-mail-or-marker f5 578 579 f4 ethio-sera-to-fidel-buffer unchanged 580 S-f4 ethio-sera-to-fidel-region unchanged 581 C-f4 ethio-sera-to-fidel-mail-or-marker unchanged 582 583 S-f5 ethio-toggle-punctuation f3 584 S-f6 ethio-modify-vowel f6 585 S-f7 ethio-replace-space f7 586 S-f8 ethio-input-special-character f8 587 S-f9 ethio-replace-space unchanged 588 C-f9 ethio-toggle-space f2 589 590** There are new Leim input methods. 591New input methods "turkish-postfix", "turkish-alt-postfix", 592"greek-mizuochi", "TeX", and "greek-babel" are now part of the Leim 593package. 594 595** The rule of input method "slovak" is slightly changed. Now the 596rules for translating "q" and "Q" to "`" (backquote) are deleted, thus 597typing them inserts "q" and "Q" respectively. Rules for translating 598"=q", "+q", "=Q", and "+Q" to "`" are also deleted. Now, to input 599"`", you must type "=q". 600 601** When your terminal can't display characters from some of the ISO 6028859 character sets but can display Latin-1, you can display 603more-or-less mnemonic sequences of ASCII/Latin-1 characters instead of 604empty boxes (under a window system) or question marks (not under a 605window system). Customize the option `latin1-display' to turn this 606on. 607 608** M-; now calls comment-dwim which tries to do something clever based 609on the context. M-x kill-comment is now an alias to comment-kill, 610defined in newcomment.el. You can choose different styles of region 611commenting with the variable `comment-style'. 612 613** New user options `display-time-mail-face' and 614`display-time-use-mail-icon' control the appearance of mode-line mail 615indicator used by the display-time package. On a suitable display the 616indicator can be an icon and is mouse-sensitive. 617 618** On window-systems, additional space can be put between text lines 619on the display using several methods 620 621- By setting frame parameter `line-spacing' to PIXELS. PIXELS must be 622a positive integer, and specifies that PIXELS number of pixels should 623be put below text lines on the affected frame or frames. 624 625- By setting X resource `lineSpacing', class `LineSpacing'. This is 626equivalent to specifying the frame parameter. 627 628- By specifying `--line-spacing=N' or `-lsp N' on the command line. 629 630- By setting buffer-local variable `line-spacing'. The meaning is 631the same, but applies to the a particular buffer only. 632 633** The new command `clone-indirect-buffer' can be used to create 634an indirect buffer that is a twin copy of the current buffer. The 635command `clone-indirect-buffer-other-window', bound to C-x 4 c, 636does the same but displays the indirect buffer in another window. 637 638** New user options `backup-directory-alist' and 639`make-backup-file-name-function' control the placement of backups, 640typically in a single directory or in an invisible sub-directory. 641 642** New commands iso-iso2sgml and iso-sgml2iso convert between Latin-1 643characters and the corresponding SGML (HTML) entities. 644 645** New X resources recognized 646 647*** The X resource `synchronous', class `Synchronous', specifies 648whether Emacs should run in synchronous mode. Synchronous mode 649is useful for debugging X problems. 650 651Example: 652 653 emacs.synchronous: true 654 655*** The X resource `visualClass, class `VisualClass', specifies the 656visual Emacs should use. The resource's value should be a string of 657the form `CLASS-DEPTH', where CLASS is the name of the visual class, 658and DEPTH is the requested color depth as a decimal number. Valid 659visual class names are 660 661 TrueColor 662 PseudoColor 663 DirectColor 664 StaticColor 665 GrayScale 666 StaticGray 667 668Visual class names specified as X resource are case-insensitive, i.e. 669`pseudocolor', `Pseudocolor' and `PseudoColor' all have the same 670meaning. 671 672The program `xdpyinfo' can be used to list the visual classes 673supported on your display, and which depths they have. If 674`visualClass' is not specified, Emacs uses the display's default 675visual. 676 677Example: 678 679 emacs.visualClass: TrueColor-8 680 681*** The X resource `privateColormap', class `PrivateColormap', 682specifies that Emacs should use a private colormap if it is using the 683default visual, and that visual is of class PseudoColor. Recognized 684resource values are `true' or `on'. 685 686Example: 687 688 emacs.privateColormap: true 689 690** Faces and frame parameters. 691 692There are four new faces `scroll-bar', `border', `cursor' and `mouse'. 693Setting the frame parameters `scroll-bar-foreground' and 694`scroll-bar-background' sets foreground and background color of face 695`scroll-bar' and vice versa. Setting frame parameter `border-color' 696sets the background color of face `border' and vice versa. Likewise 697for frame parameters `cursor-color' and face `cursor', and frame 698parameter `mouse-color' and face `mouse'. 699 700Changing frame parameter `font' sets font-related attributes of the 701`default' face and vice versa. Setting frame parameters 702`foreground-color' or `background-color' sets the colors of the 703`default' face and vice versa. 704 705** New face `menu'. 706 707The face `menu' can be used to change colors and font of Emacs' menus. 708 709** New frame parameter `screen-gamma' for gamma correction. 710 711The new frame parameter `screen-gamma' specifies gamma-correction for 712colors. Its value may be nil, the default, in which case no gamma 713correction occurs, or a number > 0, usually a float, that specifies 714the screen gamma of a frame's display. 715 716PC monitors usually have a screen gamma of 2.2. smaller values result 717in darker colors. You might want to try a screen gamma of 1.5 for LCD 718color displays. The viewing gamma Emacs uses is 0.4545. (1/2.2). 719 720The X resource name of this parameter is `screenGamma', class 721`ScreenGamma'. 722 723** Tabs and variable-width text. 724 725Tabs are now displayed with stretch properties; the width of a tab is 726defined as a multiple of the normal character width of a frame, and is 727independent of the fonts used in the text where the tab appears. 728Thus, tabs can be used to line up text in different fonts. 729 730** Enhancements of the Lucid menu bar 731 732*** The Lucid menu bar now supports the resource "margin". 733 734 emacs.pane.menubar.margin: 5 735 736The default margin is 4 which makes the menu bar appear like the 737LessTif/Motif one. 738 739*** Arrows that indicate sub-menus are now drawn with shadows, as in 740LessTif and Motif. 741 742** A block cursor can be drawn as wide as the glyph under it under X. 743 744As an example: if a block cursor is over a tab character, it will be 745drawn as wide as that tab on the display. To do this, set 746`x-stretch-cursor' to a non-nil value. 747 748** Empty display lines at the end of a buffer may be marked with a 749bitmap (this is similar to the tilde displayed by vi and Less). 750 751This behavior is activated by setting the buffer-local variable 752`indicate-empty-lines' to a non-nil value. The default value of this 753variable is found in `default-indicate-empty-lines'. 754 755** There is a new "aggressive" scrolling method. 756 757When scrolling up because point is above the window start, if the 758value of the buffer-local variable `scroll-up-aggressively' is a 759number, Emacs chooses a new window start so that point ends up that 760fraction of the window's height from the top of the window. 761 762When scrolling down because point is below the window end, if the 763value of the buffer-local variable `scroll-down-aggressively' is a 764number, Emacs chooses a new window start so that point ends up that 765fraction of the window's height from the bottom of the window. 766 767** You can now easily create new *Info* buffers using either 768M-x clone-buffer, C-u m <entry> RET or C-u g <entry> RET. 769M-x clone-buffer can also be used on *Help* and several other special 770buffers. 771 772** The command `Info-search' now uses a search history. 773 774** Listing buffers with M-x list-buffers (C-x C-b) now shows 775abbreviated file names. Abbreviations can be customized by changing 776`directory-abbrev-alist'. 777 778** A new variable, backup-by-copying-when-privileged-mismatch, gives 779the highest file uid for which backup-by-copying-when-mismatch will be 780forced on. The assumption is that uids less than or equal to this 781value are special uids (root, bin, daemon, etc.--not real system 782users) and that files owned by these users should not change ownership, 783even if your system policy allows users other than root to edit them. 784 785The default is 200; set the variable to nil to disable the feature. 786 787** The rectangle commands now avoid inserting undesirable spaces, 788notably at the end of lines. 789 790All these functions have been rewritten to avoid inserting unwanted 791spaces, and an optional prefix now allows them to behave the old way. 792 793** The function `replace-rectangle' is an alias for `string-rectangle'. 794 795** The new command M-x string-insert-rectangle is like `string-rectangle', 796but inserts text instead of replacing it. 797 798** The new command M-x query-replace-regexp-eval acts like 799query-replace-regexp, but takes a Lisp expression which is evaluated 800after each match to get the replacement text. 801 802** M-x query-replace recognizes a new command `e' (or `E') that lets 803you edit the replacement string. 804 805** The new command mail-abbrev-complete-alias, bound to `M-TAB' 806(if you load the library `mailabbrev'), lets you complete mail aliases 807in the text, analogous to lisp-complete-symbol. 808 809** The variable `echo-keystrokes' may now have a floating point value. 810 811** If your init file is compiled (.emacs.elc), `user-init-file' is set 812to the source name (.emacs.el), if that exists, after loading it. 813 814** The help string specified for a menu-item whose definition contains 815the property `:help HELP' is now displayed under X, on MS-Windows, and 816MS-DOS, either in the echo area or with tooltips. Many standard menus 817displayed by Emacs now have help strings. 818 819-- 820** New user option `read-mail-command' specifies a command to use to 821read mail from the menu etc. 822 823** The environment variable `EMACSLOCKDIR' is no longer used on MS-Windows. 824This environment variable was used when creating lock files. Emacs on 825MS-Windows does not use this variable anymore. This change was made 826before Emacs 21.1, but wasn't documented until now. 827 828** Highlighting of mouse-sensitive regions is now supported in the 829MS-DOS version of Emacs. 830 831** The new command `msdos-set-mouse-buttons' forces the MS-DOS version 832of Emacs to behave as if the mouse had a specified number of buttons. 833This comes handy with mice that don't report their number of buttons 834correctly. One example is the wheeled mice, which report 3 buttons, 835but clicks on the middle button are not passed to the MS-DOS version 836of Emacs. 837 838** Customize changes 839 840*** Customize now supports comments about customized items. Use the 841`State' menu to add comments, or give a prefix argument to 842M-x customize-set-variable or M-x customize-set-value. Note that 843customization comments will cause the customizations to fail in 844earlier versions of Emacs. 845 846*** The new option `custom-buffer-done-function' says whether to kill 847Custom buffers when you've done with them or just bury them (the 848default). 849 850*** If Emacs was invoked with the `-q' or `--no-init-file' options, it 851does not allow you to save customizations in your `~/.emacs' init 852file. This is because saving customizations from such a session would 853wipe out all the other customizations you might have on your init 854file. 855 856** If Emacs was invoked with the `-q' or `--no-init-file' options, it 857does not save disabled and enabled commands for future sessions, to 858avoid overwriting existing customizations of this kind that are 859already in your init file. 860 861** New features in evaluation commands 862 863*** The commands to evaluate Lisp expressions, such as C-M-x in Lisp 864modes, C-j in Lisp Interaction mode, and M-:, now bind the variables 865print-level, print-length, and debug-on-error based on the new 866customizable variables eval-expression-print-level, 867eval-expression-print-length, and eval-expression-debug-on-error. 868 869The default values for the first two of these variables are 12 and 4 870respectively, which means that `eval-expression' now prints at most 871the first 12 members of a list and at most 4 nesting levels deep (if 872the list is longer or deeper than that, an ellipsis `...' is 873printed). 874 875<RET> or <mouse-2> on the printed text toggles between an abbreviated 876printed representation and an unabbreviated one. 877 878The default value of eval-expression-debug-on-error is t, so any error 879during evaluation produces a backtrace. 880 881*** The function `eval-defun' (C-M-x) now loads Edebug and instruments 882code when called with a prefix argument. 883 884** CC mode changes. 885 886Note: This release contains changes that might not be compatible with 887current user setups (although it's believed that these 888incompatibilities will only show in very uncommon circumstances). 889However, since the impact is uncertain, these changes may be rolled 890back depending on user feedback. Therefore there's no forward 891compatibility guarantee wrt the new features introduced in this 892release. 893 894*** The hardcoded switch to "java" style in Java mode is gone. 895CC Mode used to automatically set the style to "java" when Java mode 896is entered. This has now been removed since it caused too much 897confusion. 898 899However, to keep backward compatibility to a certain extent, the 900default value for c-default-style now specifies the "java" style for 901java-mode, but "gnu" for all other modes (as before). So you won't 902notice the change if you haven't touched that variable. 903 904*** New cleanups, space-before-funcall and compact-empty-funcall. 905Two new cleanups have been added to c-cleanup-list: 906 907space-before-funcall causes a space to be inserted before the opening 908parenthesis of a function call, which gives the style "foo (bar)". 909 910compact-empty-funcall causes any space before a function call opening 911parenthesis to be removed if there are no arguments to the function. 912It's typically useful together with space-before-funcall to get the 913style "foo (bar)" and "foo()". 914 915*** Some keywords now automatically trigger reindentation. 916Keywords like "else", "while", "catch" and "finally" have been made 917"electric" to make them reindent automatically when they continue an 918earlier statement. An example: 919 920for (i = 0; i < 17; i++) 921 if (a[i]) 922 res += a[i]->offset; 923else 924 925Here, the "else" should be indented like the preceding "if", since it 926continues that statement. CC Mode will automatically reindent it after 927the "else" has been typed in full, since it's not until then it's 928possible to decide whether it's a new statement or a continuation of 929the preceding "if". 930 931CC Mode uses Abbrev mode to achieve this, which is therefore turned on 932by default. 933 934*** M-a and M-e now moves by sentence in multiline strings. 935Previously these two keys only moved by sentence in comments, which 936meant that sentence movement didn't work in strings containing 937documentation or other natural language text. 938 939The reason it's only activated in multiline strings (i.e. strings that 940contain a newline, even when escaped by a '\') is to avoid stopping in 941the short strings that often reside inside statements. Multiline 942strings almost always contain text in a natural language, as opposed 943to other strings that typically contain format specifications, 944commands, etc. Also, it's not that bothersome that M-a and M-e misses 945sentences in single line strings, since they're short anyway. 946 947*** Support for autodoc comments in Pike mode. 948Autodoc comments for Pike are used to extract documentation from the 949source, like Javadoc in Java. Pike mode now recognize this markup in 950comment prefixes and paragraph starts. 951 952*** The comment prefix regexps on c-comment-prefix may be mode specific. 953When c-comment-prefix is an association list, it specifies the comment 954line prefix on a per-mode basis, like c-default-style does. This 955change came about to support the special autodoc comment prefix in 956Pike mode only. 957 958*** Better handling of syntactic errors. 959The recovery after unbalanced parens earlier in the buffer has been 960improved; CC Mode now reports them by dinging and giving a message 961stating the offending line, but still recovers and indent the 962following lines in a sane way (most of the time). An "else" with no 963matching "if" is handled similarly. If an error is discovered while 964indenting a region, the whole region is still indented and the error 965is reported afterwards. 966 967*** Lineup functions may now return absolute columns. 968A lineup function can give an absolute column to indent the line to by 969returning a vector with the desired column as the first element. 970 971*** More robust and warning-free byte compilation. 972Although this is strictly not a user visible change (well, depending 973on the view of a user), it's still worth mentioning that CC Mode now 974can be compiled in the standard ways without causing trouble. Some 975code have also been moved between the subpackages to enhance the 976modularity somewhat. Thanks to Martin Buchholz for doing the 977groundwork. 978 979*** c-style-variables-are-local-p now defaults to t. 980This is an incompatible change that has been made to make the behavior 981of the style system wrt global variable settings less confusing for 982non-advanced users. If you know what this variable does you might 983want to set it to nil in your .emacs, otherwise you probably don't 984have to bother. 985 986Defaulting c-style-variables-are-local-p to t avoids the confusing 987situation that occurs when a user sets some style variables globally 988and edits both a Java and a non-Java file in the same Emacs session. 989If the style variables aren't buffer local in this case, loading of 990the second file will cause the default style (either "gnu" or "java" 991by default) to override the global settings made by the user. 992 993*** New initialization procedure for the style system. 994When the initial style for a buffer is determined by CC Mode (from the 995variable c-default-style), the global values of style variables now 996take precedence over the values specified by the chosen style. This 997is different than the old behavior: previously, the style-specific 998settings would override the global settings. This change makes it 999possible to do simple configuration in the intuitive way with 1000Customize or with setq lines in one's .emacs file. 1001 1002By default, the global value of every style variable is the new 1003special symbol set-from-style, which causes the value to be taken from 1004the style system. This means that in effect, only an explicit setting 1005of a style variable will cause the "overriding" behavior described 1006above. 1007 1008Also note that global settings override style-specific settings *only* 1009when the initial style of a buffer is chosen by a CC Mode major mode 1010function. When a style is chosen in other ways --- for example, by a 1011call like (c-set-style "gnu") in a hook, or via M-x c-set-style --- 1012then the style-specific values take precedence over any global style 1013values. In Lisp terms, global values override style-specific values 1014only when the new second argument to c-set-style is non-nil; see the 1015function documentation for more info. 1016 1017The purpose of these changes is to make it easier for users, 1018especially novice users, to do simple customizations with Customize or 1019with setq in their .emacs files. On the other hand, the new system is 1020intended to be compatible with advanced users' customizations as well, 1021such as those that choose styles in hooks or whatnot. This new system 1022is believed to be almost entirely compatible with current 1023configurations, in spite of the changed precedence between style and 1024global variable settings when a buffer's default style is set. 1025 1026(Thanks to Eric Eide for clarifying this explanation a bit.) 1027 1028**** c-offsets-alist is now a customizable variable. 1029This became possible as a result of the new initialization behavior. 1030 1031This variable is treated slightly differently from the other style 1032variables; instead of using the symbol set-from-style, it will be 1033completed with the syntactic symbols it doesn't already contain when 1034the style is first initialized. This means it now defaults to the 1035empty list to make all syntactic elements get their values from the 1036style system. 1037 1038**** Compatibility variable to restore the old behavior. 1039In case your configuration doesn't work with this change, you can set 1040c-old-style-variable-behavior to non-nil to get the old behavior back 1041as far as possible. 1042 1043*** Improvements to line breaking and text filling. 1044CC Mode now handles this more intelligently and seamlessly wrt the 1045surrounding code, especially inside comments. For details see the new 1046chapter about this in the manual. 1047 1048**** New variable to recognize comment line prefix decorations. 1049The variable c-comment-prefix-regexp has been added to properly 1050recognize the line prefix in both block and line comments. It's 1051primarily used to initialize the various paragraph recognition and 1052adaptive filling variables that the text handling functions uses. 1053 1054**** New variable c-block-comment-prefix. 1055This is a generalization of the now obsolete variable 1056c-comment-continuation-stars to handle arbitrary strings. 1057 1058**** CC Mode now uses adaptive fill mode. 1059This to make it adapt better to the paragraph style inside comments. 1060 1061It's also possible to use other adaptive filling packages inside CC 1062Mode, notably Kyle E. Jones' Filladapt mode (http://wonderworks.com/). 1063A new convenience function c-setup-filladapt sets up Filladapt for use 1064inside CC Mode. 1065 1066Note though that the 2.12 version of Filladapt lacks a feature that 1067causes it to work suboptimally when c-comment-prefix-regexp can match 1068the empty string (which it commonly does). A patch for that is 1069available from the CC Mode web site (http://www.python.org/emacs/ 1070cc-mode/). 1071 1072**** The variables `c-hanging-comment-starter-p' and 1073`c-hanging-comment-ender-p', which controlled how comment starters and 1074enders were filled, are not used anymore. The new version of the 1075function `c-fill-paragraph' keeps the comment starters and enders as 1076they were before the filling. 1077 1078**** It's now possible to selectively turn off auto filling. 1079The variable c-ignore-auto-fill is used to ignore auto fill mode in 1080specific contexts, e.g. in preprocessor directives and in string 1081literals. 1082 1083**** New context sensitive line break function c-context-line-break. 1084It works like newline-and-indent in normal code, and adapts the line 1085prefix according to the comment style when used inside comments. If 1086you're normally using newline-and-indent, you might want to switch to 1087this function. 1088 1089*** Fixes to IDL mode. 1090It now does a better job in recognizing only the constructs relevant 1091to IDL. E.g. it no longer matches "class" as the beginning of a 1092struct block, but it does match the CORBA 2.3 "valuetype" keyword. 1093Thanks to Eric Eide. 1094 1095*** Improvements to the Whitesmith style. 1096It now keeps the style consistently on all levels and both when 1097opening braces hangs and when they don't. 1098 1099**** New lineup function c-lineup-whitesmith-in-block. 1100 1101*** New lineup functions c-lineup-template-args and c-indent-multi-line-block. 1102See their docstrings for details. c-lineup-template-args does a 1103better job of tracking the brackets used as parens in C++ templates, 1104and is used by default to line up continued template arguments. 1105 1106*** c-lineup-comment now preserves alignment with a comment on the 1107previous line. It used to instead preserve comments that started in 1108the column specified by comment-column. 1109 1110*** c-lineup-C-comments handles "free form" text comments. 1111In comments with a long delimiter line at the start, the indentation 1112is kept unchanged for lines that start with an empty comment line 1113prefix. This is intended for the type of large block comments that 1114contain documentation with its own formatting. In these you normally 1115don't want CC Mode to change the indentation. 1116 1117*** The `c' syntactic symbol is now relative to the comment start 1118instead of the previous line, to make integers usable as lineup 1119arguments. 1120 1121*** All lineup functions have gotten docstrings. 1122 1123*** More preprocessor directive movement functions. 1124c-down-conditional does the reverse of c-up-conditional. 1125c-up-conditional-with-else and c-down-conditional-with-else are 1126variants of these that also stops at "#else" lines (suggested by Don 1127Provan). 1128 1129*** Minor improvements to many movement functions in tricky situations. 1130 1131** Dired changes 1132 1133*** New variable `dired-recursive-deletes' determines if the delete 1134command will delete non-empty directories recursively. The default 1135is, delete only empty directories. 1136 1137*** New variable `dired-recursive-copies' determines if the copy 1138command will copy directories recursively. The default is, do not 1139copy directories recursively. 1140 1141*** In command `dired-do-shell-command' (usually bound to `!') a `?' 1142in the shell command has a special meaning similar to `*', but with 1143the difference that the command will be run on each file individually. 1144 1145*** The new command `dired-find-alternate-file' (usually bound to `a') 1146replaces the Dired buffer with the buffer for an alternate file or 1147directory. 1148 1149*** The new command `dired-show-file-type' (usually bound to `y') shows 1150a message in the echo area describing what type of file the point is on. 1151This command invokes the external program `file' do its work, and so 1152will only work on systems with that program, and will be only as 1153accurate or inaccurate as it is. 1154 1155*** Dired now properly handles undo changes of adding/removing `-R' 1156from ls switches. 1157 1158*** Dired commands that prompt for a destination file now allow the use 1159of the `M-n' command in the minibuffer to insert the source filename, 1160which the user can then edit. This only works if there is a single 1161source file, not when operating on multiple marked files. 1162 1163** Gnus changes. 1164 1165The Gnus NEWS entries are short, but they reflect sweeping changes in 1166four areas: Article display treatment, MIME treatment, 1167internationalization and mail-fetching. 1168 1169*** The mail-fetching functions have changed. See the manual for the 1170many details. In particular, all procmail fetching variables are gone. 1171 1172If you used procmail like in 1173 1174(setq nnmail-use-procmail t) 1175(setq nnmail-spool-file 'procmail) 1176(setq nnmail-procmail-directory "~/mail/incoming/") 1177(setq nnmail-procmail-suffix "\\.in") 1178 1179this now has changed to 1180 1181(setq mail-sources 1182 '((directory :path "~/mail/incoming/" 1183 :suffix ".in"))) 1184 1185More information is available in the info doc at Select Methods -> 1186Getting Mail -> Mail Sources 1187 1188*** Gnus is now a MIME-capable reader. This affects many parts of 1189Gnus, and adds a slew of new commands. See the manual for details. 1190Separate MIME packages like RMIME, mime-compose etc., will probably no 1191longer work; remove them and use the native facilities. 1192 1193The FLIM/SEMI package still works with Emacs 21, but if you want to 1194use the native facilities, you must remove any mailcap.el[c] that was 1195installed by FLIM/SEMI version 1.13 or earlier. 1196 1197*** Gnus has also been multilingualized. This also affects too many 1198parts of Gnus to summarize here, and adds many new variables. There 1199are built-in facilities equivalent to those of gnus-mule.el, which is 1200now just a compatibility layer. 1201 1202*** gnus-mule.el is now just a compatibility layer over the built-in 1203Gnus facilities. 1204 1205*** gnus-auto-select-first can now be a function to be 1206called to position point. 1207 1208*** The user can now decide which extra headers should be included in 1209summary buffers and NOV files. 1210 1211*** `gnus-article-display-hook' has been removed. Instead, a number 1212of variables starting with `gnus-treat-' have been added. 1213 1214*** The Gnus posting styles have been redone again and now work in a 1215subtly different manner. 1216 1217*** New web-based backends have been added: nnslashdot, nnwarchive 1218and nnultimate. nnweb has been revamped, again, to keep up with 1219ever-changing layouts. 1220 1221*** Gnus can now read IMAP mail via nnimap. 1222 1223*** There is image support of various kinds and some sound support. 1224 1225** Changes in Texinfo mode. 1226 1227*** A couple of new key bindings have been added for inserting Texinfo 1228macros 1229 1230 Key binding Macro 1231 ------------------------- 1232 C-c C-c C-s @strong 1233 C-c C-c C-e @emph 1234 C-c C-c u @uref 1235 C-c C-c q @quotation 1236 C-c C-c m @email 1237 C-c C-o @<block> ... @end <block> 1238 M-RET @item 1239 1240*** The " key now inserts either " or `` or '' depending on context. 1241 1242** Changes in Outline mode. 1243 1244There is now support for Imenu to index headings. A new command 1245`outline-headers-as-kill' copies the visible headings in the region to 1246the kill ring, e.g. to produce a table of contents. 1247 1248** Changes to Emacs Server 1249 1250*** The new option `server-kill-new-buffers' specifies what to do 1251with buffers when done with them. If non-nil, the default, buffers 1252are killed, unless they were already present before visiting them with 1253Emacs Server. If nil, `server-temp-file-regexp' specifies which 1254buffers to kill, as before. 1255 1256Please note that only buffers are killed that still have a client, 1257i.e. buffers visited with `emacsclient --no-wait' are never killed in 1258this way. 1259 1260** Both emacsclient and Emacs itself now accept command line options 1261of the form +LINE:COLUMN in addition to +LINE. 1262 1263** Changes to Show Paren mode. 1264 1265*** Overlays used by Show Paren mode now use a priority property. 1266The new user option show-paren-priority specifies the priority to 1267use. Default is 1000. 1268 1269** New command M-x check-parens can be used to find unbalanced paren 1270groups and strings in buffers in Lisp mode (or other modes). 1271 1272** Changes to hideshow.el 1273 1274*** Generalized block selection and traversal 1275 1276A block is now recognized by its start and end regexps (both strings), 1277and an integer specifying which sub-expression in the start regexp 1278serves as the place where a `forward-sexp'-like function can operate. 1279See the documentation of variable `hs-special-modes-alist'. 1280 1281*** During incremental search, if Hideshow minor mode is active, 1282hidden blocks are temporarily shown. The variable `hs-headline' can 1283be used in the mode line format to show the line at the beginning of 1284the open block. 1285 1286*** User option `hs-hide-all-non-comment-function' specifies a 1287function to be called at each top-level block beginning, instead of 1288the normal block-hiding function. 1289 1290*** The command `hs-show-region' has been removed. 1291 1292*** The key bindings have changed to fit the Emacs conventions, 1293roughly imitating those of Outline minor mode. Notably, the prefix 1294for all bindings is now `C-c @'. For details, see the documentation 1295for `hs-minor-mode'. 1296 1297*** The variable `hs-show-hidden-short-form' has been removed, and 1298hideshow.el now always behaves as if this variable were set to t. 1299 1300** Changes to Change Log mode and Add-Log functions 1301 1302*** If you invoke `add-change-log-entry' from a backup file, it makes 1303an entry appropriate for the file's parent. This is useful for making 1304log entries by comparing a version with deleted functions. 1305 1306**** New command M-x change-log-merge merges another log into the 1307current buffer. 1308 1309*** New command M-x change-log-redate fixes any old-style date entries 1310in a log file. 1311 1312*** Change Log mode now adds a file's version number to change log 1313entries if user-option `change-log-version-info-enabled' is non-nil. 1314Unless the file is under version control the search for a file's 1315version number is performed based on regular expressions from 1316`change-log-version-number-regexp-list' which can be customized. 1317Version numbers are only found in the first 10 percent of a file. 1318 1319*** Change Log mode now defines its own faces for font-lock highlighting. 1320 1321** Changes to cmuscheme 1322 1323*** The user-option `scheme-program-name' has been renamed 1324`cmuscheme-program-name' due to conflicts with xscheme.el. 1325 1326** Changes in Font Lock 1327 1328*** The new function `font-lock-remove-keywords' can be used to remove 1329font-lock keywords from the current buffer or from a specific major mode. 1330 1331*** Multi-line patterns are now supported. Modes using this, should 1332set font-lock-multiline to t in their font-lock-defaults. 1333 1334*** `font-lock-syntactic-face-function' allows major-modes to choose 1335the face used for each string/comment. 1336 1337*** A new standard face `font-lock-doc-face'. 1338Meant for Lisp docstrings, Javadoc comments and other "documentation in code". 1339 1340** Changes to Shell mode 1341 1342*** The `shell' command now accepts an optional argument to specify the buffer 1343to use, which defaults to "*shell*". When used interactively, a 1344non-default buffer may be specified by giving the `shell' command a 1345prefix argument (causing it to prompt for the buffer name). 1346 1347** Comint (subshell) changes 1348 1349These changes generally affect all modes derived from comint mode, which 1350include shell-mode, gdb-mode, scheme-interaction-mode, etc. 1351 1352*** Comint now by default interprets some carriage-control characters. 1353Comint now removes CRs from CR LF sequences, and treats single CRs and 1354BSs in the output in a way similar to a terminal (by deleting to the 1355beginning of the line, or deleting the previous character, 1356respectively). This is achieved by adding `comint-carriage-motion' to 1357the `comint-output-filter-functions' hook by default. 1358 1359*** By default, comint no longer uses the variable `comint-prompt-regexp' 1360to distinguish prompts from user-input. Instead, it notices which 1361parts of the text were output by the process, and which entered by the 1362user, and attaches `field' properties to allow emacs commands to use 1363this information. Common movement commands, notably beginning-of-line, 1364respect field boundaries in a fairly natural manner. To disable this 1365feature, and use the old behavior, customize the user option 1366`comint-use-prompt-regexp-instead-of-fields'. 1367 1368*** Comint now includes new features to send commands to running processes 1369and redirect the output to a designated buffer or buffers. 1370 1371*** The command M-x comint-redirect-send-command reads a command and 1372buffer name from the mini-buffer. The command is sent to the current 1373buffer's process, and its output is inserted into the specified buffer. 1374 1375The command M-x comint-redirect-send-command-to-process acts like 1376M-x comint-redirect-send-command but additionally reads the name of 1377the buffer whose process should be used from the mini-buffer. 1378 1379*** Packages based on comint now highlight user input and program prompts, 1380and support choosing previous input with mouse-2. To control these features, 1381see the user-options `comint-highlight-input' and `comint-highlight-prompt'. 1382 1383*** The new command `comint-write-output' (usually bound to `C-c C-s') 1384saves the output from the most recent command to a file. With a prefix 1385argument, it appends to the file. 1386 1387*** The command `comint-kill-output' has been renamed `comint-delete-output' 1388(usually bound to `C-c C-o'); the old name is aliased to it for 1389compatibility. 1390 1391*** The new function `comint-add-to-input-history' adds commands to the input 1392ring (history). 1393 1394*** The new variable `comint-input-history-ignore' is a regexp for 1395identifying history lines that should be ignored, like tcsh time-stamp 1396strings, starting with a `#'. The default value of this variable is "^#". 1397 1398** Changes to Rmail mode 1399 1400*** The new user-option rmail-user-mail-address-regexp can be 1401set to fine tune the identification of the correspondent when 1402receiving new mail. If it matches the address of the sender, the 1403recipient is taken as correspondent of a mail. If nil, the default, 1404`user-login-name' and `user-mail-address' are used to exclude yourself 1405as correspondent. 1406 1407Usually you don't have to set this variable, except if you collect 1408mails sent by you under different user names. Then it should be a 1409regexp matching your mail addresses. 1410 1411*** The new user-option rmail-confirm-expunge controls whether and how 1412to ask for confirmation before expunging deleted messages from an 1413Rmail file. You can choose between no confirmation, confirmation 1414with y-or-n-p, or confirmation with yes-or-no-p. Default is to ask 1415for confirmation with yes-or-no-p. 1416 1417*** RET is now bound in the Rmail summary to rmail-summary-goto-msg, 1418like `j'. 1419 1420*** There is a new user option `rmail-digest-end-regexps' that 1421specifies the regular expressions to detect the line that ends a 1422digest message. 1423 1424*** The new user option `rmail-automatic-folder-directives' specifies 1425in which folder to put messages automatically. 1426 1427*** The new function `rmail-redecode-body' allows to fix a message 1428with non-ASCII characters if Emacs happens to decode it incorrectly 1429due to missing or malformed "charset=" header. 1430 1431** The new user-option `mail-envelope-from' can be used to specify 1432an envelope-from address different from user-mail-address. 1433 1434** The variable mail-specify-envelope-from controls whether to 1435use the -f option when sending mail. 1436 1437** The Rmail command `o' (`rmail-output-to-rmail-file') now writes the 1438current message in the internal `emacs-mule' encoding, rather than in 1439the encoding taken from the variable `buffer-file-coding-system'. 1440This allows to save messages whose characters cannot be safely encoded 1441by the buffer's coding system, and makes sure the message will be 1442displayed correctly when you later visit the target Rmail file. 1443 1444If you want your Rmail files be encoded in a specific coding system 1445other than `emacs-mule', you can customize the variable 1446`rmail-file-coding-system' to set its value to that coding system. 1447 1448** Changes to TeX mode 1449 1450*** The default mode has been changed from `plain-tex-mode' to 1451`latex-mode'. 1452 1453*** latex-mode now has a simple indentation algorithm. 1454 1455*** M-f and M-p jump around \begin...\end pairs. 1456 1457*** Added support for outline-minor-mode. 1458 1459** Changes to RefTeX mode 1460 1461*** RefTeX has new support for index generation. Index entries can be 1462 created with `C-c <', with completion available on index keys. 1463 Pressing `C-c /' indexes the word at the cursor with a default 1464 macro. `C-c >' compiles all index entries into an alphabetically 1465 sorted *Index* buffer which looks like the final index. Entries 1466 can be edited from that buffer. 1467 1468*** Label and citation key selection now allow to select several 1469 items and reference them together (use `m' to mark items, `a' or 1470 `A' to use all marked entries). 1471 1472*** reftex.el has been split into a number of smaller files to reduce 1473 memory use when only a part of RefTeX is being used. 1474 1475*** a new command `reftex-view-crossref-from-bibtex' (bound to `C-c &' 1476 in BibTeX-mode) can be called in a BibTeX database buffer in order 1477 to show locations in LaTeX documents where a particular entry has 1478 been cited. 1479 1480** Emacs Lisp mode now allows multiple levels of outline headings. 1481The level of a heading is determined from the number of leading 1482semicolons in a heading line. Toplevel forms starting with a `(' 1483in column 1 are always made leaves. 1484 1485** The M-x time-stamp command (most commonly used on write-file-hooks) 1486has the following new features: 1487 1488*** The patterns for finding the time stamp and for updating a pattern 1489may match text spanning multiple lines. For example, some people like 1490to have the filename and date on separate lines. The new variable 1491time-stamp-inserts-lines controls the matching for multi-line patterns. 1492 1493*** More than one time stamp can be updated in the same file. This 1494feature is useful if you need separate time stamps in a program source 1495file to both include in formatted documentation and insert in the 1496compiled binary. The same time-stamp will be written at each matching 1497pattern. The variable time-stamp-count enables this new feature; it 1498defaults to 1. 1499 1500** Partial Completion mode now completes environment variables in 1501file names. 1502 1503** Ispell changes 1504 1505*** The command `ispell' now spell-checks a region if 1506transient-mark-mode is on, and the mark is active. Otherwise it 1507spell-checks the current buffer. 1508 1509*** Support for synchronous subprocesses - DOS/Windoze - has been 1510added. 1511 1512*** An "alignment error" bug was fixed when a manual spelling 1513correction is made and re-checked. 1514 1515*** Italian, Portuguese, and Slovak dictionary definitions have been added. 1516 1517*** Region skipping performance has been vastly improved in some 1518cases. 1519 1520*** Spell checking HTML buffers has been improved and isn't so strict 1521on syntax errors. 1522 1523*** The buffer-local words are now always placed on a new line at the 1524end of the buffer. 1525 1526*** Spell checking now works in the MS-DOS version of Emacs. 1527 1528*** The variable `ispell-format-word' has been renamed to 1529`ispell-format-word-function'. The old name is still available as 1530alias. 1531 1532** Makefile mode changes 1533 1534*** The mode now uses the abbrev table `makefile-mode-abbrev-table'. 1535 1536*** Conditionals and include statements are now highlighted when 1537Fontlock mode is active. 1538 1539** Isearch changes 1540 1541*** Isearch now puts a call to `isearch-resume' in the command history, 1542so that searches can be resumed. 1543 1544*** In Isearch mode, C-M-s and C-M-r are now bound like C-s and C-r, 1545respectively, i.e. you can repeat a regexp isearch with the same keys 1546that started the search. 1547 1548*** In Isearch mode, mouse-2 in the echo area now yanks the current 1549selection into the search string rather than giving an error. 1550 1551*** There is a new lazy highlighting feature in incremental search. 1552 1553Lazy highlighting is switched on/off by customizing variable 1554`isearch-lazy-highlight'. When active, all matches for the current 1555search string are highlighted. The current match is highlighted as 1556before using face `isearch' or `region'. All other matches are 1557highlighted using face `isearch-lazy-highlight-face' which defaults to 1558`secondary-selection'. 1559 1560The extra highlighting makes it easier to anticipate where the cursor 1561will end up each time you press C-s or C-r to repeat a pending search. 1562Highlighting of these additional matches happens in a deferred fashion 1563using "idle timers," so the cycles needed do not rob isearch of its 1564usual snappy response. 1565 1566If `isearch-lazy-highlight-cleanup' is set to t, highlights for 1567matches are automatically cleared when you end the search. If it is 1568set to nil, you can remove the highlights manually with `M-x 1569isearch-lazy-highlight-cleanup'. 1570 1571** VC Changes 1572 1573VC has been overhauled internally. It is now modular, making it 1574easier to plug-in arbitrary version control backends. (See Lisp 1575Changes for details on the new structure.) As a result, the mechanism 1576to enable and disable support for particular version systems has 1577changed: everything is now controlled by the new variable 1578`vc-handled-backends'. Its value is a list of symbols that identify 1579version systems; the default is '(RCS CVS SCCS). When finding a file, 1580each of the backends in that list is tried in order to see whether the 1581file is registered in that backend. 1582 1583When registering a new file, VC first tries each of the listed 1584backends to see if any of them considers itself "responsible" for the 1585directory of the file (e.g. because a corresponding subdirectory for 1586master files exists). If none of the backends is responsible, then 1587the first backend in the list that could register the file is chosen. 1588As a consequence, the variable `vc-default-back-end' is now obsolete. 1589 1590The old variable `vc-master-templates' is also obsolete, although VC 1591still supports it for backward compatibility. To define templates for 1592RCS or SCCS, you should rather use the new variables 1593vc-{rcs,sccs}-master-templates. (There is no such feature under CVS 1594where it doesn't make sense.) 1595 1596The variables `vc-ignore-vc-files' and `vc-handle-cvs' are also 1597obsolete now, you must set `vc-handled-backends' to nil or exclude 1598`CVS' from the list, respectively, to achieve their effect now. 1599 1600*** General Changes 1601 1602The variable `vc-checkout-carefully' is obsolete: the corresponding 1603checks are always done now. 1604 1605VC Dired buffers are now kept up-to-date during all version control 1606operations. 1607 1608`vc-diff' output is now displayed in `diff-mode'. 1609`vc-print-log' uses `log-view-mode'. 1610`vc-log-mode' (used for *VC-Log*) has been replaced by `log-edit-mode'. 1611 1612The command C-x v m (vc-merge) now accepts an empty argument as the 1613first revision number. This means that any recent changes on the 1614current branch should be picked up from the repository and merged into 1615the working file (``merge news''). 1616 1617The commands C-x v s (vc-create-snapshot) and C-x v r 1618(vc-retrieve-snapshot) now ask for a directory name from which to work 1619downwards. 1620 1621*** Multiple Backends 1622 1623VC now lets you register files in more than one backend. This is 1624useful, for example, if you are working with a slow remote CVS 1625repository. You can then use RCS for local editing, and occasionally 1626commit your changes back to CVS, or pick up changes from CVS into your 1627local RCS archives. 1628 1629To make this work, the ``more local'' backend (RCS in our example) 1630should come first in `vc-handled-backends', and the ``more remote'' 1631backend (CVS) should come later. (The default value of 1632`vc-handled-backends' already has it that way.) 1633 1634You can then commit changes to another backend (say, RCS), by typing 1635C-u C-x v v RCS RET (i.e. vc-next-action now accepts a backend name as 1636a revision number). VC registers the file in the more local backend 1637if that hasn't already happened, and commits to a branch based on the 1638current revision number from the more remote backend. 1639 1640If a file is registered in multiple backends, you can switch to 1641another one using C-x v b (vc-switch-backend). This does not change 1642any files, it only changes VC's perspective on the file. Use this to 1643pick up changes from CVS while working under RCS locally. 1644 1645After you are done with your local RCS editing, you can commit your 1646changes back to CVS using C-u C-x v v CVS RET. In this case, the 1647local RCS archive is removed after the commit, and the log entry 1648buffer is initialized to contain the entire RCS change log of the file. 1649 1650*** Changes for CVS 1651 1652There is a new user option, `vc-cvs-stay-local'. If it is `t' (the 1653default), then VC avoids network queries for files registered in 1654remote repositories. The state of such files is then only determined 1655by heuristics and past information. `vc-cvs-stay-local' can also be a 1656regexp to match against repository hostnames; only files from hosts 1657that match it are treated locally. If the variable is nil, then VC 1658queries the repository just as often as it does for local files. 1659 1660If `vc-cvs-stay-local' is on, then VC also makes local backups of 1661repository versions. This means that ordinary diffs (C-x v =) and 1662revert operations (C-x v u) can be done completely locally, without 1663any repository interactions at all. The name of a local version 1664backup of FILE is FILE.~REV.~, where REV is the repository version 1665number. This format is similar to that used by C-x v ~ 1666(vc-version-other-window), except for the trailing dot. As a matter 1667of fact, the two features can each use the files created by the other, 1668the only difference being that files with a trailing `.' are deleted 1669automatically after commit. (This feature doesn't work on MS-DOS, 1670since DOS disallows more than a single dot in the trunk of a file 1671name.) 1672 1673If `vc-cvs-stay-local' is on, and there have been changes in the 1674repository, VC notifies you about it when you actually try to commit. 1675If you want to check for updates from the repository without trying to 1676commit, you can either use C-x v m RET to perform an update on the 1677current file, or you can use C-x v r RET to get an update for an 1678entire directory tree. 1679 1680The new user option `vc-cvs-use-edit' indicates whether VC should call 1681"cvs edit" to make files writable; it defaults to `t'. (This option 1682is only meaningful if the CVSREAD variable is set, or if files are 1683"watched" by other developers.) 1684 1685The commands C-x v s (vc-create-snapshot) and C-x v r 1686(vc-retrieve-snapshot) are now also implemented for CVS. If you give 1687an empty snapshot name to the latter, that performs a `cvs update', 1688starting at the given directory. 1689 1690*** Lisp Changes in VC 1691 1692VC has been restructured internally to make it modular. You can now 1693add support for arbitrary version control backends by writing a 1694library that provides a certain set of backend-specific functions, and 1695then telling VC to use that library. For example, to add support for 1696a version system named SYS, you write a library named vc-sys.el, which 1697provides a number of functions vc-sys-... (see commentary at the top 1698of vc.el for a detailed list of them). To make VC use that library, 1699you need to put it somewhere into Emacs' load path and add the symbol 1700`SYS' to the list `vc-handled-backends'. 1701 1702** The customizable EDT emulation package now supports the EDT 1703SUBS command and EDT scroll margins. It also works with more 1704terminal/keyboard configurations and it now works under XEmacs. 1705See etc/edt-user.doc for more information. 1706 1707** New modes and packages 1708 1709*** The new global minor mode `minibuffer-electric-default-mode' 1710automatically hides the `(default ...)' part of minibuffer prompts when 1711the default is not applicable. 1712 1713*** Artist is an Emacs lisp package that allows you to draw lines, 1714rectangles and ellipses by using your mouse and/or keyboard. The 1715shapes are made up with the ascii characters |, -, / and \. 1716 1717Features are: 1718 1719- Intersecting: When a `|' intersects with a `-', a `+' is 1720 drawn, like this: | \ / 1721 --+-- X 1722 | / \ 1723 1724- Rubber-banding: When drawing lines you can interactively see the 1725 result while holding the mouse button down and moving the mouse. If 1726 your machine is not fast enough (a 386 is a bit too slow, but a 1727 pentium is well enough), you can turn this feature off. You will 1728 then see 1's and 2's which mark the 1st and 2nd endpoint of the line 1729 you are drawing. 1730 1731- Arrows: After having drawn a (straight) line or a (straight) 1732 poly-line, you can set arrows on the line-ends by typing < or >. 1733 1734- Flood-filling: You can fill any area with a certain character by 1735 flood-filling. 1736 1737- Cut copy and paste: You can cut, copy and paste rectangular 1738 regions. Artist also interfaces with the rect package (this can be 1739 turned off if it causes you any trouble) so anything you cut in 1740 artist can be yanked with C-x r y and vice versa. 1741 1742- Drawing with keys: Everything you can do with the mouse, you can 1743 also do without the mouse. 1744 1745- Aspect-ratio: You can set the variable artist-aspect-ratio to 1746 reflect the height-width ratio for the font you are using. Squares 1747 and circles are then drawn square/round. Note, that once your 1748 ascii-file is shown with font with a different height-width ratio, 1749 the squares won't be square and the circles won't be round. 1750 1751- Drawing operations: The following drawing operations are implemented: 1752 1753 lines straight-lines 1754 rectangles squares 1755 poly-lines straight poly-lines 1756 ellipses circles 1757 text (see-thru) text (overwrite) 1758 spray-can setting size for spraying 1759 vaporize line vaporize lines 1760 erase characters erase rectangles 1761 1762 Straight lines are lines that go horizontally, vertically or 1763 diagonally. Plain lines go in any direction. The operations in 1764 the right column are accessed by holding down the shift key while 1765 drawing. 1766 1767 It is possible to vaporize (erase) entire lines and connected lines 1768 (rectangles for example) as long as the lines being vaporized are 1769 straight and connected at their endpoints. Vaporizing is inspired 1770 by the drawrect package by Jari Aalto <jari.aalto@poboxes.com>. 1771 1772- Picture mode compatibility: Artist is picture mode compatible (this 1773 can be turned off). 1774 1775*** The new package Eshell is an operating system command shell 1776implemented entirely in Emacs Lisp. Use `M-x eshell' to invoke it. 1777It functions similarly to bash and zsh, and allows running of Lisp 1778functions and external commands using the same syntax. It supports 1779history lists, aliases, extended globbing, smart scrolling, etc. It 1780will work on any platform Emacs has been ported to. And since most of 1781the basic commands -- ls, rm, mv, cp, ln, du, cat, etc. -- have been 1782rewritten in Lisp, it offers an operating-system independent shell, 1783all within the scope of your Emacs process. 1784 1785*** The new package timeclock.el is a mode is for keeping track of time 1786intervals. You can use it for whatever purpose you like, but the 1787typical scenario is to keep track of how much time you spend working 1788on certain projects. 1789 1790*** The new package hi-lock.el provides commands to highlight matches 1791of interactively entered regexps. For example, 1792 1793 M-x highlight-regexp RET clearly RET RET 1794 1795will highlight all occurrences of `clearly' using a yellow background 1796face. New occurrences of `clearly' will be highlighted as they are 1797typed. `M-x unhighlight-regexp RET' will remove the highlighting. 1798Any existing face can be used for highlighting and a set of 1799appropriate faces is provided. The regexps can be written into the 1800current buffer in a form that will be recognized the next time the 1801corresponding file is read. There are commands to highlight matches 1802to phrases and to highlight entire lines containing a match. 1803 1804*** The new package zone.el plays games with Emacs' display when 1805Emacs is idle. 1806 1807*** The new package tildify.el allows to add hard spaces or other text 1808fragments in accordance with the current major mode. 1809 1810*** The new package xml.el provides a simple but generic XML 1811parser. It doesn't parse the DTDs however. 1812 1813*** The comment operations are now provided by the newcomment.el 1814package which allows different styles of comment-region and should 1815be more robust while offering the same functionality. 1816`comment-region' now doesn't always comment a-line-at-a-time, but only 1817comments the region, breaking the line at point if necessary. 1818 1819*** The Ebrowse package implements a C++ class browser and tags 1820facilities tailored for use with C++. It is documented in a 1821separate Texinfo file. 1822 1823*** The PCL-CVS package available by either running M-x cvs-examine or 1824by visiting a CVS administrative directory (with a prefix argument) 1825provides an alternative interface to VC-dired for CVS. It comes with 1826`log-view-mode' to view RCS and SCCS logs and `log-edit-mode' used to 1827enter check-in log messages. 1828 1829*** The new package called `woman' allows to browse Unix man pages 1830without invoking external programs. 1831 1832The command `M-x woman' formats manual pages entirely in Emacs Lisp 1833and then displays them, like `M-x manual-entry' does. Unlike 1834`manual-entry', `woman' does not invoke any external programs, so it 1835is useful on systems such as MS-DOS/MS-Windows where the `man' and 1836Groff or `troff' commands are not readily available. 1837 1838The command `M-x woman-find-file' asks for the file name of a man 1839page, then formats and displays it like `M-x woman' does. 1840 1841*** The new command M-x re-builder offers a convenient interface for 1842authoring regular expressions with immediate visual feedback. 1843 1844The buffer from which the command was called becomes the target for 1845the regexp editor popping up in a separate window. Matching text in 1846the target buffer is immediately color marked during the editing. 1847Each sub-expression of the regexp will show up in a different face so 1848even complex regexps can be edited and verified on target data in a 1849single step. 1850 1851On displays not supporting faces the matches instead blink like 1852matching parens to make them stand out. On such a setup you will 1853probably also want to use the sub-expression mode when the regexp 1854contains such to get feedback about their respective limits. 1855 1856*** glasses-mode is a minor mode that makes 1857unreadableIdentifiersLikeThis readable. It works as glasses, without 1858actually modifying content of a buffer. 1859 1860*** The package ebnf2ps translates an EBNF to a syntactic chart in 1861PostScript. 1862 1863Currently accepts ad-hoc EBNF, ISO EBNF and Bison/Yacc. 1864 1865The ad-hoc default EBNF syntax has the following elements: 1866 1867 ; comment (until end of line) 1868 A non-terminal 1869 "C" terminal 1870 ?C? special 1871 $A default non-terminal 1872 $"C" default terminal 1873 $?C? default special 1874 A = B. production (A is the header and B the body) 1875 C D sequence (C occurs before D) 1876 C | D alternative (C or D occurs) 1877 A - B exception (A excluding B, B without any non-terminal) 1878 n * A repetition (A repeats n (integer) times) 1879 (C) group (expression C is grouped together) 1880 [C] optional (C may or not occurs) 1881 C+ one or more occurrences of C 1882 {C}+ one or more occurrences of C 1883 {C}* zero or more occurrences of C 1884 {C} zero or more occurrences of C 1885 C / D equivalent to: C {D C}* 1886 {C || D}+ equivalent to: C {D C}* 1887 {C || D}* equivalent to: [C {D C}*] 1888 {C || D} equivalent to: [C {D C}*] 1889 1890Please, see ebnf2ps documentation for EBNF syntax and how to use it. 1891 1892*** The package align.el will align columns within a region, using M-x 1893align. Its mode-specific rules, based on regular expressions, 1894determine where the columns should be split. In C and C++, for 1895example, it will align variable names in declaration lists, or the 1896equal signs of assignments. 1897 1898*** `paragraph-indent-minor-mode' is a new minor mode supporting 1899paragraphs in the same style as `paragraph-indent-text-mode'. 1900 1901*** bs.el is a new package for buffer selection similar to 1902list-buffers or electric-buffer-list. Use M-x bs-show to display a 1903buffer menu with this package. See the Custom group `bs'. 1904 1905*** find-lisp.el is a package emulating the Unix find command in Lisp. 1906 1907*** calculator.el is a small calculator package that is intended to 1908replace desktop calculators such as xcalc and calc.exe. Actually, it 1909is not too small - it has more features than most desktop calculators, 1910and can be customized easily to get many more functions. It should 1911not be confused with "calc" which is a much bigger mathematical tool 1912which answers different needs. 1913 1914*** The minor modes cwarn-mode and global-cwarn-mode highlights 1915suspicious C and C++ constructions. Currently, assignments inside 1916expressions, semicolon following `if', `for' and `while' (except, of 1917course, after a `do .. while' statement), and C++ functions with 1918reference parameters are recognized. The modes require font-lock mode 1919to be enabled. 1920 1921*** smerge-mode.el provides `smerge-mode', a simple minor-mode for files 1922containing diff3-style conflict markers, such as generated by RCS. 1923 1924*** 5x5.el is a simple puzzle game. 1925 1926*** hl-line.el provides `hl-line-mode', a minor mode to highlight the 1927current line in the current buffer. It also provides 1928`global-hl-line-mode' to provide the same behavior in all buffers. 1929 1930*** ansi-color.el translates ANSI terminal escapes into text-properties. 1931 1932Please note: if `ansi-color-for-comint-mode' and 1933`global-font-lock-mode' are non-nil, loading ansi-color.el will 1934disable font-lock and add `ansi-color-apply' to 1935`comint-preoutput-filter-functions' for all shell-mode buffers. This 1936displays the output of "ls --color=yes" using the correct foreground 1937and background colors. 1938 1939*** delphi.el provides a major mode for editing the Delphi (Object 1940Pascal) language. 1941 1942*** quickurl.el provides a simple method of inserting a URL based on 1943the text at point. 1944 1945*** sql.el provides an interface to SQL data bases. 1946 1947*** fortune.el uses the fortune program to create mail/news signatures. 1948 1949*** whitespace.el is a package for warning about and cleaning bogus 1950whitespace in a file. 1951 1952*** PostScript mode (ps-mode) is a new major mode for editing PostScript 1953files. It offers: interaction with a PostScript interpreter, including 1954(very basic) error handling; fontification, easily customizable for 1955interpreter messages; auto-indentation; insertion of EPSF templates and 1956often used code snippets; viewing of BoundingBox; commenting out / 1957uncommenting regions; conversion of 8bit characters to PostScript octal 1958codes. All functionality is accessible through a menu. 1959 1960*** delim-col helps to prettify columns in a text region or rectangle. 1961 1962Here is an example of columns: 1963 1964horse apple bus 1965dog pineapple car EXTRA 1966porcupine strawberry airplane 1967 1968Doing the following settings: 1969 1970 (setq delimit-columns-str-before "[ ") 1971 (setq delimit-columns-str-after " ]") 1972 (setq delimit-columns-str-separator ", ") 1973 (setq delimit-columns-separator "\t") 1974 1975 1976Selecting the lines above and typing: 1977 1978 M-x delimit-columns-region 1979 1980It results: 1981 1982[ horse , apple , bus , ] 1983[ dog , pineapple , car , EXTRA ] 1984[ porcupine, strawberry, airplane, ] 1985 1986delim-col has the following options: 1987 1988 delimit-columns-str-before Specify a string to be inserted 1989 before all columns. 1990 1991 delimit-columns-str-separator Specify a string to be inserted 1992 between each column. 1993 1994 delimit-columns-str-after Specify a string to be inserted 1995 after all columns. 1996 1997 delimit-columns-separator Specify a regexp which separates 1998 each column. 1999 2000delim-col has the following commands: 2001 2002 delimit-columns-region Prettify all columns in a text region. 2003 delimit-columns-rectangle Prettify all columns in a text rectangle. 2004 2005*** Recentf mode maintains a menu for visiting files that were 2006operated on recently. User option recentf-menu-filter specifies a 2007menu filter function to change the menu appearance. For example, the 2008recent file list can be displayed: 2009 2010- organized by major modes, directories or user defined rules. 2011- sorted by file paths, file names, ascending or descending. 2012- showing paths relative to the current default-directory 2013 2014The `recentf-filter-changer' menu filter function allows to 2015dynamically change the menu appearance. 2016 2017*** elide-head.el provides a mechanism for eliding boilerplate header 2018text. 2019 2020*** footnote.el provides `footnote-mode', a minor mode supporting use 2021of footnotes. It is intended for use with Message mode, but isn't 2022specific to Message mode. 2023 2024*** diff-mode.el provides `diff-mode', a major mode for 2025viewing/editing context diffs (patches). It is selected for files 2026with extension `.diff', `.diffs', `.patch' and `.rej'. 2027 2028*** EUDC, the Emacs Unified Directory Client, provides a common user 2029interface to access directory servers using different directory 2030protocols. It has a separate manual. 2031 2032*** autoconf.el provides a major mode for editing configure.in files 2033for Autoconf, selected automatically. 2034 2035*** windmove.el provides moving between windows. 2036 2037*** crm.el provides a facility to read multiple strings from the 2038minibuffer with completion. 2039 2040*** todo-mode.el provides management of TODO lists and integration 2041with the diary features. 2042 2043*** autoarg.el provides a feature reported from Twenex Emacs whereby 2044numeric keys supply prefix args rather than self inserting. 2045 2046*** The function `turn-off-auto-fill' unconditionally turns off Auto 2047Fill mode. 2048 2049*** pcomplete.el is a library that provides programmable completion 2050facilities for Emacs, similar to what zsh and tcsh offer. The main 2051difference is that completion functions are written in Lisp, meaning 2052they can be profiled, debugged, etc. 2053 2054*** antlr-mode is a new major mode for editing ANTLR grammar files. 2055It is automatically turned on for files whose names have the extension 2056`.g'. 2057 2058** Changes in sort.el 2059 2060The function sort-numeric-fields interprets numbers starting with `0' 2061as octal and numbers starting with `0x' or `0X' as hexadecimal. The 2062new user-option sort-numeric-base can be used to specify a default 2063numeric base. 2064 2065** Changes to Ange-ftp 2066 2067*** Ange-ftp allows you to specify of a port number in remote file 2068names cleanly. It is appended to the host name, separated by a hash 2069sign, e.g. `/foo@bar.org#666:mumble'. (This syntax comes from EFS.) 2070 2071*** If the new user-option `ange-ftp-try-passive-mode' is set, passive 2072ftp mode will be used if the ftp client supports that. 2073 2074*** Ange-ftp handles the output of the w32-style clients which 2075output ^M at the end of lines. 2076 2077** The recommended way of using Iswitchb is via the new global minor 2078mode `iswitchb-mode'. 2079 2080** Just loading the msb package doesn't switch on Msb mode anymore. 2081If you have `(require 'msb)' in your .emacs, please replace it with 2082`(msb-mode 1)'. 2083 2084** Changes in Flyspell mode 2085 2086*** Flyspell mode has various new options. See the `flyspell' Custom 2087group. 2088 2089*** The variable `flyspell-generic-check-word-p' has been renamed 2090to `flyspell-generic-check-word-predicate'. The old name is still 2091available as alias. 2092 2093** The user option `backward-delete-char-untabify-method' controls the 2094behavior of `backward-delete-char-untabify'. The following values 2095are recognized: 2096 2097`untabify' -- turn a tab to many spaces, then delete one space; 2098`hungry' -- delete all whitespace, both tabs and spaces; 2099`all' -- delete all whitespace, including tabs, spaces and newlines; 2100nil -- just delete one character. 2101 2102Default value is `untabify'. 2103 2104[This change was made in Emacs 20.3 but not mentioned then.] 2105 2106** In Cperl mode `cperl-invalid-face' should now be a normal face 2107symbol, not double-quoted. 2108 2109** Some packages are declared obsolete, to be removed in a future 2110version. They are: auto-show, c-mode, hilit19, hscroll, ooutline, 2111profile, rnews, rnewspost, and sc. Their implementations have been 2112moved to lisp/obsolete. 2113 2114** auto-compression mode is no longer enabled just by loading jka-compr.el. 2115To control it, set `auto-compression-mode' via Custom or use the 2116`auto-compression-mode' command. 2117 2118** `browse-url-gnome-moz' is a new option for 2119`browse-url-browser-function', invoking Mozilla in GNOME, and 2120`browse-url-kde' can be chosen for invoking the KDE browser. 2121 2122** The user-option `browse-url-new-window-p' has been renamed to 2123`browse-url-new-window-flag'. 2124 2125** The functions `keep-lines', `flush-lines' and `how-many' now 2126operate on the active region in Transient Mark mode. 2127 2128** `gnus-user-agent' is a new possibility for `mail-user-agent'. It 2129is like `message-user-agent', but with all the Gnus paraphernalia. 2130 2131** The Strokes package has been updated. If your Emacs has XPM 2132support, you can use it for pictographic editing. In Strokes mode, 2133use C-mouse-2 to compose a complex stoke and insert it into the 2134buffer. You can encode or decode a strokes buffer with new commands 2135M-x strokes-encode-buffer and M-x strokes-decode-buffer. There is a 2136new command M-x strokes-list-strokes. 2137 2138** Hexl contains a new command `hexl-insert-hex-string' which inserts 2139a string of hexadecimal numbers read from the mini-buffer. 2140 2141** Hexl mode allows to insert non-ASCII characters. 2142 2143The non-ASCII characters are encoded using the same encoding as the 2144file you are visiting in Hexl mode. 2145 2146** Shell script mode changes. 2147 2148Shell script mode (sh-script) can now indent scripts for shells 2149derived from sh and rc. The indentation style is customizable, and 2150sh-script can attempt to "learn" the current buffer's style. 2151 2152** Etags changes. 2153 2154*** In DOS, etags looks for file.cgz if it cannot find file.c. 2155 2156*** New option --ignore-case-regex is an alternative to --regex. It is now 2157possible to bind a regexp to a language, by prepending the regexp with 2158{lang}, where lang is one of the languages that `etags --help' prints out. 2159This feature is useful especially for regex files, where each line contains 2160a regular expression. The manual contains details. 2161 2162*** In C and derived languages, etags creates tags for function 2163declarations when given the --declarations option. 2164 2165*** In C++, tags are created for "operator". The tags have the form 2166"operator+", without spaces between the keyword and the operator. 2167 2168*** You shouldn't generally need any more the -C or -c++ option: etags 2169automatically switches to C++ parsing when it meets the `class' or 2170`template' keywords. 2171 2172*** Etags now is able to delve at arbitrary deeps into nested structures in 2173C-like languages. Previously, it was limited to one or two brace levels. 2174 2175*** New language Ada: tags are functions, procedures, packages, tasks, and 2176types. 2177 2178*** In Fortran, `procedure' is not tagged. 2179 2180*** In Java, tags are created for "interface". 2181 2182*** In Lisp, "(defstruct (foo", "(defun (operator" and similar constructs 2183are now tagged. 2184 2185*** In makefiles, tags the targets. 2186 2187*** In Perl, the --globals option tags global variables. my and local 2188variables are tagged. 2189 2190*** New language Python: def and class at the beginning of a line are tags. 2191 2192*** .ss files are Scheme files, .pdb is PostScript with C syntax, .psw is 2193for PSWrap. 2194 2195** Changes in etags.el 2196 2197*** The new user-option tags-case-fold-search can be used to make 2198tags operations case-sensitive or case-insensitive. The default 2199is to use the same setting as case-fold-search. 2200 2201*** You can display additional output with M-x tags-apropos by setting 2202the new variable tags-apropos-additional-actions. 2203 2204If non-nil, the variable's value should be a list of triples (TITLE 2205FUNCTION TO-SEARCH). For each triple, M-x tags-apropos processes 2206TO-SEARCH and lists tags from it. TO-SEARCH should be an alist, 2207obarray, or symbol. If it is a symbol, the symbol's value is used. 2208 2209TITLE is a string to use to label the list of tags from TO-SEARCH. 2210 2211FUNCTION is a function to call when an entry is selected in the Tags 2212List buffer. It is called with one argument, the selected symbol. 2213 2214A useful example value for this variable might be something like: 2215 2216 '(("Emacs Lisp" Info-goto-emacs-command-node obarray) 2217 ("Common Lisp" common-lisp-hyperspec common-lisp-hyperspec-obarray) 2218 ("SCWM" scwm-documentation scwm-obarray)) 2219 2220*** The face tags-tag-face can be used to customize the appearance 2221of tags in the output of M-x tags-apropos. 2222 2223*** Setting tags-apropos-verbose to a non-nil value displays the 2224names of tags files in the *Tags List* buffer. 2225 2226*** You can now search for tags that are part of the filename itself. 2227If you have tagged the files topfile.c subdir/subfile.c 2228/tmp/tempfile.c, you can now search for tags "topfile.c", "subfile.c", 2229"dir/sub", "tempfile", "tempfile.c". If the tag matches the file name, 2230point will go to the beginning of the file. 2231 2232*** Compressed files are now transparently supported if 2233auto-compression-mode is active. You can tag (with Etags) and search 2234(with find-tag) both compressed and uncompressed files. 2235 2236*** Tags commands like M-x tags-search no longer change point 2237in buffers where no match is found. In buffers where a match is 2238found, the original value of point is pushed on the marker ring. 2239 2240** Fortran mode has a new command `fortran-strip-sequence-nos' to 2241remove text past column 72. The syntax class of `\' in Fortran is now 2242appropriate for C-style escape sequences in strings. 2243 2244** SGML mode's default `sgml-validate-command' is now `nsgmls'. 2245 2246** A new command `view-emacs-problems' (C-h P) displays the PROBLEMS file. 2247 2248** The Dabbrev package has a new user-option `dabbrev-ignored-regexps' 2249containing a list of regular expressions. Buffers matching a regular 2250expression from that list, are not checked. 2251 2252** Emacs can now figure out modification times of remote files. 2253When you do C-x C-f /user@host:/path/file RET and edit the file, 2254and someone else modifies the file, you will be prompted to revert 2255the buffer, just like for the local files. 2256 2257** The buffer menu (C-x C-b) no longer lists the *Buffer List* buffer. 2258 2259** When invoked with a prefix argument, the command `list-abbrevs' now 2260displays local abbrevs, only. 2261 2262** Refill minor mode provides preliminary support for keeping 2263paragraphs filled as you modify them. 2264 2265** The variable `double-click-fuzz' specifies how much the mouse 2266may be moved between clicks that are recognized as a pair. Its value 2267is measured in pixels. 2268 2269** The new global minor mode `auto-image-file-mode' allows image files 2270to be visited as images. 2271 2272** Two new user-options `grep-command' and `grep-find-command' 2273were added to compile.el. 2274 2275** Withdrawn packages 2276 2277*** mldrag.el has been removed. mouse.el provides the same 2278functionality with aliases for the mldrag functions. 2279 2280*** eval-reg.el has been obsoleted by changes to edebug.el and removed. 2281 2282*** ph.el has been obsoleted by EUDC and removed. 2283 2284 2285* Incompatible Lisp changes in 21.1 2286 2287There are a few Lisp changes which are not backwards-compatible and 2288may require changes to existing code. Here is a list for reference. 2289See the sections below for details. 2290 2291** Since `format' preserves text properties, the idiom 2292`(format "%s" foo)' no longer works to copy and remove properties. 2293Use `copy-sequence' to copy the string, then use `set-text-properties' 2294to remove the properties of the copy. 2295 2296** Since the `keymap' text property now has significance, some code 2297which uses both `local-map' and `keymap' properties (for portability) 2298may, for instance, give rise to duplicate menus when the keymaps from 2299these properties are active. 2300 2301** The change in the treatment of non-ASCII characters in search 2302ranges may affect some code. 2303 2304** A non-nil value for the LOCAL arg of add-hook makes the hook 2305buffer-local even if `make-local-hook' hasn't been called, which might 2306make a difference to some code. 2307 2308** The new treatment of the minibuffer prompt might affect code which 2309operates on the minibuffer. 2310 2311** The new character sets `eight-bit-control' and `eight-bit-graphic' 2312cause `no-conversion' and `emacs-mule-unix' coding systems to produce 2313different results when reading files with non-ASCII characters 2314(previously, both coding systems would produce the same results). 2315Specifically, `no-conversion' interprets each 8-bit byte as a separate 2316character. This makes `no-conversion' inappropriate for reading 2317multibyte text, e.g. buffers written to disk in their internal MULE 2318encoding (auto-saving does that, for example). If a Lisp program 2319reads such files with `no-conversion', each byte of the multibyte 2320sequence, including the MULE leading codes such as \201, is treated as 2321a separate character, which prevents them from being interpreted in 2322the buffer as multibyte characters. 2323 2324Therefore, Lisp programs that read files which contain the internal 2325MULE encoding should use `emacs-mule-unix'. `no-conversion' is only 2326appropriate for reading truly binary files. 2327 2328** Code that relies on the obsolete `before-change-function' and 2329`after-change-function' to detect buffer changes will now fail. Use 2330`before-change-functions' and `after-change-functions' instead. 2331 2332** Code that uses `concat' with integer args now gets an error, as 2333long promised. So does any code that uses derivatives of `concat', 2334such as `mapconcat'. 2335 2336** The function base64-decode-string now always returns a unibyte 2337string. 2338 2339** Not a Lisp incompatibility as such but, with the introduction of 2340extra private charsets, there is now only one slot free for a new 2341dimension-2 private charset. User code which tries to add more than 2342one extra will fail unless you rebuild Emacs with some standard 2343charset(s) removed; that is probably inadvisable because it changes 2344the emacs-mule encoding. Also, files stored in the emacs-mule 2345encoding using Emacs 20 with additional private charsets defined will 2346probably not be read correctly by Emacs 21. 2347 2348** The variable `directory-sep-char' is slated for removal. 2349Not really a change (yet), but a projected one that you should be 2350aware of: The variable `directory-sep-char' is deprecated, and should 2351not be used. It was always ignored on GNU/Linux and Unix systems and 2352on MS-DOS, but the MS-Windows port tried to support it by adapting the 2353behavior of certain primitives to the value of this variable. It 2354turned out that such support cannot be reliable, so it was decided to 2355remove this variable in the near future. Lisp programs are well 2356advised not to set it to anything but '/', because any different value 2357will not have any effect when support for this variable is removed. 2358 2359 2360* Lisp changes made after edition 2.6 of the Emacs Lisp Manual, 2361(Display-related features are described in a page of their own below.) 2362 2363** Function assq-delete-all replaces function assoc-delete-all. 2364 2365** The new function animate-string, from lisp/play/animate.el 2366allows the animated display of strings. 2367 2368** The new function `interactive-form' can be used to obtain the 2369interactive form of a function. 2370 2371** The keyword :set-after in defcustom allows to specify dependencies 2372between custom options. Example: 2373 2374 (defcustom default-input-method nil 2375 "*Default input method for multilingual text (a string). 2376 This is the input method activated automatically by the command 2377 `toggle-input-method' (\\[toggle-input-method])." 2378 :group 'mule 2379 :type '(choice (const nil) string) 2380 :set-after '(current-language-environment)) 2381 2382This specifies that default-input-method should be set after 2383current-language-environment even if default-input-method appears 2384first in a custom-set-variables statement. 2385 2386** The new hook `kbd-macro-termination-hook' is run at the end of 2387function execute-kbd-macro. Functions on this hook are called with no 2388args. The hook is run independent of how the macro was terminated 2389(signal or normal termination). 2390 2391** Functions `butlast' and `nbutlast' for removing trailing elements 2392from a list are now available without requiring the CL package. 2393 2394** The new user-option `even-window-heights' can be set to nil 2395to prevent `display-buffer' from evening out window heights. 2396 2397** The user-option `face-font-registry-alternatives' specifies 2398alternative font registry names to try when looking for a font. 2399 2400** Function `md5' calculates the MD5 "message digest"/"checksum". 2401 2402** Function `delete-frame' runs `delete-frame-hook' before actually 2403deleting the frame. The hook is called with one arg, the frame 2404being deleted. 2405 2406** `add-hook' now makes the hook local if called with a non-nil LOCAL arg. 2407 2408** The treatment of non-ASCII characters in search ranges has changed. 2409If a range in a regular expression or the arg of 2410skip-chars-forward/backward starts with a unibyte character C and ends 2411with a multibyte character C2, the range is divided into two: one is 2412C..?\377, the other is C1..C2, where C1 is the first character of C2's 2413charset. 2414 2415** The new function `display-message-or-buffer' displays a message in 2416the echo area or pops up a buffer, depending on the length of the 2417message. 2418 2419** The new macro `with-auto-compression-mode' allows evaluating an 2420expression with auto-compression-mode enabled. 2421 2422** In image specifications, `:heuristic-mask' has been replaced 2423with the more general `:mask' property. 2424 2425** Image specifications accept more `:conversion's. 2426 2427** A `?' can be used in a symbol name without escaping it with a 2428backslash. 2429 2430** Reading from the mini-buffer now reads from standard input if Emacs 2431is running in batch mode. For example, 2432 2433 (message "%s" (read t)) 2434 2435will read a Lisp expression from standard input and print the result 2436to standard output. 2437 2438** The argument of `down-list', `backward-up-list', `up-list', 2439`kill-sexp', `backward-kill-sexp' and `mark-sexp' is now optional. 2440 2441** If `display-buffer-reuse-frames' is set, function `display-buffer' 2442will raise frames displaying a buffer, instead of creating a new 2443frame or window. 2444 2445** Two new functions for removing elements from lists/sequences 2446were added 2447 2448- Function: remove ELT SEQ 2449 2450Return a copy of SEQ with all occurrences of ELT removed. SEQ must be 2451a list, vector, or string. The comparison is done with `equal'. 2452 2453- Function: remq ELT LIST 2454 2455Return a copy of LIST with all occurrences of ELT removed. The 2456comparison is done with `eq'. 2457 2458** The function `delete' now also works with vectors and strings. 2459 2460** The meaning of the `:weakness WEAK' argument of make-hash-table 2461has been changed: WEAK can now have new values `key-or-value' and 2462`key-and-value', in addition to `nil', `key', `value', and `t'. 2463 2464** Function `aset' stores any multibyte character in any string 2465without signaling "Attempt to change char length of a string". It may 2466convert a unibyte string to multibyte if necessary. 2467 2468** The value of the `help-echo' text property is called as a function 2469or evaluated, if it is not a string already, to obtain a help string. 2470 2471** Function `make-obsolete' now has an optional arg to say when the 2472function was declared obsolete. 2473 2474** Function `plist-member' is renamed from `widget-plist-member' (which is 2475retained as an alias). 2476 2477** Easy-menu's :filter now takes the unconverted form of the menu and 2478the result is automatically converted to Emacs' form. 2479 2480** The new function `window-list' has been defined 2481 2482- Function: window-list &optional FRAME WINDOW MINIBUF 2483 2484Return a list of windows on FRAME, starting with WINDOW. FRAME nil or 2485omitted means use the selected frame. WINDOW nil or omitted means use 2486the selected window. MINIBUF t means include the minibuffer window, 2487even if it isn't active. MINIBUF nil or omitted means include the 2488minibuffer window only if it's active. MINIBUF neither nil nor t 2489means never include the minibuffer window. 2490 2491** There's a new function `get-window-with-predicate' defined as follows 2492 2493- Function: get-window-with-predicate PREDICATE &optional MINIBUF ALL-FRAMES DEFAULT 2494 2495Return a window satisfying PREDICATE. 2496 2497This function cycles through all visible windows using `walk-windows', 2498calling PREDICATE on each one. PREDICATE is called with a window as 2499argument. The first window for which PREDICATE returns a non-nil 2500value is returned. If no window satisfies PREDICATE, DEFAULT is 2501returned. 2502 2503Optional second arg MINIBUF t means count the minibuffer window even 2504if not active. MINIBUF nil or omitted means count the minibuffer if 2505it is active. MINIBUF neither t nor nil means not to count the 2506minibuffer even if it is active. 2507 2508Several frames may share a single minibuffer; if the minibuffer 2509counts, all windows on all frames that share that minibuffer count 2510too. Therefore, if you are using a separate minibuffer frame 2511and the minibuffer is active and MINIBUF says it counts, 2512`walk-windows' includes the windows in the frame from which you 2513entered the minibuffer, as well as the minibuffer window. 2514 2515ALL-FRAMES is the optional third argument. 2516ALL-FRAMES nil or omitted means cycle within the frames as specified above. 2517ALL-FRAMES = `visible' means include windows on all visible frames. 2518ALL-FRAMES = 0 means include windows on all visible and iconified frames. 2519ALL-FRAMES = t means include windows on all frames including invisible frames. 2520If ALL-FRAMES is a frame, it means include windows on that frame. 2521Anything else means restrict to the selected frame. 2522 2523** The function `single-key-description' now encloses function key and 2524event names in angle brackets. When called with a second optional 2525argument non-nil, angle brackets won't be printed. 2526 2527** If the variable `message-truncate-lines' is bound to t around a 2528call to `message', the echo area will not be resized to display that 2529message; it will be truncated instead, as it was done in 20.x. 2530Default value is nil. 2531 2532** The user option `line-number-display-limit' can now be set to nil, 2533meaning no limit. 2534 2535** The new user option `line-number-display-limit-width' controls 2536the maximum width of lines in a buffer for which Emacs displays line 2537numbers in the mode line. The default is 200. 2538 2539** `select-safe-coding-system' now also checks the most preferred 2540coding-system if buffer-file-coding-system is `undecided' and 2541DEFAULT-CODING-SYSTEM is not specified, 2542 2543** The function `subr-arity' provides information about the argument 2544list of a primitive. 2545 2546** `where-is-internal' now also accepts a list of keymaps. 2547 2548** The text property `keymap' specifies a key map which overrides the 2549buffer's local map and the map specified by the `local-map' property. 2550This is probably what most current uses of `local-map' want, rather 2551than replacing the local map. 2552 2553** The obsolete variables `before-change-function' and 2554`after-change-function' are no longer acted upon and have been 2555removed. Use `before-change-functions' and `after-change-functions' 2556instead. 2557 2558** The function `apropos-mode' runs the hook `apropos-mode-hook'. 2559 2560** `concat' no longer accepts individual integer arguments, 2561as promised long ago. 2562 2563** The new function `float-time' returns the current time as a float. 2564 2565** The new variable auto-coding-regexp-alist specifies coding systems 2566for reading specific files, analogous to auto-coding-alist, but 2567patterns are checked against file contents instead of file names. 2568 2569 2570* Lisp changes in Emacs 21.1 (see following page for display-related features) 2571 2572** The new package rx.el provides an alternative sexp notation for 2573regular expressions. 2574 2575- Function: rx-to-string SEXP 2576 2577Translate SEXP into a regular expression in string notation. 2578 2579- Macro: rx SEXP 2580 2581Translate SEXP into a regular expression in string notation. 2582 2583The following are valid subforms of regular expressions in sexp 2584notation. 2585 2586STRING 2587 matches string STRING literally. 2588 2589CHAR 2590 matches character CHAR literally. 2591 2592`not-newline' 2593 matches any character except a newline. 2594 . 2595`anything' 2596 matches any character 2597 2598`(any SET)' 2599 matches any character in SET. SET may be a character or string. 2600 Ranges of characters can be specified as `A-Z' in strings. 2601 2602'(in SET)' 2603 like `any'. 2604 2605`(not (any SET))' 2606 matches any character not in SET 2607 2608`line-start' 2609 matches the empty string, but only at the beginning of a line 2610 in the text being matched 2611 2612`line-end' 2613 is similar to `line-start' but matches only at the end of a line 2614 2615`string-start' 2616 matches the empty string, but only at the beginning of the 2617 string being matched against. 2618 2619`string-end' 2620 matches the empty string, but only at the end of the 2621 string being matched against. 2622 2623`buffer-start' 2624 matches the empty string, but only at the beginning of the 2625 buffer being matched against. 2626 2627`buffer-end' 2628 matches the empty string, but only at the end of the 2629 buffer being matched against. 2630 2631`point' 2632 matches the empty string, but only at point. 2633 2634`word-start' 2635 matches the empty string, but only at the beginning or end of a 2636 word. 2637 2638`word-end' 2639 matches the empty string, but only at the end of a word. 2640 2641`word-boundary' 2642 matches the empty string, but only at the beginning or end of a 2643 word. 2644 2645`(not word-boundary)' 2646 matches the empty string, but not at the beginning or end of a 2647 word. 2648 2649`digit' 2650 matches 0 through 9. 2651 2652`control' 2653 matches ASCII control characters. 2654 2655`hex-digit' 2656 matches 0 through 9, a through f and A through F. 2657 2658`blank' 2659 matches space and tab only. 2660 2661`graphic' 2662 matches graphic characters--everything except ASCII control chars, 2663 space, and DEL. 2664 2665`printing' 2666 matches printing characters--everything except ASCII control chars 2667 and DEL. 2668 2669`alphanumeric' 2670 matches letters and digits. (But at present, for multibyte characters, 2671 it matches anything that has word syntax.) 2672 2673`letter' 2674 matches letters. (But at present, for multibyte characters, 2675 it matches anything that has word syntax.) 2676 2677`ascii' 2678 matches ASCII (unibyte) characters. 2679 2680`nonascii' 2681 matches non-ASCII (multibyte) characters. 2682 2683`lower' 2684 matches anything lower-case. 2685 2686`upper' 2687 matches anything upper-case. 2688 2689`punctuation' 2690 matches punctuation. (But at present, for multibyte characters, 2691 it matches anything that has non-word syntax.) 2692 2693`space' 2694 matches anything that has whitespace syntax. 2695 2696`word' 2697 matches anything that has word syntax. 2698 2699`(syntax SYNTAX)' 2700 matches a character with syntax SYNTAX. SYNTAX must be one 2701 of the following symbols. 2702 2703 `whitespace' (\\s- in string notation) 2704 `punctuation' (\\s.) 2705 `word' (\\sw) 2706 `symbol' (\\s_) 2707 `open-parenthesis' (\\s() 2708 `close-parenthesis' (\\s)) 2709 `expression-prefix' (\\s') 2710 `string-quote' (\\s\") 2711 `paired-delimiter' (\\s$) 2712 `escape' (\\s\\) 2713 `character-quote' (\\s/) 2714 `comment-start' (\\s<) 2715 `comment-end' (\\s>) 2716 2717`(not (syntax SYNTAX))' 2718 matches a character that has not syntax SYNTAX. 2719 2720`(category CATEGORY)' 2721 matches a character with category CATEGORY. CATEGORY must be 2722 either a character to use for C, or one of the following symbols. 2723 2724 `consonant' (\\c0 in string notation) 2725 `base-vowel' (\\c1) 2726 `upper-diacritical-mark' (\\c2) 2727 `lower-diacritical-mark' (\\c3) 2728 `tone-mark' (\\c4) 2729 `symbol' (\\c5) 2730 `digit' (\\c6) 2731 `vowel-modifying-diacritical-mark' (\\c7) 2732 `vowel-sign' (\\c8) 2733 `semivowel-lower' (\\c9) 2734 `not-at-end-of-line' (\\c<) 2735 `not-at-beginning-of-line' (\\c>) 2736 `alpha-numeric-two-byte' (\\cA) 2737 `chinse-two-byte' (\\cC) 2738 `greek-two-byte' (\\cG) 2739 `japanese-hiragana-two-byte' (\\cH) 2740 `indian-two-byte' (\\cI) 2741 `japanese-katakana-two-byte' (\\cK) 2742 `korean-hangul-two-byte' (\\cN) 2743 `cyrillic-two-byte' (\\cY) 2744 `ascii' (\\ca) 2745 `arabic' (\\cb) 2746 `chinese' (\\cc) 2747 `ethiopic' (\\ce) 2748 `greek' (\\cg) 2749 `korean' (\\ch) 2750 `indian' (\\ci) 2751 `japanese' (\\cj) 2752 `japanese-katakana' (\\ck) 2753 `latin' (\\cl) 2754 `lao' (\\co) 2755 `tibetan' (\\cq) 2756 `japanese-roman' (\\cr) 2757 `thai' (\\ct) 2758 `vietnamese' (\\cv) 2759 `hebrew' (\\cw) 2760 `cyrillic' (\\cy) 2761 `can-break' (\\c|) 2762 2763`(not (category CATEGORY))' 2764 matches a character that has not category CATEGORY. 2765 2766`(and SEXP1 SEXP2 ...)' 2767 matches what SEXP1 matches, followed by what SEXP2 matches, etc. 2768 2769`(submatch SEXP1 SEXP2 ...)' 2770 like `and', but makes the match accessible with `match-end', 2771 `match-beginning', and `match-string'. 2772 2773`(group SEXP1 SEXP2 ...)' 2774 another name for `submatch'. 2775 2776`(or SEXP1 SEXP2 ...)' 2777 matches anything that matches SEXP1 or SEXP2, etc. If all 2778 args are strings, use `regexp-opt' to optimize the resulting 2779 regular expression. 2780 2781`(minimal-match SEXP)' 2782 produce a non-greedy regexp for SEXP. Normally, regexps matching 2783 zero or more occurrences of something are \"greedy\" in that they 2784 match as much as they can, as long as the overall regexp can 2785 still match. A non-greedy regexp matches as little as possible. 2786 2787`(maximal-match SEXP)' 2788 produce a greedy regexp for SEXP. This is the default. 2789 2790`(zero-or-more SEXP)' 2791 matches zero or more occurrences of what SEXP matches. 2792 2793`(0+ SEXP)' 2794 like `zero-or-more'. 2795 2796`(* SEXP)' 2797 like `zero-or-more', but always produces a greedy regexp. 2798 2799`(*? SEXP)' 2800 like `zero-or-more', but always produces a non-greedy regexp. 2801 2802`(one-or-more SEXP)' 2803 matches one or more occurrences of A. 2804 2805`(1+ SEXP)' 2806 like `one-or-more'. 2807 2808`(+ SEXP)' 2809 like `one-or-more', but always produces a greedy regexp. 2810 2811`(+? SEXP)' 2812 like `one-or-more', but always produces a non-greedy regexp. 2813 2814`(zero-or-one SEXP)' 2815 matches zero or one occurrences of A. 2816 2817`(optional SEXP)' 2818 like `zero-or-one'. 2819 2820`(? SEXP)' 2821 like `zero-or-one', but always produces a greedy regexp. 2822 2823`(?? SEXP)' 2824 like `zero-or-one', but always produces a non-greedy regexp. 2825 2826`(repeat N SEXP)' 2827 matches N occurrences of what SEXP matches. 2828 2829`(repeat N M SEXP)' 2830 matches N to M occurrences of what SEXP matches. 2831 2832`(eval FORM)' 2833 evaluate FORM and insert result. If result is a string, 2834 `regexp-quote' it. 2835 2836`(regexp REGEXP)' 2837 include REGEXP in string notation in the result. 2838 2839*** The features `md5' and `overlay' are now provided by default. 2840 2841*** The special form `save-restriction' now works correctly even if the 2842buffer is widened inside the save-restriction and changes made outside 2843the original restriction. Previously, doing this would cause the saved 2844restriction to be restored incorrectly. 2845 2846*** The functions `find-charset-region' and `find-charset-string' include 2847`eight-bit-control' and/or `eight-bit-graphic' in the returned list 2848when they find 8-bit characters. Previously, they included `ascii' in a 2849multibyte buffer and `unknown' in a unibyte buffer. 2850 2851*** The functions `set-buffer-multibyte', `string-as-multibyte' and 2852`string-as-unibyte' change the byte sequence of a buffer or a string 2853if it contains a character from the `eight-bit-control' character set. 2854 2855*** The handling of multibyte sequences in a multibyte buffer is 2856changed. Previously, a byte sequence matching the pattern 2857[\200-\237][\240-\377]+ was interpreted as a single character 2858regardless of the length of the trailing bytes [\240-\377]+. Thus, if 2859the sequence was longer than what the leading byte indicated, the 2860extra trailing bytes were ignored by Lisp functions. Now such extra 2861bytes are independent 8-bit characters belonging to the charset 2862eight-bit-graphic. 2863 2864** Fontsets are now implemented using char-tables. 2865 2866A fontset can now be specified for each independent character, for 2867a group of characters or for a character set rather than just for a 2868character set as previously. 2869 2870*** The arguments of the function `set-fontset-font' are changed. 2871They are NAME, CHARACTER, FONTNAME, and optional FRAME. The function 2872modifies fontset NAME to use FONTNAME for CHARACTER. 2873 2874CHARACTER may be a cons (FROM . TO), where FROM and TO are non-generic 2875characters. In that case FONTNAME is used for all characters in the 2876range FROM and TO (inclusive). CHARACTER may be a charset. In that 2877case FONTNAME is used for all character in the charset. 2878 2879FONTNAME may be a cons (FAMILY . REGISTRY), where FAMILY is the family 2880name of a font and REGISTRY is a registry name of a font. 2881 2882*** Variable x-charset-registry has been deleted. The default charset 2883registries of character sets are set in the default fontset 2884"fontset-default". 2885 2886*** The function `create-fontset-from-fontset-spec' ignores the second 2887argument STYLE-VARIANT. It never creates style-variant fontsets. 2888 2889** The method of composing characters is changed. Now character 2890composition is done by a special text property `composition' in 2891buffers and strings. 2892 2893*** Charset composition is deleted. Emacs never creates a `composite 2894character' which is an independent character with a unique character 2895code. Thus the following functions handling `composite characters' 2896have been deleted: composite-char-component, 2897composite-char-component-count, composite-char-composition-rule, 2898composite-char-composition-rule and decompose-composite-char delete. 2899The variables leading-code-composition and min-composite-char have 2900also been deleted. 2901 2902*** Three more glyph reference points are added. They can be used to 2903specify a composition rule. See the documentation of the variable 2904`reference-point-alist' for more detail. 2905 2906*** The function `compose-region' takes new arguments COMPONENTS and 2907MODIFICATION-FUNC. With COMPONENTS, you can specify not only a 2908composition rule but also characters to be composed. Such characters 2909may differ between buffer and string text. 2910 2911*** The function `compose-string' takes new arguments START, END, 2912COMPONENTS, and MODIFICATION-FUNC. 2913 2914*** The function `compose-string' puts text property `composition' 2915directly on the argument STRING instead of returning a new string. 2916Likewise, the function `decompose-string' just removes text property 2917`composition' from STRING. 2918 2919*** The new function `find-composition' returns information about 2920a composition at a specified position in a buffer or a string. 2921 2922*** The function `decompose-composite-char' is now labeled as 2923obsolete. 2924 2925** The new coding system `mac-roman' is primarily intended for use on 2926the Macintosh but may be used generally for Macintosh-encoded text. 2927 2928** The new character sets `mule-unicode-0100-24ff', 2929`mule-unicode-2500-33ff', and `mule-unicode-e000-ffff' have been 2930introduced for Unicode characters in the range U+0100..U+24FF, 2931U+2500..U+33FF, U+E000..U+FFFF respectively. 2932 2933Note that the character sets are not yet unified in Emacs, so 2934characters which belong to charsets such as Latin-2, Greek, Hebrew, 2935etc. and the same characters in the `mule-unicode-*' charsets are 2936different characters, as far as Emacs is concerned. For example, text 2937which includes Unicode characters from the Latin-2 locale cannot be 2938encoded by Emacs with ISO 8859-2 coding system. 2939 2940** The new coding system `mule-utf-8' has been added. 2941It provides limited support for decoding/encoding UTF-8 text. For 2942details, please see the documentation string of this coding system. 2943 2944** The new character sets `japanese-jisx0213-1' and 2945`japanese-jisx0213-2' have been introduced for the new Japanese 2946standard JIS X 0213 Plane 1 and Plane 2. 2947 2948** The new character sets `latin-iso8859-14' and `latin-iso8859-15' 2949have been introduced. 2950 2951** The new character sets `eight-bit-control' and `eight-bit-graphic' 2952have been introduced for 8-bit characters in the ranges 0x80..0x9F and 29530xA0..0xFF respectively. Note that the multibyte representation of 2954eight-bit-control is never exposed; this leads to an exception in the 2955emacs-mule coding system, which encodes everything else to the 2956buffer/string internal representation. Note that to search for 2957eight-bit-graphic characters in a multibyte buffer, the search string 2958must be multibyte, otherwise such characters will be converted to 2959their multibyte equivalent. 2960 2961** If the APPEND argument of `write-region' is an integer, it seeks to 2962that offset in the file before writing. 2963 2964** The function `add-minor-mode' has been added for convenience and 2965compatibility with XEmacs (and is used internally by define-minor-mode). 2966 2967** The function `shell-command' now sets the default directory of the 2968`*Shell Command Output*' buffer to the default directory of the buffer 2969from which the command was issued. 2970 2971** The functions `query-replace', `query-replace-regexp', 2972`query-replace-regexp-eval' `map-query-replace-regexp', 2973`replace-string', `replace-regexp', and `perform-replace' take two 2974additional optional arguments START and END that specify the region to 2975operate on. 2976 2977** The new function `count-screen-lines' is a more flexible alternative 2978to `window-buffer-height'. 2979 2980- Function: count-screen-lines &optional BEG END COUNT-FINAL-NEWLINE WINDOW 2981 2982Return the number of screen lines in the region between BEG and END. 2983The number of screen lines may be different from the number of actual 2984lines, due to line breaking, display table, etc. 2985 2986Optional arguments BEG and END default to `point-min' and `point-max' 2987respectively. 2988 2989If region ends with a newline, ignore it unless optional third argument 2990COUNT-FINAL-NEWLINE is non-nil. 2991 2992The optional fourth argument WINDOW specifies the window used for 2993obtaining parameters such as width, horizontal scrolling, and so 2994on. The default is to use the selected window's parameters. 2995 2996Like `vertical-motion', `count-screen-lines' always uses the current 2997buffer, regardless of which buffer is displayed in WINDOW. This makes 2998possible to use `count-screen-lines' in any buffer, whether or not it 2999is currently displayed in some window. 3000 3001** The new function `mapc' is like `mapcar' but doesn't collect the 3002argument function's results. 3003 3004** The functions base64-decode-region and base64-decode-string now 3005signal an error instead of returning nil if decoding fails. Also, 3006`base64-decode-string' now always returns a unibyte string (in Emacs 300720, it returned a multibyte string when the result was a valid multibyte 3008sequence). 3009 3010** The function sendmail-user-agent-compose now recognizes a `body' 3011header in the list of headers passed to it. 3012 3013** The new function member-ignore-case works like `member', but 3014ignores differences in case and text representation. 3015 3016** The buffer-local variable cursor-type can be used to specify the 3017cursor to use in windows displaying a buffer. Values are interpreted 3018as follows: 3019 3020 t use the cursor specified for the frame (default) 3021 nil don't display a cursor 3022 `bar' display a bar cursor with default width 3023 (bar . WIDTH) display a bar cursor with width WIDTH 3024 others display a box cursor. 3025 3026** The variable open-paren-in-column-0-is-defun-start controls whether 3027an open parenthesis in column 0 is considered to be the start of a 3028defun. If set, the default, it is considered a defun start. If not 3029set, an open parenthesis in column 0 has no special meaning. 3030 3031** The new function `string-to-syntax' can be used to translate syntax 3032specifications in string form as accepted by `modify-syntax-entry' to 3033the cons-cell form that is used for the values of the `syntax-table' 3034text property, and in `font-lock-syntactic-keywords'. 3035 3036Example: 3037 3038 (string-to-syntax "()") 3039 => (4 . 41) 3040 3041** Emacs' reader supports CL read syntax for integers in bases 3042other than 10. 3043 3044*** `#BINTEGER' or `#bINTEGER' reads INTEGER in binary (radix 2). 3045INTEGER optionally contains a sign. 3046 3047 #b1111 3048 => 15 3049 #b-1111 3050 => -15 3051 3052*** `#OINTEGER' or `#oINTEGER' reads INTEGER in octal (radix 8). 3053 3054 #o666 3055 => 438 3056 3057*** `#XINTEGER' or `#xINTEGER' reads INTEGER in hexadecimal (radix 16). 3058 3059 #xbeef 3060 => 48815 3061 3062*** `#RADIXrINTEGER' reads INTEGER in radix RADIX, 2 <= RADIX <= 36. 3063 3064 #2R-111 3065 => -7 3066 #25rah 3067 => 267 3068 3069** The function `documentation-property' now evaluates the value of 3070the given property to obtain a string if it doesn't refer to etc/DOC 3071and isn't a string. 3072 3073** If called for a symbol, the function `documentation' now looks for 3074a `function-documentation' property of that symbol. If it has a non-nil 3075value, the documentation is taken from that value. If the value is 3076not a string, it is evaluated to obtain a string. 3077 3078** The last argument of `define-key-after' defaults to t for convenience. 3079 3080** The new function `replace-regexp-in-string' replaces all matches 3081for a regexp in a string. 3082 3083** `mouse-position' now runs the abnormal hook 3084`mouse-position-function'. 3085 3086** The function string-to-number now returns a float for numbers 3087that don't fit into a Lisp integer. 3088 3089** The variable keyword-symbols-constants-flag has been removed. 3090Keywords are now always considered constants. 3091 3092** The new function `delete-and-extract-region' deletes text and 3093returns it. 3094 3095** The function `clear-this-command-keys' now also clears the vector 3096returned by function `recent-keys'. 3097 3098** Variables `beginning-of-defun-function' and `end-of-defun-function' 3099can be used to define handlers for the functions that find defuns. 3100Major modes can define these locally instead of rebinding C-M-a 3101etc. if the normal conventions for defuns are not appropriate for the 3102mode. 3103 3104** easy-mmode-define-minor-mode now takes an additional BODY argument 3105and is renamed `define-minor-mode'. 3106 3107** If an abbrev has a hook function which is a symbol, and that symbol 3108has a non-nil `no-self-insert' property, the return value of the hook 3109function specifies whether an expansion has been done or not. If it 3110returns nil, abbrev-expand also returns nil, meaning "no expansion has 3111been performed." 3112 3113When abbrev expansion is done by typing a self-inserting character, 3114and the abbrev has a hook with the `no-self-insert' property, and the 3115hook function returns non-nil meaning expansion has been done, 3116then the self-inserting character is not inserted. 3117 3118** The function `intern-soft' now accepts a symbol as first argument. 3119In this case, that exact symbol is looked up in the specified obarray, 3120and the function's value is nil if it is not found. 3121 3122** The new macro `with-syntax-table' can be used to evaluate forms 3123with the syntax table of the current buffer temporarily set to a 3124specified table. 3125 3126 (with-syntax-table TABLE &rest BODY) 3127 3128Evaluate BODY with syntax table of current buffer set to a copy of 3129TABLE. The current syntax table is saved, BODY is evaluated, and the 3130saved table is restored, even in case of an abnormal exit. Value is 3131what BODY returns. 3132 3133** Regular expressions now support intervals \{n,m\} as well as 3134Perl's shy-groups \(?:...\) and non-greedy *? +? and ?? operators. 3135Also back-references like \2 are now considered as an error if the 3136corresponding subgroup does not exist (or is not closed yet). 3137Previously it would have been silently turned into `2' (ignoring the `\'). 3138 3139** The optional argument BUFFER of function file-local-copy has been 3140removed since it wasn't used by anything. 3141 3142** The file name argument of function `file-locked-p' is now required 3143instead of being optional. 3144 3145** The new built-in error `text-read-only' is signaled when trying to 3146modify read-only text. 3147 3148** New functions and variables for locales. 3149 3150The new variable `locale-coding-system' specifies how to encode and 3151decode strings passed to low-level message functions like strerror and 3152time functions like strftime. The new variables 3153`system-messages-locale' and `system-time-locale' give the system 3154locales to be used when invoking these two types of functions. 3155 3156The new function `set-locale-environment' sets the language 3157environment, preferred coding system, and locale coding system from 3158the system locale as specified by the LC_ALL, LC_CTYPE, and LANG 3159environment variables. Normally, it is invoked during startup and need 3160not be invoked thereafter. It uses the new variables 3161`locale-language-names', `locale-charset-language-names', and 3162`locale-preferred-coding-systems' to make its decisions. 3163 3164** syntax tables now understand nested comments. 3165To declare a comment syntax as allowing nesting, just add an `n' 3166modifier to either of the characters of the comment end and the comment 3167start sequences. 3168 3169** The function `pixmap-spec-p' has been renamed `bitmap-spec-p' 3170because `bitmap' is more in line with the usual X terminology. 3171 3172** New function `propertize' 3173 3174The new function `propertize' can be used to conveniently construct 3175strings with text properties. 3176 3177- Function: propertize STRING &rest PROPERTIES 3178 3179Value is a copy of STRING with text properties assigned as specified 3180by PROPERTIES. PROPERTIES is a sequence of pairs PROPERTY VALUE, with 3181PROPERTY being the name of a text property and VALUE being the 3182specified value of that property. Example: 3183 3184 (propertize "foo" 'face 'bold 'read-only t) 3185 3186** push and pop macros. 3187 3188Simple versions of the push and pop macros of Common Lisp 3189are now defined in Emacs Lisp. These macros allow only symbols 3190as the place that holds the list to be changed. 3191 3192(push NEWELT LISTNAME) add NEWELT to the front of LISTNAME's value. 3193(pop LISTNAME) return first elt of LISTNAME, and remove it 3194 (thus altering the value of LISTNAME). 3195 3196** New dolist and dotimes macros. 3197 3198Simple versions of the dolist and dotimes macros of Common Lisp 3199are now defined in Emacs Lisp. 3200 3201(dolist (VAR LIST [RESULT]) BODY...) 3202 Execute body once for each element of LIST, 3203 using the variable VAR to hold the current element. 3204 Then return the value of RESULT, or nil if RESULT is omitted. 3205 3206(dotimes (VAR COUNT [RESULT]) BODY...) 3207 Execute BODY with VAR bound to successive integers running from 0, 3208 inclusive, to COUNT, exclusive. 3209 Then return the value of RESULT, or nil if RESULT is omitted. 3210 3211** Regular expressions now support Posix character classes such as 3212[:alpha:], [:space:] and so on. These must be used within a character 3213class--for instance, [-[:digit:].+] matches digits or a period 3214or a sign. 3215 3216[:digit:] matches 0 through 9 3217[:cntrl:] matches ASCII control characters 3218[:xdigit:] matches 0 through 9, a through f and A through F. 3219[:blank:] matches space and tab only 3220[:graph:] matches graphic characters--everything except ASCII control chars, 3221 space, and DEL. 3222[:print:] matches printing characters--everything except ASCII control chars 3223 and DEL. 3224[:alnum:] matches letters and digits. 3225 (But at present, for multibyte characters, 3226 it matches anything that has word syntax.) 3227[:alpha:] matches letters. 3228 (But at present, for multibyte characters, 3229 it matches anything that has word syntax.) 3230[:ascii:] matches ASCII (unibyte) characters. 3231[:nonascii:] matches non-ASCII (multibyte) characters. 3232[:lower:] matches anything lower-case. 3233[:punct:] matches punctuation. 3234 (But at present, for multibyte characters, 3235 it matches anything that has non-word syntax.) 3236[:space:] matches anything that has whitespace syntax. 3237[:upper:] matches anything upper-case. 3238[:word:] matches anything that has word syntax. 3239 3240** Emacs now has built-in hash tables. 3241 3242The following functions are defined for hash tables: 3243 3244- Function: make-hash-table ARGS 3245 3246The argument list ARGS consists of keyword/argument pairs. All arguments 3247are optional. The following arguments are defined: 3248 3249:test TEST 3250 3251TEST must be a symbol specifying how to compare keys. Default is `eql'. 3252Predefined are `eq', `eql' and `equal'. If TEST is not predefined, 3253it must have been defined with `define-hash-table-test'. 3254 3255:size SIZE 3256 3257SIZE must be an integer > 0 giving a hint to the implementation how 3258many elements will be put in the hash table. Default size is 65. 3259 3260:rehash-size REHASH-SIZE 3261 3262REHASH-SIZE specifies by how much to grow a hash table once it becomes 3263full. If REHASH-SIZE is an integer, add that to the hash table's old 3264size to get the new size. Otherwise, REHASH-SIZE must be a float > 32651.0, and the new size is computed by multiplying REHASH-SIZE with the 3266old size. Default rehash size is 1.5. 3267 3268:rehash-threshold THRESHOLD 3269 3270THRESHOLD must be a float > 0 and <= 1.0 specifying when to resize the 3271hash table. It is resized when the ratio of (number of entries) / 3272(size of hash table) is >= THRESHOLD. Default threshold is 0.8. 3273 3274:weakness WEAK 3275 3276WEAK must be either nil, one of the symbols `key, `value', 3277`key-or-value', `key-and-value', or t, meaning the same as 3278`key-and-value'. Entries are removed from weak tables during garbage 3279collection if their key and/or value are not referenced elsewhere 3280outside of the hash table. Default are non-weak hash tables. 3281 3282- Function: makehash &optional TEST 3283 3284Similar to make-hash-table, but only TEST can be specified. 3285 3286- Function: hash-table-p TABLE 3287 3288Returns non-nil if TABLE is a hash table object. 3289 3290- Function: copy-hash-table TABLE 3291 3292Returns a copy of TABLE. Only the table itself is copied, keys and 3293values are shared. 3294 3295- Function: hash-table-count TABLE 3296 3297Returns the number of entries in TABLE. 3298 3299- Function: hash-table-rehash-size TABLE 3300 3301Returns the rehash size of TABLE. 3302 3303- Function: hash-table-rehash-threshold TABLE 3304 3305Returns the rehash threshold of TABLE. 3306 3307- Function: hash-table-rehash-size TABLE 3308 3309Returns the size of TABLE. 3310 3311- Function: hash-table-test TABLE 3312 3313Returns the test TABLE uses to compare keys. 3314 3315- Function: hash-table-weakness TABLE 3316 3317Returns the weakness specified for TABLE. 3318 3319- Function: clrhash TABLE 3320 3321Clear TABLE. 3322 3323- Function: gethash KEY TABLE &optional DEFAULT 3324 3325Look up KEY in TABLE and return its associated VALUE or DEFAULT if 3326not found. 3327 3328- Function: puthash KEY VALUE TABLE 3329 3330Associate KEY with VALUE in TABLE. If KEY is already associated with 3331another value, replace the old value with VALUE. 3332 3333- Function: remhash KEY TABLE 3334 3335Remove KEY from TABLE if it is there. 3336 3337- Function: maphash FUNCTION TABLE 3338 3339Call FUNCTION for all elements in TABLE. FUNCTION must take two 3340arguments KEY and VALUE. 3341 3342- Function: sxhash OBJ 3343 3344Return a hash code for Lisp object OBJ. 3345 3346- Function: define-hash-table-test NAME TEST-FN HASH-FN 3347 3348Define a new hash table test named NAME. If NAME is specified as 3349a test in `make-hash-table', the table created will use TEST-FN for 3350comparing keys, and HASH-FN to compute hash codes for keys. Test 3351and hash function are stored as symbol property `hash-table-test' 3352of NAME with a value of (TEST-FN HASH-FN). 3353 3354TEST-FN must take two arguments and return non-nil if they are the same. 3355 3356HASH-FN must take one argument and return an integer that is the hash 3357code of the argument. The function should use the whole range of 3358integer values for hash code computation, including negative integers. 3359 3360Example: The following creates a hash table whose keys are supposed to 3361be strings that are compared case-insensitively. 3362 3363 (defun case-fold-string= (a b) 3364 (compare-strings a nil nil b nil nil t)) 3365 3366 (defun case-fold-string-hash (a) 3367 (sxhash (upcase a))) 3368 3369 (define-hash-table-test 'case-fold 'case-fold-string= 3370 'case-fold-string-hash) 3371 3372 (make-hash-table :test 'case-fold) 3373 3374** The Lisp reader handles circular structure. 3375 3376It now works to use the #N= and #N# constructs to represent 3377circular structures. For example, #1=(a . #1#) represents 3378a cons cell which is its own cdr. 3379 3380** The Lisp printer handles circular structure. 3381 3382If you bind print-circle to a non-nil value, the Lisp printer outputs 3383#N= and #N# constructs to represent circular and shared structure. 3384 3385** If the second argument to `move-to-column' is anything but nil or 3386t, that means replace a tab with spaces if necessary to reach the 3387specified column, but do not add spaces at the end of the line if it 3388is too short to reach that column. 3389 3390** perform-replace has a new feature: the REPLACEMENTS argument may 3391now be a cons cell (FUNCTION . DATA). This means to call FUNCTION 3392after each match to get the replacement text. FUNCTION is called with 3393two arguments: DATA, and the number of replacements already made. 3394 3395If the FROM-STRING contains any upper-case letters, 3396perform-replace also turns off `case-fold-search' temporarily 3397and inserts the replacement text without altering case in it. 3398 3399** The function buffer-size now accepts an optional argument 3400to specify which buffer to return the size of. 3401 3402** The calendar motion commands now run the normal hook 3403calendar-move-hook after moving point. 3404 3405** The new variable small-temporary-file-directory specifies a 3406directory to use for creating temporary files that are likely to be 3407small. (Certain Emacs features use this directory.) If 3408small-temporary-file-directory is nil, they use 3409temporary-file-directory instead. 3410 3411** The variable `inhibit-modification-hooks', if non-nil, inhibits all 3412the hooks that track changes in the buffer. This affects 3413`before-change-functions' and `after-change-functions', as well as 3414hooks attached to text properties and overlay properties. 3415 3416** assq-delete-all is a new function that deletes all the 3417elements of an alist which have a car `eq' to a particular value. 3418 3419** make-temp-file provides a more reliable way to create a temporary file. 3420 3421make-temp-file is used like make-temp-name, except that it actually 3422creates the file before it returns. This prevents a timing error, 3423ensuring that no other job can use the same name for a temporary file. 3424 3425** New exclusive-open feature in `write-region' 3426 3427The optional seventh arg is now called MUSTBENEW. If non-nil, it insists 3428on a check for an existing file with the same name. If MUSTBENEW 3429is `excl', that means to get an error if the file already exists; 3430never overwrite. If MUSTBENEW is neither nil nor `excl', that means 3431ask for confirmation before overwriting, but do go ahead and 3432overwrite the file if the user gives confirmation. 3433 3434If the MUSTBENEW argument in `write-region' is `excl', 3435that means to use a special feature in the `open' system call 3436to get an error if the file exists at that time. 3437The error reported is `file-already-exists'. 3438 3439** Function `format' now handles text properties. 3440 3441Text properties of the format string are applied to the result string. 3442If the result string is longer than the format string, text properties 3443ending at the end of the format string are extended to the end of the 3444result string. 3445 3446Text properties from string arguments are applied to the result 3447string where arguments appear in the result string. 3448 3449Example: 3450 3451 (let ((s1 "hello, %s") 3452 (s2 "world")) 3453 (put-text-property 0 (length s1) 'face 'bold s1) 3454 (put-text-property 0 (length s2) 'face 'italic s2) 3455 (format s1 s2)) 3456 3457results in a bold-face string with an italic `world' at the end. 3458 3459** Messages can now be displayed with text properties. 3460 3461Text properties are handled as described above for function `format'. 3462The following example displays a bold-face message with an italic 3463argument in it. 3464 3465 (let ((msg "hello, %s!") 3466 (arg "world")) 3467 (put-text-property 0 (length msg) 'face 'bold msg) 3468 (put-text-property 0 (length arg) 'face 'italic arg) 3469 (message msg arg)) 3470 3471** Sound support 3472 3473Emacs supports playing sound files on GNU/Linux and the free BSDs 3474(Voxware driver and native BSD driver, aka as Luigi's driver). 3475 3476Currently supported file formats are RIFF-WAVE (*.wav) and Sun Audio 3477(*.au). You must configure Emacs with the option `--with-sound=yes' 3478to enable sound support. 3479 3480Sound files can be played by calling (play-sound SOUND). SOUND is a 3481list of the form `(sound PROPERTY...)'. The function is only defined 3482when sound support is present for the system on which Emacs runs. The 3483functions runs `play-sound-functions' with one argument which is the 3484sound to play, before playing the sound. 3485 3486The following sound properties are supported: 3487 3488- `:file FILE' 3489 3490FILE is a file name. If FILE isn't an absolute name, it will be 3491searched relative to `data-directory'. 3492 3493- `:data DATA' 3494 3495DATA is a string containing sound data. Either :file or :data 3496may be present, but not both. 3497 3498- `:volume VOLUME' 3499 3500VOLUME must be an integer in the range 0..100 or a float in the range 35010..1. This property is optional. 3502 3503- `:device DEVICE' 3504 3505DEVICE is a string specifying the system device on which to play the 3506sound. The default device is system-dependent. 3507 3508Other properties are ignored. 3509 3510An alternative interface is called as 3511(play-sound-file FILE &optional VOLUME DEVICE). 3512 3513** `multimedia' is a new Finder keyword and Custom group. 3514 3515** keywordp is a new predicate to test efficiently for an object being 3516a keyword symbol. 3517 3518** Changes to garbage collection 3519 3520*** The function garbage-collect now additionally returns the number 3521of live and free strings. 3522 3523*** There is a new variable `strings-consed' holding the number of 3524strings that have been consed so far. 3525 3526 3527* Lisp-level Display features added after release 2.6 of the Emacs 3528Lisp Manual 3529 3530** The user-option `resize-mini-windows' controls how Emacs resizes 3531mini-windows. 3532 3533** The function `pos-visible-in-window-p' now has a third optional 3534argument, PARTIALLY. If a character is only partially visible, nil is 3535returned, unless PARTIALLY is non-nil. 3536 3537** On window systems, `glyph-table' is no longer used. 3538 3539** Help strings in menu items are now used to provide `help-echo' text. 3540 3541** The function `image-size' can be used to determine the size of an 3542image. 3543 3544- Function: image-size SPEC &optional PIXELS FRAME 3545 3546Return the size of an image as a pair (WIDTH . HEIGHT). 3547 3548SPEC is an image specification. PIXELS non-nil means return sizes 3549measured in pixels, otherwise return sizes measured in canonical 3550character units (fractions of the width/height of the frame's default 3551font). FRAME is the frame on which the image will be displayed. 3552FRAME nil or omitted means use the selected frame. 3553 3554** The function `image-mask-p' can be used to determine if an image 3555has a mask bitmap. 3556 3557- Function: image-mask-p SPEC &optional FRAME 3558 3559Return t if image SPEC has a mask bitmap. 3560FRAME is the frame on which the image will be displayed. FRAME nil 3561or omitted means use the selected frame. 3562 3563** The function `find-image' can be used to find a usable image 3564satisfying one of a list of specifications. 3565 3566** The STRING argument of `put-image' and `insert-image' is now 3567optional. 3568 3569** Image specifications may contain the property `:ascent center' (see 3570below). 3571 3572 3573* New Lisp-level Display features in Emacs 21.1 3574 3575** The function tty-suppress-bold-inverse-default-colors can be used 3576to make Emacs avoid displaying text with bold black foreground on TTYs. 3577 3578Some terminals, notably PC consoles, emulate bold text by displaying 3579text in brighter colors. On such a console, a bold black foreground 3580is displayed in a gray color. If this turns out to be hard to read on 3581your monitor---the problem occurred with the mode line on 3582laptops---you can instruct Emacs to ignore the text's boldness, and to 3583just display it black instead. 3584 3585This situation can't be detected automatically. You will have to put 3586a line like 3587 3588 (tty-suppress-bold-inverse-default-colors t) 3589 3590in your `.emacs'. 3591 3592** New face implementation. 3593 3594Emacs faces have been reimplemented from scratch. They don't use XLFD 3595font names anymore and face merging now works as expected. 3596 3597*** New faces. 3598 3599Each face can specify the following display attributes: 3600 3601 1. Font family or fontset alias name. 3602 3603 2. Relative proportionate width, aka character set width or set 3604 width (swidth), e.g. `semi-compressed'. 3605 3606 3. Font height in 1/10pt 3607 3608 4. Font weight, e.g. `bold'. 3609 3610 5. Font slant, e.g. `italic'. 3611 3612 6. Foreground color. 3613 3614 7. Background color. 3615 3616 8. Whether or not characters should be underlined, and in what color. 3617 3618 9. Whether or not characters should be displayed in inverse video. 3619 3620 10. A background stipple, a bitmap. 3621 3622 11. Whether or not characters should be overlined, and in what color. 3623 3624 12. Whether or not characters should be strike-through, and in what 3625 color. 3626 3627 13. Whether or not a box should be drawn around characters, its 3628 color, the width of the box lines, and 3D appearance. 3629 3630Faces are frame-local by nature because Emacs allows to define the 3631same named face (face names are symbols) differently for different 3632frames. Each frame has an alist of face definitions for all named 3633faces. The value of a named face in such an alist is a Lisp vector 3634with the symbol `face' in slot 0, and a slot for each of the face 3635attributes mentioned above. 3636 3637There is also a global face alist `face-new-frame-defaults'. Face 3638definitions from this list are used to initialize faces of newly 3639created frames. 3640 3641A face doesn't have to specify all attributes. Those not specified 3642have a nil value. Faces specifying all attributes are called 3643`fully-specified'. 3644 3645*** Face merging. 3646 3647The display style of a given character in the text is determined by 3648combining several faces. This process is called `face merging'. Any 3649aspect of the display style that isn't specified by overlays or text 3650properties is taken from the `default' face. Since it is made sure 3651that the default face is always fully-specified, face merging always 3652results in a fully-specified face. 3653 3654*** Face realization. 3655 3656After all face attributes for a character have been determined by 3657merging faces of that character, that face is `realized'. The 3658realization process maps face attributes to what is physically 3659available on the system where Emacs runs. The result is a `realized 3660face' in form of an internal structure which is stored in the face 3661cache of the frame on which it was realized. 3662 3663Face realization is done in the context of the charset of the 3664character to display because different fonts and encodings are used 3665for different charsets. In other words, for characters of different 3666charsets, different realized faces are needed to display them. 3667 3668Except for composite characters, faces are always realized for a 3669specific character set and contain a specific font, even if the face 3670being realized specifies a fontset. The reason is that the result of 3671the new font selection stage is better than what can be done with 3672statically defined font name patterns in fontsets. 3673 3674In unibyte text, Emacs' charsets aren't applicable; function 3675`char-charset' reports ASCII for all characters, including those > 36760x7f. The X registry and encoding of fonts to use is determined from 3677the variable `face-default-registry' in this case. The variable is 3678initialized at Emacs startup time from the font the user specified for 3679Emacs. 3680 3681Currently all unibyte text, i.e. all buffers with 3682`enable-multibyte-characters' nil are displayed with fonts of the same 3683registry and encoding `face-default-registry'. This is consistent 3684with the fact that languages can also be set globally, only. 3685 3686**** Clearing face caches. 3687 3688The Lisp function `clear-face-cache' can be called to clear face caches 3689on all frames. If called with a non-nil argument, it will also unload 3690unused fonts. 3691 3692*** Font selection. 3693 3694Font selection tries to find the best available matching font for a 3695given (charset, face) combination. This is done slightly differently 3696for faces specifying a fontset, or a font family name. 3697 3698If the face specifies a fontset name, that fontset determines a 3699pattern for fonts of the given charset. If the face specifies a font 3700family, a font pattern is constructed. Charset symbols have a 3701property `x-charset-registry' for that purpose that maps a charset to 3702an XLFD registry and encoding in the font pattern constructed. 3703 3704Available fonts on the system on which Emacs runs are then matched 3705against the font pattern. The result of font selection is the best 3706match for the given face attributes in this font list. 3707 3708Font selection can be influenced by the user. 3709 3710The user can specify the relative importance he gives the face 3711attributes width, height, weight, and slant by setting 3712face-font-selection-order (faces.el) to a list of face attribute 3713names. The default is (:width :height :weight :slant), and means 3714that font selection first tries to find a good match for the font 3715width specified by a face, then---within fonts with that width---tries 3716to find a best match for the specified font height, etc. 3717 3718Setting `face-font-family-alternatives' allows the user to specify 3719alternative font families to try if a family specified by a face 3720doesn't exist. 3721 3722Setting `face-font-registry-alternatives' allows the user to specify 3723all alternative font registry names to try for a face specifying a 3724registry. 3725 3726Please note that the interpretations of the above two variables are 3727slightly different. 3728 3729Setting face-ignored-fonts allows the user to ignore specific fonts. 3730 3731 3732**** Scalable fonts 3733 3734Emacs can make use of scalable fonts but doesn't do so by default, 3735since the use of too many or too big scalable fonts may crash XFree86 3736servers. 3737 3738To enable scalable font use, set the variable 3739`scalable-fonts-allowed'. A value of nil, the default, means never use 3740scalable fonts. A value of t means any scalable font may be used. 3741Otherwise, the value must be a list of regular expressions. A 3742scalable font may then be used if it matches a regular expression from 3743that list. Example: 3744 3745 (setq scalable-fonts-allowed '("muleindian-2$")) 3746 3747allows the use of scalable fonts with registry `muleindian-2'. 3748 3749*** Functions and variables related to font selection. 3750 3751- Function: x-family-fonts &optional FAMILY FRAME 3752 3753Return a list of available fonts of family FAMILY on FRAME. If FAMILY 3754is omitted or nil, list all families. Otherwise, FAMILY must be a 3755string, possibly containing wildcards `?' and `*'. 3756 3757If FRAME is omitted or nil, use the selected frame. Each element of 3758the result is a vector [FAMILY WIDTH POINT-SIZE WEIGHT SLANT FIXED-P 3759FULL REGISTRY-AND-ENCODING]. FAMILY is the font family name. 3760POINT-SIZE is the size of the font in 1/10 pt. WIDTH, WEIGHT, and 3761SLANT are symbols describing the width, weight and slant of the font. 3762These symbols are the same as for face attributes. FIXED-P is non-nil 3763if the font is fixed-pitch. FULL is the full name of the font, and 3764REGISTRY-AND-ENCODING is a string giving the registry and encoding of 3765the font. The result list is sorted according to the current setting 3766of the face font sort order. 3767 3768- Function: x-font-family-list 3769 3770Return a list of available font families on FRAME. If FRAME is 3771omitted or nil, use the selected frame. Value is a list of conses 3772(FAMILY . FIXED-P) where FAMILY is a font family, and FIXED-P is 3773non-nil if fonts of that family are fixed-pitch. 3774 3775- Variable: font-list-limit 3776 3777Limit for font matching. If an integer > 0, font matching functions 3778won't load more than that number of fonts when searching for a 3779matching font. The default is currently 100. 3780 3781*** Setting face attributes. 3782 3783For the most part, the new face implementation is interface-compatible 3784with the old one. Old face attribute related functions are now 3785implemented in terms of the new functions `set-face-attribute' and 3786`face-attribute'. 3787 3788Face attributes are identified by their names which are keyword 3789symbols. All attributes can be set to `unspecified'. 3790 3791The following attributes are recognized: 3792 3793`:family' 3794 3795VALUE must be a string specifying the font family, e.g. ``courier'', 3796or a fontset alias name. If a font family is specified, wild-cards `*' 3797and `?' are allowed. 3798 3799`:width' 3800 3801VALUE specifies the relative proportionate width of the font to use. 3802It must be one of the symbols `ultra-condensed', `extra-condensed', 3803`condensed', `semi-condensed', `normal', `semi-expanded', `expanded', 3804`extra-expanded', or `ultra-expanded'. 3805 3806`:height' 3807 3808VALUE must be either an integer specifying the height of the font to use 3809in 1/10 pt, a floating point number specifying the amount by which to 3810scale any underlying face, or a function, which is called with the old 3811height (from the underlying face), and should return the new height. 3812 3813`:weight' 3814 3815VALUE specifies the weight of the font to use. It must be one of the 3816symbols `ultra-bold', `extra-bold', `bold', `semi-bold', `normal', 3817`semi-light', `light', `extra-light', `ultra-light'. 3818 3819`:slant' 3820 3821VALUE specifies the slant of the font to use. It must be one of the 3822symbols `italic', `oblique', `normal', `reverse-italic', or 3823`reverse-oblique'. 3824 3825`:foreground', `:background' 3826 3827VALUE must be a color name, a string. 3828 3829`:underline' 3830 3831VALUE specifies whether characters in FACE should be underlined. If 3832VALUE is t, underline with foreground color of the face. If VALUE is 3833a string, underline with that color. If VALUE is nil, explicitly 3834don't underline. 3835 3836`:overline' 3837 3838VALUE specifies whether characters in FACE should be overlined. If 3839VALUE is t, overline with foreground color of the face. If VALUE is a 3840string, overline with that color. If VALUE is nil, explicitly don't 3841overline. 3842 3843`:strike-through' 3844 3845VALUE specifies whether characters in FACE should be drawn with a line 3846striking through them. If VALUE is t, use the foreground color of the 3847face. If VALUE is a string, strike-through with that color. If VALUE 3848is nil, explicitly don't strike through. 3849 3850`:box' 3851 3852VALUE specifies whether characters in FACE should have a box drawn 3853around them. If VALUE is nil, explicitly don't draw boxes. If 3854VALUE is t, draw a box with lines of width 1 in the foreground color 3855of the face. If VALUE is a string, the string must be a color name, 3856and the box is drawn in that color with a line width of 1. Otherwise, 3857VALUE must be a property list of the form `(:line-width WIDTH 3858:color COLOR :style STYLE)'. If a keyword/value pair is missing from 3859the property list, a default value will be used for the value, as 3860specified below. WIDTH specifies the width of the lines to draw; it 3861defaults to 1. COLOR is the name of the color to draw in, default is 3862the foreground color of the face for simple boxes, and the background 3863color of the face for 3D boxes. STYLE specifies whether a 3D box 3864should be draw. If STYLE is `released-button', draw a box looking 3865like a released 3D button. If STYLE is `pressed-button' draw a box 3866that appears like a pressed button. If STYLE is nil, the default if 3867the property list doesn't contain a style specification, draw a 2D 3868box. 3869 3870`:inverse-video' 3871 3872VALUE specifies whether characters in FACE should be displayed in 3873inverse video. VALUE must be one of t or nil. 3874 3875`:stipple' 3876 3877If VALUE is a string, it must be the name of a file of pixmap data. 3878The directories listed in the `x-bitmap-file-path' variable are 3879searched. Alternatively, VALUE may be a list of the form (WIDTH 3880HEIGHT DATA) where WIDTH and HEIGHT are the size in pixels, and DATA 3881is a string containing the raw bits of the bitmap. VALUE nil means 3882explicitly don't use a stipple pattern. 3883 3884For convenience, attributes `:family', `:width', `:height', `:weight', 3885and `:slant' may also be set in one step from an X font name: 3886 3887`:font' 3888 3889Set font-related face attributes from VALUE. VALUE must be a valid 3890XLFD font name. If it is a font name pattern, the first matching font 3891is used--this is for compatibility with the behavior of previous 3892versions of Emacs. 3893 3894For compatibility with Emacs 20, keywords `:bold' and `:italic' can 3895be used to specify that a bold or italic font should be used. VALUE 3896must be t or nil in that case. A value of `unspecified' is not allowed." 3897 3898Please see also the documentation of `set-face-attribute' and 3899`defface'. 3900 3901`:inherit' 3902 3903VALUE is the name of a face from which to inherit attributes, or a list 3904of face names. Attributes from inherited faces are merged into the face 3905like an underlying face would be, with higher priority than underlying faces. 3906 3907*** Face attributes and X resources 3908 3909The following X resource names can be used to set face attributes 3910from X resources: 3911 3912 Face attribute X resource class 3913----------------------------------------------------------------------- 3914 :family attributeFamily . Face.AttributeFamily 3915 :width attributeWidth Face.AttributeWidth 3916 :height attributeHeight Face.AttributeHeight 3917 :weight attributeWeight Face.AttributeWeight 3918 :slant attributeSlant Face.AttributeSlant 3919 foreground attributeForeground Face.AttributeForeground 3920 :background attributeBackground . Face.AttributeBackground 3921 :overline attributeOverline Face.AttributeOverline 3922 :strike-through attributeStrikeThrough Face.AttributeStrikeThrough 3923 :box attributeBox Face.AttributeBox 3924 :underline attributeUnderline Face.AttributeUnderline 3925 :inverse-video attributeInverse Face.AttributeInverse 3926 :stipple attributeStipple Face.AttributeStipple 3927 or attributeBackgroundPixmap 3928 Face.AttributeBackgroundPixmap 3929 :font attributeFont Face.AttributeFont 3930 :bold attributeBold Face.AttributeBold 3931 :italic attributeItalic . Face.AttributeItalic 3932 :font attributeFont Face.AttributeFont 3933 3934*** Text property `face'. 3935 3936The value of the `face' text property can now be a single face 3937specification or a list of such specifications. Each face 3938specification can be 3939 39401. A symbol or string naming a Lisp face. 3941 39422. A property list of the form (KEYWORD VALUE ...) where each 3943 KEYWORD is a face attribute name, and VALUE is an appropriate value 3944 for that attribute. Please see the doc string of `set-face-attribute' 3945 for face attribute names. 3946 39473. Conses of the form (FOREGROUND-COLOR . COLOR) or 3948 (BACKGROUND-COLOR . COLOR) where COLOR is a color name. This is 3949 for compatibility with previous Emacs versions. 3950 3951** Support functions for colors on text-only terminals. 3952 3953The function `tty-color-define' can be used to define colors for use 3954on TTY and MSDOS frames. It maps a color name to a color number on 3955the terminal. Emacs defines a couple of common color mappings by 3956default. You can get defined colors with a call to 3957`defined-colors'. The function `tty-color-clear' can be 3958used to clear the mapping table. 3959 3960** Unified support for colors independent of frame type. 3961 3962The new functions `defined-colors', `color-defined-p', `color-values', 3963and `display-color-p' work for any type of frame. On frames whose 3964type is neither x nor w32, these functions transparently map X-style 3965color specifications to the closest colors supported by the frame 3966display. Lisp programs should use these new functions instead of the 3967old `x-defined-colors', `x-color-defined-p', `x-color-values', and 3968`x-display-color-p'. (The old function names are still available for 3969compatibility; they are now aliases of the new names.) Lisp programs 3970should no more look at the value of the variable window-system to 3971modify their color-related behavior. 3972 3973The primitives `color-gray-p' and `color-supported-p' also work for 3974any frame type. 3975 3976** Platform-independent functions to describe display capabilities. 3977 3978The new functions `display-mouse-p', `display-popup-menus-p', 3979`display-graphic-p', `display-selections-p', `display-screens', 3980`display-pixel-width', `display-pixel-height', `display-mm-width', 3981`display-mm-height', `display-backing-store', `display-save-under', 3982`display-planes', `display-color-cells', `display-visual-class', and 3983`display-grayscale-p' describe the basic capabilities of a particular 3984display. Lisp programs should call these functions instead of testing 3985the value of the variables `window-system' or `system-type', or calling 3986platform-specific functions such as `x-display-pixel-width'. 3987 3988The new function `display-images-p' returns non-nil if a particular 3989display can display image files. 3990 3991** The minibuffer prompt is now actually inserted in the minibuffer. 3992 3993This makes it possible to scroll through the prompt, if you want to. 3994To disallow this completely (like previous versions of emacs), customize 3995the variable `minibuffer-prompt-properties', and turn on the 3996`Inviolable' option. 3997 3998The function `minibuffer-prompt-end' returns the current position of the 3999end of the minibuffer prompt, if the minibuffer is current. 4000Otherwise, it returns `(point-min)'. 4001 4002** New `field' abstraction in buffers. 4003 4004There is now code to support an abstraction called `fields' in emacs 4005buffers. A field is a contiguous region of text with the same `field' 4006property (which can be a text property or an overlay). 4007 4008Many emacs functions, such as forward-word, forward-sentence, 4009forward-paragraph, beginning-of-line, etc., stop moving when they come 4010to the boundary between fields; beginning-of-line and end-of-line will 4011not let the point move past the field boundary, but other movement 4012commands continue into the next field if repeated. Stopping at field 4013boundaries can be suppressed programmatically by binding 4014`inhibit-field-text-motion' to a non-nil value around calls to these 4015functions. 4016 4017Now that the minibuffer prompt is inserted into the minibuffer, it is in 4018a separate field from the user-input part of the buffer, so that common 4019editing commands treat the user's text separately from the prompt. 4020 4021The following functions are defined for operating on fields: 4022 4023- Function: constrain-to-field NEW-POS OLD-POS &optional ESCAPE-FROM-EDGE ONLY-IN-LINE INHIBIT-CAPTURE-PROPERTY 4024 4025Return the position closest to NEW-POS that is in the same field as OLD-POS. 4026 4027A field is a region of text with the same `field' property. 4028If NEW-POS is nil, then the current point is used instead, and set to the 4029constrained position if that is different. 4030 4031If OLD-POS is at the boundary of two fields, then the allowable 4032positions for NEW-POS depends on the value of the optional argument 4033ESCAPE-FROM-EDGE: If ESCAPE-FROM-EDGE is nil, then NEW-POS is 4034constrained to the field that has the same `field' char-property 4035as any new characters inserted at OLD-POS, whereas if ESCAPE-FROM-EDGE 4036is non-nil, NEW-POS is constrained to the union of the two adjacent 4037fields. Additionally, if two fields are separated by another field with 4038the special value `boundary', then any point within this special field is 4039also considered to be `on the boundary'. 4040 4041If the optional argument ONLY-IN-LINE is non-nil and constraining 4042NEW-POS would move it to a different line, NEW-POS is returned 4043unconstrained. This useful for commands that move by line, like 4044C-n or C-a, which should generally respect field boundaries 4045only in the case where they can still move to the right line. 4046 4047If the optional argument INHIBIT-CAPTURE-PROPERTY is non-nil, and OLD-POS has 4048a non-nil property of that name, then any field boundaries are ignored. 4049 4050Field boundaries are not noticed if `inhibit-field-text-motion' is non-nil. 4051 4052- Function: delete-field &optional POS 4053 4054Delete the field surrounding POS. 4055A field is a region of text with the same `field' property. 4056If POS is nil, the value of point is used for POS. 4057 4058- Function: field-beginning &optional POS ESCAPE-FROM-EDGE 4059 4060Return the beginning of the field surrounding POS. 4061A field is a region of text with the same `field' property. 4062If POS is nil, the value of point is used for POS. 4063If ESCAPE-FROM-EDGE is non-nil and POS is at the beginning of its 4064field, then the beginning of the *previous* field is returned. 4065 4066- Function: field-end &optional POS ESCAPE-FROM-EDGE 4067 4068Return the end of the field surrounding POS. 4069A field is a region of text with the same `field' property. 4070If POS is nil, the value of point is used for POS. 4071If ESCAPE-FROM-EDGE is non-nil and POS is at the end of its field, 4072then the end of the *following* field is returned. 4073 4074- Function: field-string &optional POS 4075 4076Return the contents of the field surrounding POS as a string. 4077A field is a region of text with the same `field' property. 4078If POS is nil, the value of point is used for POS. 4079 4080- Function: field-string-no-properties &optional POS 4081 4082Return the contents of the field around POS, without text-properties. 4083A field is a region of text with the same `field' property. 4084If POS is nil, the value of point is used for POS. 4085 4086** Image support. 4087 4088Emacs can now display images. Images are inserted into text by giving 4089strings or buffer text a `display' text property containing one of 4090(AREA IMAGE) or IMAGE. The display of the `display' property value 4091replaces the display of the characters having that property. 4092 4093If the property value has the form (AREA IMAGE), AREA must be one of 4094`(margin left-margin)', `(margin right-margin)' or `(margin nil)'. If 4095AREA is `(margin nil)', IMAGE will be displayed in the text area of a 4096window, otherwise it will be displayed in the left or right marginal 4097area. 4098 4099IMAGE is an image specification. 4100 4101*** Image specifications 4102 4103Image specifications are lists of the form `(image PROPS)' where PROPS 4104is a property list whose keys are keyword symbols. Each 4105specifications must contain a property `:type TYPE' with TYPE being a 4106symbol specifying the image type, e.g. `xbm'. Properties not 4107described below are ignored. 4108 4109The following is a list of properties all image types share. 4110 4111`:ascent ASCENT' 4112 4113ASCENT must be a number in the range 0..100, or the symbol `center'. 4114If it is a number, it specifies the percentage of the image's height 4115to use for its ascent. 4116 4117If not specified, ASCENT defaults to the value 50 which means that the 4118image will be centered with the base line of the row it appears in. 4119 4120If ASCENT is `center' the image is vertically centered around a 4121centerline which is the vertical center of text drawn at the position 4122of the image, in the manner specified by the text properties and 4123overlays that apply to the image. 4124 4125`:margin MARGIN' 4126 4127MARGIN must be either a number >= 0 specifying how many pixels to put 4128as margin around the image, or a pair (X . Y) with X specifying the 4129horizontal margin and Y specifying the vertical margin. Default is 0. 4130 4131`:relief RELIEF' 4132 4133RELIEF is analogous to the `:relief' attribute of faces. Puts a relief 4134around an image. 4135 4136`:conversion ALGO' 4137 4138Apply an image algorithm to the image before displaying it. 4139 4140ALGO `laplace' or `emboss' means apply a Laplace or ``emboss'' 4141edge-detection algorithm to the image. 4142 4143ALGO `(edge-detection :matrix MATRIX :color-adjust ADJUST)' means 4144apply a general edge-detection algorithm. MATRIX must be either a 4145nine-element list or a nine-element vector of numbers. A pixel at 4146position x/y in the transformed image is computed from original pixels 4147around that position. MATRIX specifies, for each pixel in the 4148neighborhood of x/y, a factor with which that pixel will influence the 4149transformed pixel; element 0 specifies the factor for the pixel at 4150x-1/y-1, element 1 the factor for the pixel at x/y-1 etc. as shown 4151below. 4152 4153 (x-1/y-1 x/y-1 x+1/y-1 4154 x-1/y x/y x+1/y 4155 x-1/y+1 x/y+1 x+1/y+1) 4156 4157The resulting pixel is computed from the color intensity of the color 4158resulting from summing up the RGB values of surrounding pixels, 4159multiplied by the specified factors, and dividing that sum by the sum 4160of the factors' absolute values. 4161 4162Laplace edge-detection currently uses a matrix of 4163 4164 (1 0 0 4165 0 0 0 4166 9 9 -1) 4167 4168Emboss edge-detection uses a matrix of 4169 4170 ( 2 -1 0 4171 -1 0 1 4172 0 1 -2) 4173 4174ALGO `disabled' means transform the image so that it looks 4175``disabled''. 4176 4177`:mask MASK' 4178 4179If MASK is `heuristic' or `(heuristic BG)', build a clipping mask for 4180the image, so that the background of a frame is visible behind the 4181image. If BG is not specified, or if BG is t, determine the 4182background color of the image by looking at the 4 corners of the 4183image, assuming the most frequently occurring color from the corners is 4184the background color of the image. Otherwise, BG must be a list `(RED 4185GREEN BLUE)' specifying the color to assume for the background of the 4186image. 4187 4188If MASK is nil, remove a mask from the image, if it has one. Images 4189in some formats include a mask which can be removed by specifying 4190`:mask nil'. 4191 4192`:file FILE' 4193 4194Load image from FILE. If FILE is not absolute after expanding it, 4195search for the image in `data-directory'. Some image types support 4196building images from data. When this is done, no `:file' property 4197may be present in the image specification. 4198 4199`:data DATA' 4200 4201Get image data from DATA. (As of this writing, this is not yet 4202supported for image type `postscript'). Either :file or :data may be 4203present in an image specification, but not both. All image types 4204support strings as DATA, some types allow additional types of DATA. 4205 4206*** Supported image types 4207 4208**** XBM, image type `xbm'. 4209 4210XBM images don't require an external library. Additional image 4211properties supported are: 4212 4213`:foreground FG' 4214 4215FG must be a string specifying the image foreground color, or nil 4216meaning to use the default. Default is the frame's foreground color. 4217 4218`:background BG' 4219 4220BG must be a string specifying the image background color, or nil 4221meaning to use the default. Default is the frame's background color. 4222 4223XBM images can be constructed from data instead of file. In this 4224case, the image specification must contain the following properties 4225instead of a `:file' property. 4226 4227`:width WIDTH' 4228 4229WIDTH specifies the width of the image in pixels. 4230 4231`:height HEIGHT' 4232 4233HEIGHT specifies the height of the image in pixels. 4234 4235`:data DATA' 4236 4237DATA must be either 4238 4239 1. a string large enough to hold the bitmap data, i.e. it must 4240 have a size >= (WIDTH + 7) / 8 * HEIGHT 4241 4242 2. a bool-vector of size >= WIDTH * HEIGHT 4243 4244 3. a vector of strings or bool-vectors, one for each line of the 4245 bitmap. 4246 4247 4. a string that's an in-memory XBM file. Neither width nor 4248 height may be specified in this case because these are defined 4249 in the file. 4250 4251**** XPM, image type `xpm' 4252 4253XPM images require the external library `libXpm', package 4254`xpm-3.4k.tar.gz', version 3.4k or later. Make sure the library is 4255found when Emacs is configured by supplying appropriate paths via 4256`--x-includes' and `--x-libraries'. 4257 4258Additional image properties supported are: 4259 4260`:color-symbols SYMBOLS' 4261 4262SYMBOLS must be a list of pairs (NAME . COLOR), with NAME being the 4263name of color as it appears in an XPM file, and COLOR being an X color 4264name. 4265 4266XPM images can be built from memory instead of files. In that case, 4267add a `:data' property instead of a `:file' property. 4268 4269The XPM library uses libz in its implementation so that it is able 4270to display compressed images. 4271 4272**** PBM, image type `pbm' 4273 4274PBM images don't require an external library. Color, gray-scale and 4275mono images are supported. Additional image properties supported for 4276mono images are: 4277 4278`:foreground FG' 4279 4280FG must be a string specifying the image foreground color, or nil 4281meaning to use the default. Default is the frame's foreground color. 4282 4283`:background FG' 4284 4285BG must be a string specifying the image background color, or nil 4286meaning to use the default. Default is the frame's background color. 4287 4288**** JPEG, image type `jpeg' 4289 4290Support for JPEG images requires the external library `libjpeg', 4291package `jpegsrc.v6a.tar.gz', or later. There are no additional image 4292properties defined. 4293 4294**** TIFF, image type `tiff' 4295 4296Support for TIFF images requires the external library `libtiff', 4297package `tiff-v3.4-tar.gz', or later. There are no additional image 4298properties defined. 4299 4300**** GIF, image type `gif' 4301 4302Support for GIF images requires the external library `libungif', package 4303`libungif-4.1.0', or later. 4304 4305Additional image properties supported are: 4306 4307`:index INDEX' 4308 4309INDEX must be an integer >= 0. Load image number INDEX from a 4310multi-image GIF file. If INDEX is too large, the image displays 4311as a hollow box. 4312 4313This could be used to implement limited support for animated GIFs. 4314For example, the following function displays a multi-image GIF file 4315at point-min in the current buffer, switching between sub-images 4316every 0.1 seconds. 4317 4318(defun show-anim (file max) 4319 "Display multi-image GIF file FILE which contains MAX subimages." 4320 (display-anim (current-buffer) file 0 max t)) 4321 4322(defun display-anim (buffer file idx max first-time) 4323 (when (= idx max) 4324 (setq idx 0)) 4325 (let ((img (create-image file nil nil :index idx))) 4326 (save-excursion 4327 (set-buffer buffer) 4328 (goto-char (point-min)) 4329 (unless first-time (delete-char 1)) 4330 (insert-image img "x")) 4331 (run-with-timer 0.1 nil 'display-anim buffer file (1+ idx) max nil))) 4332 4333**** PNG, image type `png' 4334 4335Support for PNG images requires the external library `libpng', 4336package `libpng-1.0.2.tar.gz', or later. There are no additional image 4337properties defined. 4338 4339**** Ghostscript, image type `postscript'. 4340 4341Additional image properties supported are: 4342 4343`:pt-width WIDTH' 4344 4345WIDTH is width of the image in pt (1/72 inch). WIDTH must be an 4346integer. This is a required property. 4347 4348`:pt-height HEIGHT' 4349 4350HEIGHT specifies the height of the image in pt (1/72 inch). HEIGHT 4351must be an integer. This is a required property. 4352 4353`:bounding-box BOX' 4354 4355BOX must be a list or vector of 4 integers giving the bounding box of 4356the PS image, analogous to the `BoundingBox' comment found in PS 4357files. This is an required property. 4358 4359Part of the Ghostscript interface is implemented in Lisp. See 4360lisp/gs.el. 4361 4362*** Lisp interface. 4363 4364The variable `image-types' contains a list of those image types 4365which are supported in the current configuration. 4366 4367Images are stored in an image cache and removed from the cache when 4368they haven't been displayed for `image-cache-eviction-delay seconds. 4369The function `clear-image-cache' can be used to clear the image cache 4370manually. Images in the cache are compared with `equal', i.e. all 4371images with `equal' specifications share the same image. 4372 4373*** Simplified image API, image.el 4374 4375The new Lisp package image.el contains functions that simplify image 4376creation and putting images into text. The function `create-image' 4377can be used to create images. The macro `defimage' can be used to 4378define an image based on available image types. The functions 4379`put-image' and `insert-image' can be used to insert an image into a 4380buffer. 4381 4382** Display margins. 4383 4384Windows can now have margins which are used for special text 4385and images. 4386 4387To give a window margins, either set the buffer-local variables 4388`left-margin-width' and `right-margin-width', or call 4389`set-window-margins'. The function `window-margins' can be used to 4390obtain the current settings. To make `left-margin-width' and 4391`right-margin-width' take effect, you must set them before displaying 4392the buffer in a window, or use `set-window-buffer' to force an update 4393of the display margins. 4394 4395You can put text in margins by giving it a `display' text property 4396containing a pair of the form `(LOCATION . VALUE)', where LOCATION is 4397one of `left-margin' or `right-margin' or nil. VALUE can be either a 4398string, an image specification or a stretch specification (see later 4399in this file). 4400 4401** Help display 4402 4403Emacs displays short help messages in the echo area, when the mouse 4404moves over a tool-bar item or a piece of text that has a text property 4405`help-echo'. This feature also applies to strings in the mode line 4406that have a `help-echo' property. 4407 4408If the value of the `help-echo' property is a function, that function 4409is called with three arguments WINDOW, OBJECT and POSITION. WINDOW is 4410the window in which the help was found. 4411 4412If OBJECT is a buffer, POS is the position in the buffer where the 4413`help-echo' text property was found. 4414 4415If OBJECT is an overlay, that overlay has a `help-echo' property, and 4416POS is the position in the overlay's buffer under the mouse. 4417 4418If OBJECT is a string (an overlay string or a string displayed with 4419the `display' property), POS is the position in that string under the 4420mouse. 4421 4422If the value of the `help-echo' property is neither a function nor a 4423string, it is evaluated to obtain a help string. 4424 4425For tool-bar and menu-bar items, their key definition is used to 4426determine the help to display. If their definition contains a 4427property `:help FORM', FORM is evaluated to determine the help string. 4428For tool-bar items without a help form, the caption of the item is 4429used as help string. 4430 4431The hook `show-help-function' can be set to a function that displays 4432the help string differently. For example, enabling a tooltip window 4433causes the help display to appear there instead of in the echo area. 4434 4435** Vertical fractional scrolling. 4436 4437The display of text in windows can be scrolled smoothly in pixels. 4438This is useful, for example, for making parts of large images visible. 4439 4440The function `window-vscroll' returns the current value of vertical 4441scrolling, a non-negative fraction of the canonical character height. 4442The function `set-window-vscroll' can be used to set the vertical 4443scrolling value. Here is an example of how these function might be 4444used. 4445 4446 (global-set-key [A-down] 4447 #'(lambda () 4448 (interactive) 4449 (set-window-vscroll (selected-window) 4450 (+ 0.5 (window-vscroll))))) 4451 (global-set-key [A-up] 4452 #'(lambda () 4453 (interactive) 4454 (set-window-vscroll (selected-window) 4455 (- (window-vscroll) 0.5))))) 4456 4457** New hook `fontification-functions'. 4458 4459Functions from `fontification-functions' are called from redisplay 4460when it encounters a region of text that is not yet fontified. This 4461variable automatically becomes buffer-local when set. Each function 4462is called with one argument, POS. 4463 4464At least one of the hook functions should fontify one or more 4465characters starting at POS in the current buffer. It should mark them 4466as fontified by giving them a non-nil value of the `fontified' text 4467property. It may be reasonable for these functions to check for the 4468`fontified' property and not put it back on, but they do not have to. 4469 4470** Tool bar support. 4471 4472Emacs supports a tool bar at the top of a frame under X. The frame 4473parameter `tool-bar-lines' (X resource "toolBar", class "ToolBar") 4474controls how may lines to reserve for the tool bar. A zero value 4475suppresses the tool bar. If the value is non-zero and 4476`auto-resize-tool-bars' is non-nil the tool bar's size will be changed 4477automatically so that all tool bar items are visible. 4478 4479*** Tool bar item definitions 4480 4481Tool bar items are defined using `define-key' with a prefix-key 4482`tool-bar'. For example `(define-key global-map [tool-bar item1] ITEM)' 4483where ITEM is a list `(menu-item CAPTION BINDING PROPS...)'. 4484 4485CAPTION is the caption of the item, If it's not a string, it is 4486evaluated to get a string. The caption is currently not displayed in 4487the tool bar, but it is displayed if the item doesn't have a `:help' 4488property (see below). 4489 4490BINDING is the tool bar item's binding. Tool bar items with keymaps as 4491binding are currently ignored. 4492 4493The following properties are recognized: 4494 4495`:enable FORM'. 4496 4497FORM is evaluated and specifies whether the tool bar item is enabled 4498or disabled. 4499 4500`:visible FORM' 4501 4502FORM is evaluated and specifies whether the tool bar item is displayed. 4503 4504`:filter FUNCTION' 4505 4506FUNCTION is called with one parameter, the same list BINDING in which 4507FUNCTION is specified as the filter. The value FUNCTION returns is 4508used instead of BINDING to display this item. 4509 4510`:button (TYPE SELECTED)' 4511 4512TYPE must be one of `:radio' or `:toggle'. SELECTED is evaluated 4513and specifies whether the button is selected (pressed) or not. 4514 4515`:image IMAGES' 4516 4517IMAGES is either a single image specification or a vector of four 4518image specifications. If it is a vector, this table lists the 4519meaning of each of the four elements: 4520 4521 Index Use when item is 4522 ---------------------------------------- 4523 0 enabled and selected 4524 1 enabled and deselected 4525 2 disabled and selected 4526 3 disabled and deselected 4527 4528If IMAGE is a single image specification, a Laplace edge-detection 4529algorithm is used on that image to draw the image in disabled state. 4530 4531`:help HELP-STRING'. 4532 4533Gives a help string to display for the tool bar item. This help 4534is displayed when the mouse is moved over the item. 4535 4536The function `toolbar-add-item' is a convenience function for adding 4537toolbar items generally, and `tool-bar-add-item-from-menu' can be used 4538to define a toolbar item with a binding copied from an item on the 4539menu bar. 4540 4541The default bindings use a menu-item :filter to derive the tool-bar 4542dynamically from variable `tool-bar-map' which may be set 4543buffer-locally to override the global map. 4544 4545*** Tool-bar-related variables. 4546 4547If `auto-resize-tool-bar' is non-nil, the tool bar will automatically 4548resize to show all defined tool bar items. It will never grow larger 4549than 1/4 of the frame's size. 4550 4551If `auto-raise-tool-bar-buttons' is non-nil, tool bar buttons will be 4552raised when the mouse moves over them. 4553 4554You can add extra space between tool bar items by setting 4555`tool-bar-button-margin' to a positive integer specifying a number of 4556pixels, or a pair of integers (X . Y) specifying horizontal and 4557vertical margins . Default is 1. 4558 4559You can change the shadow thickness of tool bar buttons by setting 4560`tool-bar-button-relief' to an integer. Default is 3. 4561 4562*** Tool-bar clicks with modifiers. 4563 4564You can bind commands to clicks with control, shift, meta etc. on 4565a tool bar item. If 4566 4567 (define-key global-map [tool-bar shell] 4568 '(menu-item "Shell" shell 4569 :image (image :type xpm :file "shell.xpm"))) 4570 4571is the original tool bar item definition, then 4572 4573 (define-key global-map [tool-bar S-shell] 'some-command) 4574 4575makes a binding to run `some-command' for a shifted click on the same 4576item. 4577 4578** Mode line changes. 4579 4580*** Mouse-sensitive mode line. 4581 4582The mode line can be made mouse-sensitive by displaying strings there 4583that have a `local-map' text property. There are three ways to display 4584a string with a `local-map' property in the mode line. 4585 45861. The mode line spec contains a variable whose string value has 4587a `local-map' text property. 4588 45892. The mode line spec contains a format specifier (e.g. `%12b'), and 4590that format specifier has a `local-map' property. 4591 45923. The mode line spec contains a list containing `:eval FORM'. FORM 4593is evaluated. If the result is a string, and that string has a 4594`local-map' property. 4595 4596The same mechanism is used to determine the `face' and `help-echo' 4597properties of strings in the mode line. See `bindings.el' for an 4598example. 4599 4600*** If a mode line element has the form `(:eval FORM)', FORM is 4601evaluated and the result is used as mode line element. 4602 4603*** You can suppress mode-line display by setting the buffer-local 4604variable mode-line-format to nil. 4605 4606*** A headerline can now be displayed at the top of a window. 4607 4608This mode line's contents are controlled by the new variable 4609`header-line-format' and `default-header-line-format' which are 4610completely analogous to `mode-line-format' and 4611`default-mode-line-format'. A value of nil means don't display a top 4612line. 4613 4614The appearance of top mode lines is controlled by the face 4615`header-line'. 4616 4617The function `coordinates-in-window-p' returns `header-line' for a 4618position in the header-line. 4619 4620** Text property `display' 4621 4622The `display' text property is used to insert images into text, 4623replace text with other text, display text in marginal area, and it is 4624also used to control other aspects of how text displays. The value of 4625the `display' property should be a display specification, as described 4626below, or a list or vector containing display specifications. 4627 4628*** Replacing text, displaying text in marginal areas 4629 4630To replace the text having the `display' property with some other 4631text, use a display specification of the form `(LOCATION STRING)'. 4632 4633If LOCATION is `(margin left-margin)', STRING is displayed in the left 4634marginal area, if it is `(margin right-margin)', it is displayed in 4635the right marginal area, and if LOCATION is `(margin nil)' STRING 4636is displayed in the text. In the latter case you can also use the 4637simpler form STRING as property value. 4638 4639*** Variable width and height spaces 4640 4641To display a space of fractional width or height, use a display 4642specification of the form `(LOCATION STRETCH)'. If LOCATION is 4643`(margin left-margin)', the space is displayed in the left marginal 4644area, if it is `(margin right-margin)', it is displayed in the right 4645marginal area, and if LOCATION is `(margin nil)' the space is 4646displayed in the text. In the latter case you can also use the 4647simpler form STRETCH as property value. 4648 4649The stretch specification STRETCH itself is a list of the form `(space 4650PROPS)', where PROPS is a property list which can contain the 4651properties described below. 4652 4653The display of the fractional space replaces the display of the 4654characters having the `display' property. 4655 4656- :width WIDTH 4657 4658Specifies that the space width should be WIDTH times the normal 4659character width. WIDTH can be an integer or floating point number. 4660 4661- :relative-width FACTOR 4662 4663Specifies that the width of the stretch should be computed from the 4664first character in a group of consecutive characters that have the 4665same `display' property. The computation is done by multiplying the 4666width of that character by FACTOR. 4667 4668- :align-to HPOS 4669 4670Specifies that the space should be wide enough to reach HPOS. The 4671value HPOS is measured in units of the normal character width. 4672 4673Exactly one of the above properties should be used. 4674 4675- :height HEIGHT 4676 4677Specifies the height of the space, as HEIGHT, measured in terms of the 4678normal line height. 4679 4680- :relative-height FACTOR 4681 4682The height of the space is computed as the product of the height 4683of the text having the `display' property and FACTOR. 4684 4685- :ascent ASCENT 4686 4687Specifies that ASCENT percent of the height of the stretch should be 4688used for the ascent of the stretch, i.e. for the part above the 4689baseline. The value of ASCENT must be a non-negative number less or 4690equal to 100. 4691 4692You should not use both `:height' and `:relative-height' together. 4693 4694*** Images 4695 4696A display specification for an image has the form `(LOCATION 4697. IMAGE)', where IMAGE is an image specification. The image replaces, 4698in the display, the characters having this display specification in 4699their `display' text property. If LOCATION is `(margin left-margin)', 4700the image will be displayed in the left marginal area, if it is 4701`(margin right-margin)' it will be displayed in the right marginal 4702area, and if LOCATION is `(margin nil)' the image will be displayed in 4703the text. In the latter case you can also use the simpler form IMAGE 4704as display specification. 4705 4706*** Other display properties 4707 4708- (space-width FACTOR) 4709 4710Specifies that space characters in the text having that property 4711should be displayed FACTOR times as wide as normal; FACTOR must be an 4712integer or float. 4713 4714- (height HEIGHT) 4715 4716Display text having this property in a font that is smaller or larger. 4717 4718If HEIGHT is a list of the form `(+ N)', where N is an integer, that 4719means to use a font that is N steps larger. If HEIGHT is a list of 4720the form `(- N)', that means to use a font that is N steps smaller. A 4721``step'' is defined by the set of available fonts; each size for which 4722a font is available counts as a step. 4723 4724If HEIGHT is a number, that means to use a font that is HEIGHT times 4725as tall as the frame's default font. 4726 4727If HEIGHT is a symbol, it is called as a function with the current 4728height as argument. The function should return the new height to use. 4729 4730Otherwise, HEIGHT is evaluated to get the new height, with the symbol 4731`height' bound to the current specified font height. 4732 4733- (raise FACTOR) 4734 4735FACTOR must be a number, specifying a multiple of the current 4736font's height. If it is positive, that means to display the characters 4737raised. If it is negative, that means to display them lower down. The 4738amount of raising or lowering is computed without taking account of the 4739`height' subproperty. 4740 4741*** Conditional display properties 4742 4743All display specifications can be conditionalized. If a specification 4744has the form `(when CONDITION . SPEC)', the specification SPEC applies 4745only when CONDITION yields a non-nil value when evaluated. During the 4746evaluation, `object' is bound to the string or buffer having the 4747conditional display property; `position' and `buffer-position' are 4748bound to the position within `object' and the buffer position where 4749the display property was found, respectively. Both positions can be 4750different when object is a string. 4751 4752The normal specification consisting of SPEC only is equivalent to 4753`(when t . SPEC)'. 4754 4755** New menu separator types. 4756 4757Emacs now supports more than one menu separator type. Menu items with 4758item names consisting of dashes only (including zero dashes) are 4759treated like before. In addition, the following item names are used 4760to specify other menu separator types. 4761 4762- `--no-line' or `--space', or `--:space', or `--:noLine' 4763 4764No separator lines are drawn, but a small space is inserted where the 4765separator occurs. 4766 4767- `--single-line' or `--:singleLine' 4768 4769A single line in the menu's foreground color. 4770 4771- `--double-line' or `--:doubleLine' 4772 4773A double line in the menu's foreground color. 4774 4775- `--single-dashed-line' or `--:singleDashedLine' 4776 4777A single dashed line in the menu's foreground color. 4778 4779- `--double-dashed-line' or `--:doubleDashedLine' 4780 4781A double dashed line in the menu's foreground color. 4782 4783- `--shadow-etched-in' or `--:shadowEtchedIn' 4784 4785A single line with 3D sunken appearance. This is the form 4786displayed for item names consisting of dashes only. 4787 4788- `--shadow-etched-out' or `--:shadowEtchedOut' 4789 4790A single line with 3D raised appearance. 4791 4792- `--shadow-etched-in-dash' or `--:shadowEtchedInDash' 4793 4794A single dashed line with 3D sunken appearance. 4795 4796- `--shadow-etched-out-dash' or `--:shadowEtchedOutDash' 4797 4798A single dashed line with 3D raise appearance. 4799 4800- `--shadow-double-etched-in' or `--:shadowDoubleEtchedIn' 4801 4802Two lines with 3D sunken appearance. 4803 4804- `--shadow-double-etched-out' or `--:shadowDoubleEtchedOut' 4805 4806Two lines with 3D raised appearance. 4807 4808- `--shadow-double-etched-in-dash' or `--:shadowDoubleEtchedInDash' 4809 4810Two dashed lines with 3D sunken appearance. 4811 4812- `--shadow-double-etched-out-dash' or `--:shadowDoubleEtchedOutDash' 4813 4814Two dashed lines with 3D raised appearance. 4815 4816Under LessTif/Motif, the last four separator types are displayed like 4817the corresponding single-line separators. 4818 4819** New frame parameters for scroll bar colors. 4820 4821The new frame parameters `scroll-bar-foreground' and 4822`scroll-bar-background' can be used to change scroll bar colors. 4823Their value must be either a color name, a string, or nil to specify 4824that scroll bars should use a default color. For toolkit scroll bars, 4825default colors are toolkit specific. For non-toolkit scroll bars, the 4826default background is the background color of the frame, and the 4827default foreground is black. 4828 4829The X resource name of these parameters are `scrollBarForeground' 4830(class ScrollBarForeground) and `scrollBarBackground' (class 4831`ScrollBarBackground'). 4832 4833Setting these parameters overrides toolkit specific X resource 4834settings for scroll bar colors. 4835 4836** You can set `redisplay-dont-pause' to a non-nil value to prevent 4837display updates from being interrupted when input is pending. 4838 4839** Changing a window's width may now change its window start if it 4840starts on a continuation line. The new window start is computed based 4841on the window's new width, starting from the start of the continued 4842line as the start of the screen line with the minimum distance from 4843the original window start. 4844 4845** The variable `hscroll-step' and the functions 4846`hscroll-point-visible' and `hscroll-window-column' have been removed 4847now that proper horizontal scrolling is implemented. 4848 4849** Windows can now be made fixed-width and/or fixed-height. 4850 4851A window is fixed-size if its buffer has a buffer-local variable 4852`window-size-fixed' whose value is not nil. A value of `height' makes 4853windows fixed-height, a value of `width' makes them fixed-width, any 4854other non-nil value makes them both fixed-width and fixed-height. 4855 4856The following code makes all windows displaying the current buffer 4857fixed-width and fixed-height. 4858 4859 (set (make-local-variable 'window-size-fixed) t) 4860 4861A call to enlarge-window on a window gives an error if that window is 4862fixed-width and it is tried to change the window's width, or if the 4863window is fixed-height, and it is tried to change its height. To 4864change the size of a fixed-size window, bind `window-size-fixed' 4865temporarily to nil, for example 4866 4867 (let ((window-size-fixed nil)) 4868 (enlarge-window 10)) 4869 4870Likewise, an attempt to split a fixed-height window vertically, 4871or a fixed-width window horizontally results in an error. 4872 4873** The cursor-type frame parameter is now supported on MS-DOS 4874terminals. When Emacs starts, it by default changes the cursor shape 4875to a solid box, as it does on Unix. The `cursor-type' frame parameter 4876overrides this as it does on Unix, except that the bar cursor is 4877horizontal rather than vertical (since the MS-DOS display doesn't 4878support a vertical-bar cursor). 4879 4880 4881 4882---------------------------------------------------------------------- 4883This file is part of GNU Emacs. 4884 4885GNU Emacs is free software: you can redistribute it and/or modify 4886it under the terms of the GNU General Public License as published by 4887the Free Software Foundation, either version 3 of the License, or 4888(at your option) any later version. 4889 4890GNU Emacs is distributed in the hope that it will be useful, 4891but WITHOUT ANY WARRANTY; without even the implied warranty of 4892MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 4893GNU General Public License for more details. 4894 4895You should have received a copy of the GNU General Public License 4896along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. 4897 4898 4899Local variables: 4900mode: outline 4901paragraph-separate: "[ ]*$" 4902end: 4903