| 1 | GNU Emacs NEWS -- history of user-visible changes. 1992. |
| 2 | |
| 3 | Copyright (C) 1993-1995, 2001, 2006-2014 Free Software Foundation, Inc. |
| 4 | See the end of the file for license conditions. |
| 5 | |
| 6 | |
| 7 | This file is about changes in emacs versions 19. |
| 8 | |
| 9 | |
| 10 | \f |
| 11 | * Emacs 19.34 is a bug-fix release with no user-visible changes. |
| 12 | |
| 13 | |
| 14 | \f |
| 15 | * Changes in Emacs 19.33. |
| 16 | |
| 17 | ** Bibtex mode no longer turns on Auto Fill automatically. (No major |
| 18 | mode should do that--it is the user's choice.) |
| 19 | |
| 20 | ** The variable normal-auto-fill-function specifies the function to |
| 21 | use for auto-fill-function, if and when Auto Fill is turned on. |
| 22 | Major modes can set this locally to alter how Auto Fill works. |
| 23 | |
| 24 | |
| 25 | \f |
| 26 | * Editing Changes in Emacs 19.32 |
| 27 | |
| 28 | ** C-x f with no argument now signals an error. |
| 29 | To set the fill column at the current column, use C-u C-x f. |
| 30 | |
| 31 | ** Expanding dynamic abbrevs with M-/ is now smarter about case |
| 32 | conversion. If you type the abbreviation with mixed case, and it |
| 33 | matches the beginning of the expansion including case, then the |
| 34 | expansion is copied verbatim. Using SPC M-/ to copy an additional |
| 35 | word always copies it verbatim except when the previous copied word is |
| 36 | all caps. |
| 37 | |
| 38 | ** On a non-windowing terminal, which can display only one Emacs frame |
| 39 | at a time, creating a new frame with C-x 5 2 also selects that frame. |
| 40 | |
| 41 | When using a display that can show multiple frames at once, C-x 5 2 |
| 42 | does make the frame visible, but does not select it. This is the same |
| 43 | as in previous Emacs versions. |
| 44 | |
| 45 | ** You can use C-x 5 2 to create multiple frames on MSDOS, just as on a |
| 46 | non-X terminal on Unix. Of course, only one frame is visible at any |
| 47 | time, since your terminal doesn't have the ability to display multiple |
| 48 | frames. |
| 49 | |
| 50 | ** On Windows, set win32-pass-alt-to-system to a non-nil value |
| 51 | if you would like tapping the Alt key to invoke the Windows menu. |
| 52 | This feature is not enabled by default; since the Alt key is also the |
| 53 | Meta key, it is too easy and painful to activate this feature by |
| 54 | accident. |
| 55 | |
| 56 | ** The command apply-macro-to-region-lines repeats the last defined |
| 57 | keyboard macro once for each complete line within the current region. |
| 58 | It does this line by line, by moving point to the beginning of that |
| 59 | line and then executing the macro. |
| 60 | |
| 61 | This command is not new, but was never documented before. |
| 62 | |
| 63 | ** You can now use Mouse-1 to place the region around a string constant |
| 64 | (something surrounded by doublequote characters or other delimiter |
| 65 | characters of like syntax) by double-clicking on one of the delimiting |
| 66 | characters. |
| 67 | |
| 68 | ** Font Lock mode |
| 69 | |
| 70 | *** Font Lock support modes |
| 71 | |
| 72 | Font Lock can be configured to use Fast Lock mode and Lazy Lock mode (see |
| 73 | below) in a flexible way. Rather than adding the appropriate function to the |
| 74 | hook font-lock-mode-hook, you can use the new variable font-lock-support-mode |
| 75 | to control which modes have Fast Lock mode or Lazy Lock mode turned on when |
| 76 | Font Lock mode is enabled. |
| 77 | |
| 78 | For example, to use Fast Lock mode when Font Lock mode is turned on, put: |
| 79 | |
| 80 | (setq font-lock-support-mode 'fast-lock-mode) |
| 81 | |
| 82 | in your ~/.emacs. |
| 83 | |
| 84 | *** lazy-lock |
| 85 | |
| 86 | The lazy-lock package speeds up Font Lock mode by making fontification occur |
| 87 | only when necessary, such as when a previously unfontified part of the buffer |
| 88 | becomes visible in a window. When you create a buffer with Font Lock mode and |
| 89 | Lazy Lock mode turned on, the buffer is not fontified. When certain events |
| 90 | occur (such as scrolling), Lazy Lock makes sure that the visible parts of the |
| 91 | buffer are fontified. Lazy Lock also defers on-the-fly fontification until |
| 92 | Emacs has been idle for a given amount of time. |
| 93 | |
| 94 | To use this package, put in your ~/.emacs: |
| 95 | |
| 96 | (setq font-lock-support-mode 'lazy-lock-mode) |
| 97 | |
| 98 | To control the package behavior, see the documentation for `lazy-lock-mode'. |
| 99 | |
| 100 | ** Changes in BibTeX mode. |
| 101 | |
| 102 | *** For all entries allow spaces and tabs between opening brace or |
| 103 | paren and key. |
| 104 | |
| 105 | *** Non-escaped double-quoted characters (as in `Sch"of') are now |
| 106 | supported. |
| 107 | |
| 108 | ** Gnus changes. |
| 109 | |
| 110 | Gnus, the Emacs news reader, has undergone further rewriting. Many new |
| 111 | commands and variables have been added. There should be no |
| 112 | significant incompatibilities between this Gnus version and the |
| 113 | previously released version, except in the message composition area. |
| 114 | |
| 115 | Below is a list of the more user-visible changes. Coding changes |
| 116 | between Gnus 5.1 and 5.2 are more extensive. |
| 117 | |
| 118 | *** A new message composition mode is used. All old customization |
| 119 | variables for mail-mode, rnews-reply-mode and gnus-msg are now |
| 120 | obsolete. |
| 121 | |
| 122 | *** Gnus is now able to generate "sparse" threads -- threads where |
| 123 | missing articles are represented by empty nodes. |
| 124 | |
| 125 | (setq gnus-build-sparse-threads 'some) |
| 126 | |
| 127 | *** Outgoing articles are stored on a special archive server. |
| 128 | |
| 129 | To disable this: (setq gnus-message-archive-group nil) |
| 130 | |
| 131 | *** Partial thread regeneration now happens when articles are |
| 132 | referred. |
| 133 | |
| 134 | *** Gnus can make use of GroupLens predictions: |
| 135 | |
| 136 | (setq gnus-use-grouplens t) |
| 137 | |
| 138 | *** A trn-line tree buffer can be displayed. |
| 139 | |
| 140 | (setq gnus-use-trees t) |
| 141 | |
| 142 | *** An nn-like pick-and-read minor mode is available for the summary |
| 143 | buffers. |
| 144 | |
| 145 | (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode) |
| 146 | |
| 147 | *** In binary groups you can use a special binary minor mode: |
| 148 | |
| 149 | `M-x gnus-binary-mode' |
| 150 | |
| 151 | *** Groups can be grouped in a folding topic hierarchy. |
| 152 | |
| 153 | (add-hook 'gnus-group-mode-hook 'gnus-topic-mode) |
| 154 | |
| 155 | *** Gnus can re-send and bounce mail. |
| 156 | |
| 157 | Use the `S D r' and `S D b'. |
| 158 | |
| 159 | *** Groups can now have a score, and bubbling based on entry frequency |
| 160 | is possible. |
| 161 | |
| 162 | (add-hook 'gnus-summary-exit-hook 'gnus-summary-bubble-group) |
| 163 | |
| 164 | *** Groups can be process-marked, and commands can be performed on |
| 165 | groups of groups. |
| 166 | |
| 167 | *** Caching is possible in virtual groups. |
| 168 | |
| 169 | *** nndoc now understands all kinds of digests, mail boxes, rnews news |
| 170 | batches, ClariNet briefs collections, and just about everything else. |
| 171 | |
| 172 | *** Gnus has a new backend (nnsoup) to create/read SOUP packets. |
| 173 | |
| 174 | *** The Gnus cache is much faster. |
| 175 | |
| 176 | *** Groups can be sorted according to many criteria. |
| 177 | |
| 178 | For instance: (setq gnus-group-sort-function 'gnus-group-sort-by-rank) |
| 179 | |
| 180 | *** New group parameters have been introduced to set list-address and |
| 181 | expiration times. |
| 182 | |
| 183 | *** All formatting specs allow specifying faces to be used. |
| 184 | |
| 185 | *** There are several more commands for setting/removing/acting on |
| 186 | process marked articles on the `M P' submap. |
| 187 | |
| 188 | *** The summary buffer can be limited to show parts of the available |
| 189 | articles based on a wide range of criteria. These commands have been |
| 190 | bound to keys on the `/' submap. |
| 191 | |
| 192 | *** Articles can be made persistent -- as an alternative to saving |
| 193 | articles with the `*' command. |
| 194 | |
| 195 | *** All functions for hiding article elements are now toggles. |
| 196 | |
| 197 | *** Article headers can be buttonized. |
| 198 | |
| 199 | (add-hook 'gnus-article-display-hook 'gnus-article-add-buttons-to-head) |
| 200 | |
| 201 | *** All mail backends support fetching articles by Message-ID. |
| 202 | |
| 203 | *** Duplicate mail can now be treated properly. See the |
| 204 | `nnmail-treat-duplicates' variable. |
| 205 | |
| 206 | *** All summary mode commands are available directly from the article |
| 207 | buffer. |
| 208 | |
| 209 | *** Frames can be part of `gnus-buffer-configuration'. |
| 210 | |
| 211 | *** Mail can be re-scanned by a daemonic process. |
| 212 | |
| 213 | *** Gnus can make use of NoCeM files to filter spam. |
| 214 | |
| 215 | (setq gnus-use-nocem t) |
| 216 | |
| 217 | *** Groups can be made permanently visible. |
| 218 | |
| 219 | (setq gnus-permanently-visible-groups "^nnml:") |
| 220 | |
| 221 | *** Many new hooks have been introduced to make customizing easier. |
| 222 | |
| 223 | *** Gnus respects the Mail-Copies-To header. |
| 224 | |
| 225 | *** Threads can be gathered by looking at the References header. |
| 226 | |
| 227 | (setq gnus-summary-thread-gathering-function |
| 228 | 'gnus-gather-threads-by-references) |
| 229 | |
| 230 | *** Read articles can be stored in a special backlog buffer to avoid |
| 231 | refetching. |
| 232 | |
| 233 | (setq gnus-keep-backlog 50) |
| 234 | |
| 235 | *** A clean copy of the current article is always stored in a separate |
| 236 | buffer to allow easier treatment. |
| 237 | |
| 238 | *** Gnus can suggest where to save articles. See `gnus-split-methods'. |
| 239 | |
| 240 | *** Gnus doesn't have to do as much prompting when saving. |
| 241 | |
| 242 | (setq gnus-prompt-before-saving t) |
| 243 | |
| 244 | *** gnus-uu can view decoded files asynchronously while fetching |
| 245 | articles. |
| 246 | |
| 247 | (setq gnus-uu-grabbed-file-functions 'gnus-uu-grab-view) |
| 248 | |
| 249 | *** Filling in the article buffer now works properly on cited text. |
| 250 | |
| 251 | *** Hiding cited text adds buttons to toggle hiding, and how much |
| 252 | cited text to hide is now customizable. |
| 253 | |
| 254 | (setq gnus-cited-lines-visible 2) |
| 255 | |
| 256 | *** Boring headers can be hidden. |
| 257 | |
| 258 | (add-hook 'gnus-article-display-hook 'gnus-article-hide-boring-headers) |
| 259 | |
| 260 | *** Default scoring values can now be set from the menu bar. |
| 261 | |
| 262 | *** Further syntax checking of outgoing articles have been added. |
| 263 | |
| 264 | The Gnus manual has been expanded. It explains all these new features |
| 265 | in greater detail. |
| 266 | |
| 267 | \f |
| 268 | * Lisp Changes in Emacs 19.32 |
| 269 | |
| 270 | ** The function set-visited-file-name now accepts an optional |
| 271 | second argument NO-QUERY. If it is non-nil, then the user is not |
| 272 | asked for confirmation in the case where the specified file already |
| 273 | exists. |
| 274 | |
| 275 | ** The variable print-length applies to printing vectors and bitvectors, |
| 276 | as well as lists. |
| 277 | |
| 278 | ** The new function keymap-parent returns the parent keymap |
| 279 | of a given keymap. |
| 280 | |
| 281 | ** The new function set-keymap-parent specifies a new parent for a |
| 282 | given keymap. The arguments are KEYMAP and PARENT. PARENT must be a |
| 283 | keymap or nil. |
| 284 | |
| 285 | ** Sometimes menu keymaps use a command name, a symbol, which is really |
| 286 | an automatically generated alias for some other command, the "real" |
| 287 | name. In such a case, you should give that alias symbol a non-nil |
| 288 | menu-alias property. That property tells the menu system to look for |
| 289 | equivalent keys for the real name instead of equivalent keys for the |
| 290 | alias. |
| 291 | |
| 292 | |
| 293 | \f |
| 294 | * Editing Changes in Emacs 19.31 |
| 295 | |
| 296 | ** Freedom of the press restricted in the United States. |
| 297 | |
| 298 | Emacs has been censored in accord with the Communications Decency Act. |
| 299 | This includes removing some features of the doctor program. That law |
| 300 | was described by its supporters as a ban on pornography, but it bans |
| 301 | far more than that. The Emacs distribution has never contained any |
| 302 | pornography, but parts of it were nonetheless prohibited. |
| 303 | |
| 304 | For information on US government censorship of the Internet, and what |
| 305 | you can do to bring back freedom of the press, see the web site |
| 306 | `http://www.vtw.org/'. |
| 307 | |
| 308 | ** A note about C mode indentation customization. |
| 309 | |
| 310 | The old (Emacs 19.29) ways of specifying a C indentation style |
| 311 | do not normally work in the new implementation of C mode. |
| 312 | It has its own methods of customizing indentation, which are |
| 313 | much more powerful than the old C mode. See the Editing Programs |
| 314 | chapter of the manual for details. |
| 315 | |
| 316 | However, you can load the library cc-compat to make the old |
| 317 | customization variables take effect. |
| 318 | |
| 319 | ** Marking with the mouse. |
| 320 | |
| 321 | When you mark a region with the mouse, the region now remains |
| 322 | highlighted until the next input event, regardless of whether you are |
| 323 | using M-x transient-mark-mode. |
| 324 | |
| 325 | ** Improved Windows NT/95 support. |
| 326 | |
| 327 | *** Emacs now supports scroll bars on Windows NT and Windows 95. |
| 328 | |
| 329 | *** Emacs now supports subprocesses on Windows 95. (Subprocesses used |
| 330 | to work on NT only and not on 95.) |
| 331 | |
| 332 | *** There are difficulties with subprocesses, though, due to problems |
| 333 | in Windows, beyond the control of Emacs. They work fine as long as |
| 334 | you run Windows applications. The problems arise when you run a DOS |
| 335 | application in a subprocesses. Since current shells run as DOS |
| 336 | applications, these problems are significant. |
| 337 | |
| 338 | If you run a DOS application in a subprocess, then the application is |
| 339 | likely to busy-wait, which means that your machine will be 100% busy. |
| 340 | However, if you don't mind the temporary heavy load, the subprocess |
| 341 | will work OK as long as you tell it to terminate before you start any |
| 342 | other DOS application as a subprocess. |
| 343 | |
| 344 | Emacs is unable to terminate or interrupt a DOS subprocess. |
| 345 | You have to do this by providing input directly to the subprocess. |
| 346 | |
| 347 | If you run two DOS applications at the same time in two separate |
| 348 | subprocesses, even if one of them is asynchronous, you will probably |
| 349 | have to reboot your machine--until then, it will remain 100% busy. |
| 350 | Windows simply does not cope when one Windows process tries to run two |
| 351 | separate DOS subprocesses. Typing CTL-ALT-DEL and then choosing |
| 352 | Shutdown seems to work although it may take a few minutes. |
| 353 | |
| 354 | ** M-x resize-minibuffer-mode. |
| 355 | |
| 356 | This command, not previously mentioned in NEWS, toggles a mode in |
| 357 | which the minibuffer window expands to show as many lines as the |
| 358 | minibuffer contains. |
| 359 | |
| 360 | ** `title' frame parameter and resource. |
| 361 | |
| 362 | The `title' X resource now specifies just the frame title, nothing else. |
| 363 | It does not affect the name used for looking up other X resources. |
| 364 | It works by setting the new `title' frame parameter, which likewise |
| 365 | affects just the displayed title of the frame. |
| 366 | |
| 367 | The `name' parameter continues to do what it used to do: |
| 368 | it specifies the frame name for looking up X resources, |
| 369 | and also serves as the default for the displayed title |
| 370 | when the `title' parameter is unspecified or nil. |
| 371 | |
| 372 | ** Emacs now uses the X toolkit by default, if you have a new |
| 373 | enough version of X installed (X11R5 or newer). |
| 374 | |
| 375 | ** When you compile Emacs with the Motif widget set, Motif handles the |
| 376 | F10 key by activating the menu bar. To avoid confusion, the usual |
| 377 | Emacs binding of F10 is replaced with a no-op when using Motif. |
| 378 | |
| 379 | If you want to be able to use F10 in Emacs, you can rebind the Motif |
| 380 | menubar to some other key which you don't use. To do so, add |
| 381 | something like this to your X resources file. This example rebinds |
| 382 | the Motif menu bar activation key to S-F12: |
| 383 | |
| 384 | Emacs*defaultVirtualBindings: osfMenuBar : Shift<Key>F12 |
| 385 | |
| 386 | ** In overwrite mode, DEL now inserts spaces in most cases |
| 387 | to replace the characters it "deletes". |
| 388 | |
| 389 | ** The Rmail summary now shows the number of lines in each message. |
| 390 | |
| 391 | ** Rmail has a new command M-x unforward-rmail-message, which extracts |
| 392 | a forwarded message from the message that forwarded it. To use it, |
| 393 | select a message which contains a forwarded message and then type the command. |
| 394 | It inserts the forwarded message as a separate Rmail message |
| 395 | immediately after the selected one. |
| 396 | |
| 397 | This command also undoes the textual modifications that are standardly |
| 398 | made, as part of forwarding, by Rmail and other mail reader programs. |
| 399 | |
| 400 | ** Turning off saving of .saves-... files in your home directory. |
| 401 | |
| 402 | Each Emacs session writes a file named .saves-... in your home |
| 403 | directory to record which files M-x recover-session should recover. |
| 404 | If you exit Emacs normally with C-x C-c, it deletes that file. If |
| 405 | Emacs or the operating system crashes, the file remains for M-x |
| 406 | recover-session. |
| 407 | |
| 408 | You can turn off the writing of these files by setting |
| 409 | auto-save-list-file-name to nil. If you do this, M-x recover-session |
| 410 | will not work. |
| 411 | |
| 412 | Some previous Emacs versions failed to delete these files even on |
| 413 | normal exit. This is fixed now. If you are thinking of turning off |
| 414 | this feature because of past experiences with versions that had this |
| 415 | bug, it would make sense to check whether you still want to do so |
| 416 | now that the bug is fixed. |
| 417 | |
| 418 | ** Changes to Version Control (VC) |
| 419 | |
| 420 | There is a new variable, vc-follow-symlinks. It indicates what to do |
| 421 | when you visit a link to a file that is under version control. |
| 422 | Editing the file through the link bypasses the version control system, |
| 423 | which is dangerous and probably not what you want. |
| 424 | |
| 425 | If this variable is t, VC follows the link and visits the real file, |
| 426 | telling you about it in the echo area. If it is `ask' (the default), |
| 427 | VC asks for confirmation whether it should follow the link. If nil, |
| 428 | the link is visited and a warning displayed. |
| 429 | |
| 430 | ** iso-acc.el now lets you specify a choice of language. |
| 431 | Languages include "latin-1" (the default) and "latin-2" (which |
| 432 | is designed for entering ISO Latin-2 characters). |
| 433 | |
| 434 | There are also choices for specific human languages such as French and |
| 435 | Portuguese. These are subsets of Latin-1, which differ in that they |
| 436 | enable only the accent characters needed for particular language. |
| 437 | The other accent characters, not needed for the chosen language, |
| 438 | remain normal. |
| 439 | |
| 440 | ** Posting articles and sending mail now has M-TAB completion on various |
| 441 | header fields (Newsgroups, To, CC, ...). |
| 442 | |
| 443 | Completion in the Newsgroups header depends on the list of groups |
| 444 | known to your news reader. Completion in the Followup-To header |
| 445 | offers those groups which are in the Newsgroups header, since |
| 446 | Followup-To usually just holds one of those. |
| 447 | |
| 448 | Completion in fields that hold mail addresses works based on the list |
| 449 | of local users plus your aliases. Additionally, if your site provides |
| 450 | a mail directory or a specific host to use for any unrecognized user |
| 451 | name, you can arrange to query that host for completion also. (See the |
| 452 | documentation of variables `mail-directory-process' and |
| 453 | `mail-directory-stream'.) |
| 454 | |
| 455 | ** A greatly extended sgml-mode offers new features such as (to be configured) |
| 456 | skeletons with completing read for tags and attributes, typing named |
| 457 | characters including optionally all 8bit characters, making tags invisible |
| 458 | with optional alternate display text, skipping and deleting tag(pair)s. |
| 459 | |
| 460 | Note: since Emacs' syntax feature cannot limit the special meaning of ', " and |
| 461 | - to inside <>, for some texts the result, especially of font locking, may be |
| 462 | wrong (see `sgml-specials' if you get wrong results). |
| 463 | |
| 464 | The derived html-mode configures this with tags and attributes more or |
| 465 | less HTML3ish. It also offers optional quick keys like C-c 1 for |
| 466 | headline or C-c u for unordered list (see `html-quick-keys'). Edit / |
| 467 | Text Properties / Face or M-g combinations create tags as applicable. |
| 468 | Outline minor mode is supported and level 1 font-locking tries to |
| 469 | fontify tag contents (which only works when they fit on one line, due |
| 470 | to a limitation in font-lock). |
| 471 | |
| 472 | External viewing via browse-url can occur automatically upon saving. |
| 473 | |
| 474 | ** M-x imenu-add-to-menubar now adds to the menu bar for the current |
| 475 | buffer only. If you want to put an Imenu item in the menu bar for all |
| 476 | buffers that use a particular major mode, use the mode hook, as in |
| 477 | this example: |
| 478 | |
| 479 | (add-hook 'emacs-lisp-mode-hook |
| 480 | '(lambda () (imenu-add-to-menubar "Index"))) |
| 481 | |
| 482 | ** Changes in BibTeX mode. |
| 483 | |
| 484 | *** Field names may now contain digits, hyphens, and underscores. |
| 485 | |
| 486 | *** Font Lock mode is now supported. |
| 487 | |
| 488 | *** bibtex-make-optional-field is no longer interactive. |
| 489 | |
| 490 | *** If bibtex-maintain-sorted-entries is non-nil, inserting new |
| 491 | entries is now done with a faster algorithm. However, inserting |
| 492 | will fail in this case if the buffer contains invalid entries or |
| 493 | isn't in sorted order, so you should finish each entry with C-c C-c |
| 494 | (bibtex-close-entry) after you have inserted or modified it. |
| 495 | The default value of bibtex-maintain-sorted-entries is nil. |
| 496 | |
| 497 | *** Function `show-all' is no longer bound to a key, since C-u C-c C-q |
| 498 | does the same job. |
| 499 | |
| 500 | *** Entries with quotes inside quote-delimited fields (as `author = |
| 501 | "Stefan Sch{\"o}f"') are now supported. |
| 502 | |
| 503 | *** Case in field names doesn't matter anymore when searching for help |
| 504 | text. |
| 505 | |
| 506 | ** Font Lock mode |
| 507 | |
| 508 | *** Global Font Lock mode |
| 509 | |
| 510 | Font Lock mode can be turned on globally, in buffers that support it, by the |
| 511 | new command global-font-lock-mode. You can use the new variable |
| 512 | font-lock-global-modes to control which modes have Font Lock mode automagically |
| 513 | turned on. By default, this variable is set so that Font Lock mode is turned |
| 514 | on globally where the buffer mode supports it. |
| 515 | |
| 516 | For example, to automagically turn on Font Lock mode where supported, put: |
| 517 | |
| 518 | (global-font-lock-mode t) |
| 519 | |
| 520 | in your ~/.emacs. |
| 521 | |
| 522 | *** Local Refontification |
| 523 | |
| 524 | In Font Lock mode, editing a line automatically refontifies that line only. |
| 525 | However, if your change alters the syntactic context for following lines, |
| 526 | those lines remain incorrectly fontified. To refontify them, use the new |
| 527 | command M-g M-g (font-lock-fontify-block). |
| 528 | |
| 529 | In certain major modes, M-g M-g refontifies the entire current function. |
| 530 | (The variable font-lock-mark-block-function controls how to find the |
| 531 | current function.) In other major modes, M-g M-g refontifies 16 lines |
| 532 | above and below point. |
| 533 | |
| 534 | With a prefix argument N, M-g M-g refontifies N lines above and below point. |
| 535 | |
| 536 | ** Follow mode |
| 537 | |
| 538 | Follow mode is a new minor mode combining windows showing the same |
| 539 | buffer into one tall "virtual window". The windows are typically two |
| 540 | side-by-side windows. Follow mode makes them scroll together as if |
| 541 | they were a unit. To use it, go to a frame with just one window, |
| 542 | split it into two side-by-side windows using C-x 3, and then type M-x |
| 543 | follow-mode. |
| 544 | |
| 545 | M-x follow-mode turns off Follow mode if it is already enabled. |
| 546 | |
| 547 | To display two side-by-side windows and activate Follow mode, use the |
| 548 | command M-x follow-delete-other-windows-and-split. |
| 549 | |
| 550 | ** hide-show changes. |
| 551 | |
| 552 | The hooks hs-hide-hooks and hs-show-hooks have been renamed |
| 553 | to hs-hide-hook and hs-show-hook, to follow the convention for |
| 554 | normal hooks. |
| 555 | |
| 556 | ** Simula mode now has a menu containing the most important commands. |
| 557 | The new command simula-indent-exp is bound to C-M-q. |
| 558 | |
| 559 | ** etags can now handle programs written in Erlang. Files are |
| 560 | recognized by the extensions .erl and .hrl. The tagged lines are |
| 561 | those that begin a function, record, or macro. |
| 562 | |
| 563 | ** MSDOS Changes |
| 564 | |
| 565 | *** It is now possible to compile Emacs with the version 2 of DJGPP. |
| 566 | Compilation with DJGPP version 1 also still works. |
| 567 | |
| 568 | *** The documentation of DOS-specific aspects of Emacs was rewritten |
| 569 | and expanded; see the ``MS-DOS'' node in the on-line docs. |
| 570 | |
| 571 | *** Emacs now uses ~ for backup file names, not .bak. |
| 572 | |
| 573 | *** You can simulate mouse-3 on two-button mice by simultaneously |
| 574 | pressing both mouse buttons. |
| 575 | |
| 576 | *** A number of packages and commands which previously failed or had |
| 577 | restricted functionality on MS-DOS, now work. The most important ones |
| 578 | are: |
| 579 | |
| 580 | **** Printing (both with `M-x lpr-buffer' and with `ps-print' package) |
| 581 | now works. |
| 582 | |
| 583 | **** `Ediff' works (in a single-frame mode). |
| 584 | |
| 585 | **** `M-x display-time' can be used on MS-DOS (due to the new |
| 586 | implementation of Emacs timers, see below). |
| 587 | |
| 588 | **** `Dired' supports Unix-style shell wildcards. |
| 589 | |
| 590 | **** The `c-macro-expand' command now works as on other platforms. |
| 591 | |
| 592 | **** `M-x recover-session' works. |
| 593 | |
| 594 | **** `M-x list-colors-display' displays all the available colors. |
| 595 | |
| 596 | **** The `TPU-EDT' package works. |
| 597 | |
| 598 | \f |
| 599 | * Lisp changes in Emacs 19.31. |
| 600 | |
| 601 | ** The function using-unix-filesystems on Windows NT and Windows 95 |
| 602 | tells Emacs to read and write files assuming that they reside on a |
| 603 | remote Unix filesystem. No CR/LF translation is done on any files in |
| 604 | this case. Invoking using-unix-filesystems with t activates this |
| 605 | behavior, and invoking it with any other value deactivates it. |
| 606 | |
| 607 | ** Change in system-type and system-configuration values. |
| 608 | |
| 609 | The value of system-type on a Linux-based GNU system is now `lignux', |
| 610 | not `linux'. This means that some programs which use `system-type' |
| 611 | need to be changed. The value of `system-configuration' will also |
| 612 | be different. |
| 613 | |
| 614 | It is generally recommended to use `system-configuration' rather |
| 615 | than `system-type'. |
| 616 | |
| 617 | See <http://www.gnu.org/gnu/linux-and-gnu.html> for more about this. |
| 618 | |
| 619 | ** The functions shell-command and dired-call-process |
| 620 | now run file name handlers for default-directory, if it has them. |
| 621 | |
| 622 | ** Undoing the deletion of text now restores the positions of markers |
| 623 | that pointed into or next to the deleted text. |
| 624 | |
| 625 | ** Timers created with run-at-time now work internally to Emacs, and |
| 626 | no longer use a separate process. Therefore, they now work more |
| 627 | reliably and can be used for shorter time delays. |
| 628 | |
| 629 | The new function run-with-timer is a convenient way to set up a timer |
| 630 | to run a specified amount of time after the present. A call looks |
| 631 | like this: |
| 632 | |
| 633 | (run-with-timer SECS REPEAT FUNCTION ARGS...) |
| 634 | |
| 635 | SECS says how many seconds should elapse before the timer happens. |
| 636 | It may be an integer or a floating point number. When the timer |
| 637 | becomes ripe, the action is to call FUNCTION with arguments ARGS. |
| 638 | |
| 639 | REPEAT gives the interval for repeating the timer (measured in |
| 640 | seconds). It may be an integer or a floating point number. nil or 0 |
| 641 | means don't repeat at all--call FUNCTION just once. |
| 642 | |
| 643 | *** with-timeout provides an easy way to do something but give |
| 644 | up if too much time passes. |
| 645 | |
| 646 | (with-timeout (SECONDS TIMEOUT-FORMS...) BODY...) |
| 647 | |
| 648 | This executes BODY, but gives up after SECONDS seconds. |
| 649 | If it gives up, it runs the TIMEOUT-FORMS and returns the value |
| 650 | of the last one of them. Normally it returns the value of the last |
| 651 | form in BODY. |
| 652 | |
| 653 | *** You can now arrange to call a function whenever Emacs is idle for |
| 654 | a certain length of time. To do this, call run-with-idle-timer. A |
| 655 | call looks like this: |
| 656 | |
| 657 | (run-with-idle-timer SECS REPEAT FUNCTION ARGS...) |
| 658 | |
| 659 | SECS says how many seconds of idleness should elapse before the timer |
| 660 | runs. It may be an integer or a floating point number. When the |
| 661 | timer becomes ripe, the action is to call FUNCTION with arguments |
| 662 | ARGS. |
| 663 | |
| 664 | Emacs becomes idle whenever it finishes executing a keyboard or mouse |
| 665 | command. It remains idle until it receives another keyboard or mouse |
| 666 | command. |
| 667 | |
| 668 | REPEAT, if non-nil, means this timer should be activated again each |
| 669 | time Emacs becomes idle and remains idle for SECS seconds The timer |
| 670 | does not repeat if Emacs *remains* idle; it runs at most once after |
| 671 | each time Emacs becomes idle. |
| 672 | |
| 673 | If REPEAT is nil, the timer runs just once, the first time Emacs is |
| 674 | idle for SECS seconds. |
| 675 | |
| 676 | *** post-command-idle-hook is now obsolete; you shouldn't use it at |
| 677 | all, because it interferes with the idle timer mechanism. If your |
| 678 | programs use post-command-idle-hook, convert them to use idle timers |
| 679 | instead. |
| 680 | |
| 681 | *** y-or-n-p-with-timeout lets you ask a question but give up if |
| 682 | there is no answer within a certain time. |
| 683 | |
| 684 | (y-or-n-p-with-timeout PROMPT SECONDS DEFAULT-VALUE) |
| 685 | |
| 686 | asks the question PROMPT (just like y-or-n-p). If the user answers |
| 687 | within SECONDS seconds, it returns the answer that the user gave. |
| 688 | Otherwise it gives up after SECONDS seconds, and returns DEFAULT-VALUE. |
| 689 | |
| 690 | ** Minor change to `encode-time': you can now pass more than seven |
| 691 | arguments. If you do that, the first six arguments have the usual |
| 692 | meaning, the last argument is interpreted as the time zone, and the |
| 693 | arguments in between are ignored. |
| 694 | |
| 695 | This means that it works to use the list returned by `decode-time' as |
| 696 | the list of arguments for `encode-time'. |
| 697 | |
| 698 | ** The default value of load-path now includes the directory |
| 699 | /usr/local/share/emacs/VERSION/site-lisp In addition to |
| 700 | /usr/local/share/emacs/site-lisp. You can use this new directory for |
| 701 | site-specific Lisp packages that belong with a particular Emacs |
| 702 | version. |
| 703 | |
| 704 | It is not unusual for a Lisp package that works well in one Emacs |
| 705 | version to cause trouble in another. Sometimes packages need updating |
| 706 | for incompatible changes; sometimes they look at internal data that |
| 707 | has changed; sometimes the package has been installed in Emacs itself |
| 708 | and the installed version should be used. Whatever the reason for the |
| 709 | problem, this new feature makes it easier to solve. |
| 710 | |
| 711 | ** When your program contains a fixed file name (like .completions or |
| 712 | .abbrev.defs), the file name usually needs to be different on operating |
| 713 | systems with limited file name syntax. |
| 714 | |
| 715 | Now you can avoid ad-hoc conditionals by using the function |
| 716 | convert-standard-filename to convert the file name to a proper form |
| 717 | for each operating system. Here is an example of use, from the file |
| 718 | completions.el: |
| 719 | |
| 720 | (defvar save-completions-file-name |
| 721 | (convert-standard-filename "~/.completions") |
| 722 | "*The filename to save completions to.") |
| 723 | |
| 724 | This sets the variable save-completions-file-name to a value that |
| 725 | depends on the operating system, because the definition of |
| 726 | convert-standard-filename depends on the operating system. On |
| 727 | Unix-like systems, it returns the specified file name unchanged. On |
| 728 | MS-DOS, it adapts the name to fit the limitations of that system. |
| 729 | |
| 730 | ** The interactive spec N now returns the numeric prefix argument |
| 731 | rather than the raw prefix argument. (It still reads a number using the |
| 732 | minibuffer if there is no prefix argument at all.) |
| 733 | |
| 734 | ** When a process is deleted, this no longer disconnects the process |
| 735 | marker from its buffer position. |
| 736 | |
| 737 | ** The variable garbage-collection-messages now controls whether |
| 738 | Emacs displays a message at the beginning and end of garbage collection. |
| 739 | The default is nil, meaning there are no messages. |
| 740 | |
| 741 | ** The variable debug-ignored-errors specifies certain kinds of errors |
| 742 | that should not enter the debugger. Its value is a list of error |
| 743 | condition symbols and/or regular expressions. If the error has any |
| 744 | of the condition symbols listed, or if any of the regular expressions |
| 745 | matches the error message, then that error does not enter the debugger, |
| 746 | regardless of the value of debug-on-error. |
| 747 | |
| 748 | This variable is initialized to match certain common but uninteresting |
| 749 | errors that happen often during editing. |
| 750 | |
| 751 | ** The new function error-message-string converts an error datum |
| 752 | into its error message. The error datum is what condition-case |
| 753 | puts into the variable, to describe the error that happened. |
| 754 | |
| 755 | ** Anything that changes which buffer appears in a given window |
| 756 | now runs the window-scroll-functions for that window. |
| 757 | |
| 758 | ** The new function get-buffer-window-list returns a list of windows displaying |
| 759 | a buffer. The function is called with the buffer (a buffer object or a buffer |
| 760 | name) and two optional arguments specifying the minibuffer windows and frames |
| 761 | to search. Therefore this function takes optional args like next-window etc., |
| 762 | and not get-buffer-window. |
| 763 | |
| 764 | ** buffer-substring now runs the hook buffer-access-fontify-functions, |
| 765 | calling each function with two arguments--the range of the buffer |
| 766 | being accessed. buffer-substring-no-properties does not call them. |
| 767 | |
| 768 | If you use this feature, you should set the variable |
| 769 | buffer-access-fontified-property to a non-nil symbol, which is a |
| 770 | property name. Then, if all the characters in the buffer range have a |
| 771 | non-nil value for that property, the buffer-access-fontify-functions |
| 772 | are not called. When called, these functions should put a non-nil |
| 773 | property on the text that they fontify, so that they won't get called |
| 774 | over and over for the same text. |
| 775 | |
| 776 | ** Changes in lisp-mnt.el |
| 777 | |
| 778 | *** The lisp-mnt package can now recognize file headers that are written |
| 779 | in the formats used by the `what' command and the RCS `ident' command: |
| 780 | |
| 781 | ;; @(#) HEADER: text |
| 782 | ;; $HEADER: text $ |
| 783 | |
| 784 | in addition to the normal |
| 785 | |
| 786 | ;; HEADER: text |
| 787 | |
| 788 | *** The commands lm-verify and lm-synopsis are now interactive. lm-verify |
| 789 | checks that the library file has proper sections and headers, and |
| 790 | lm-synopsis extracts first line "synopsis'"information. |
| 791 | |
| 792 | |
| 793 | \f |
| 794 | * Editing Changes in Emacs 19.30. |
| 795 | |
| 796 | ** Be sure to recompile your byte-compiled Emacs Lisp files |
| 797 | if you last compiled them with Emacs 19.28 or earlier. |
| 798 | You can use M-x byte-force-recompile to recompile all the .elc files |
| 799 | in a specified directory. |
| 800 | |
| 801 | ** Emacs now provides multiple-frame support on Windows NT |
| 802 | and Windows 95. |
| 803 | |
| 804 | ** M-x column-number-mode toggles a minor mode which displays |
| 805 | the current column number in the mode line. |
| 806 | |
| 807 | ** Line Number mode is now enabled by default. |
| 808 | |
| 809 | ** M-x what-line now displays the line number in the accessible |
| 810 | portion of the buffer as well as the line number in the full buffer, |
| 811 | when narrowing is in effect. |
| 812 | |
| 813 | ** If you type a M-x command that has an equivalent key binding, |
| 814 | the equivalent is shown in the minibuffer before the command executes. |
| 815 | This feature is enabled by default for the sake of beginning users. |
| 816 | You can turn the feature off by setting suggest-key-bindings to nil. |
| 817 | |
| 818 | ** The menu bar is now visible on text-only terminals. To choose a |
| 819 | command from the menu bar when you have no mouse, type M-` |
| 820 | (Meta-Backquote) or F10. To turn off menu bar display, |
| 821 | do (menu-bar-mode -1). |
| 822 | |
| 823 | ** Whenever you invoke a minibuffer, it appears in the minibuffer |
| 824 | window that the current frame uses. |
| 825 | |
| 826 | Emacs can only use one minibuffer window at a time. If you activate |
| 827 | the minibuffer while a minibuffer window is active in some other |
| 828 | frame, the outer minibuffer window disappears while the inner one is |
| 829 | active. |
| 830 | |
| 831 | ** Echo area messages always appear in the minibuffer window that the |
| 832 | current frame uses. If a minibuffer is active in some other frame, |
| 833 | the echo area message does not hide it even temporarily. |
| 834 | |
| 835 | ** The minibuffer now has a menu-bar menu. You can use it to exit or |
| 836 | abort the minibuffer, or to ask for completion. |
| 837 | |
| 838 | ** Dead-key and composite character processing is done in the standard |
| 839 | X11R6 manner (through the default "input method" using the |
| 840 | /usr/lib/X11/locale/*/Compose databases of key combinations). I.e. if |
| 841 | it works in xterm, it should also work in emacs now. |
| 842 | |
| 843 | ** Mouse changes |
| 844 | |
| 845 | *** You can now use the mouse when running Emacs in an xterm. |
| 846 | Use M-x xterm-mouse-mode to let emacs take control over the mouse. |
| 847 | |
| 848 | *** C-mouse-1 now once again provides a menu of buffers to select. |
| 849 | S-mouse-1 is now the way to select a default font for the frame. |
| 850 | |
| 851 | *** There is a new mouse-scroll-min-lines variable to control the |
| 852 | minimum number of lines scrolled by dragging the mouse outside a |
| 853 | window's edge. |
| 854 | |
| 855 | *** Dragging mouse-1 on a vertical line that separates windows |
| 856 | now moves the line, thus changing the widths of the two windows. |
| 857 | (This feature is available only if you don't have vertical scroll bars. |
| 858 | If you do use them, a scroll bar separates two side-by-side windows.) |
| 859 | |
| 860 | *** Double-click mouse-1 on a character with "symbol" syntax (such as |
| 861 | underscore, in C mode) selects the entire symbol surrounding that |
| 862 | character. (Double-click mouse-1 on a letter selects a whole word.) |
| 863 | |
| 864 | ** When incremental search wraps around to the beginning (or end) of |
| 865 | the buffer, if you keep on searching until you go past the original |
| 866 | starting point of the search, the echo area changes from "Wrapped" to |
| 867 | "Overwrapped". That tells you that you are revisiting matches that |
| 868 | you have already seen. |
| 869 | |
| 870 | ** Filling changes. |
| 871 | |
| 872 | *** If the variable colon-double-space is non-nil, the explicit fill |
| 873 | commands put two spaces after a colon. |
| 874 | |
| 875 | *** Auto-Fill mode now supports Adaptive Fill mode just as the |
| 876 | explicit fill commands do. The variable adaptive-fill-regexp |
| 877 | specifies a regular expression to match text at the beginning of |
| 878 | a line that should be the fill prefix. |
| 879 | |
| 880 | *** Adaptive Fill mode can take a fill prefix from the first line of a |
| 881 | paragraph, *provided* that line is not a paragraph-starter line. |
| 882 | |
| 883 | Paragraph-starter lines are indented lines that start a new |
| 884 | paragraph because they are indented. This indentation shouldn't |
| 885 | be copied to additional lines. |
| 886 | |
| 887 | Whether indented lines are paragraph lines depends on the value of the |
| 888 | variable paragraph-start. Some major modes set this; you can set it |
| 889 | by hand or in mode hooks as well. For editing text in which paragraph |
| 890 | first lines are not indented, and which contains paragraphs in which |
| 891 | all lines are indented, you should use Indented Text mode or arrange |
| 892 | for paragraph-start not to match these lines. |
| 893 | |
| 894 | *** You can specify more complex ways of choosing a fill prefix |
| 895 | automatically by setting `adaptive-fill-function'. This function |
| 896 | is called with point after the left margin of a line, and it should |
| 897 | return the appropriate fill prefix based on that line. |
| 898 | If it returns nil, that means it sees no fill prefix in that line. |
| 899 | |
| 900 | ** Gnus changes. |
| 901 | |
| 902 | Gnus, the Emacs news reader, has been rewritten and expanded. Most |
| 903 | things that worked with the old version should still work with the new |
| 904 | version. Code that relies heavily on Gnus internals is likely to |
| 905 | fail, though. |
| 906 | |
| 907 | *** Incompatibilities with the old GNUS. |
| 908 | |
| 909 | **** All interactive commands have kept their names, but many internal |
| 910 | functions have changed names. |
| 911 | |
| 912 | **** The summary mode gnus-uu commands have been moved from the `C-c |
| 913 | C-v' keymap to the `X' keymap. |
| 914 | |
| 915 | **** There can now be several summary buffers active at once. |
| 916 | Variables that are relevant to each summary buffer are buffer-local to |
| 917 | that buffer. |
| 918 | |
| 919 | **** Old hilit code doesn't work at all. Gnus performs its own |
| 920 | highlighting based not only on what's visible in the buffer, but on |
| 921 | other data structures. |
| 922 | |
| 923 | **** Old packages like `expire-kill' will no longer work. |
| 924 | |
| 925 | **** `C-c C-l' in the group buffer no longer switches to a different |
| 926 | buffer, but instead lists killed groups in the group buffer. |
| 927 | |
| 928 | *** New features. |
| 929 | |
| 930 | **** The look of all buffers can be changed by setting format-like |
| 931 | variables. |
| 932 | |
| 933 | **** Local spool and several NNTP servers can be used at once. |
| 934 | |
| 935 | **** Groups can be combined into virtual groups. |
| 936 | |
| 937 | **** Different mail formats can be read much the same way as one would |
| 938 | read newsgroups. All the mail backends implement mail expiry schemes. |
| 939 | |
| 940 | **** Gnus can use various strategies for gathering threads that have |
| 941 | lost their roots (thereby gathering loose sub-threads into one thread) |
| 942 | or it can go back and retrieve enough headers to build a complete |
| 943 | thread. |
| 944 | |
| 945 | **** Killed groups can be read. |
| 946 | |
| 947 | **** Gnus can do partial group updates - you do not have to retrieve |
| 948 | the entire active file just to check for new articles in a few groups. |
| 949 | |
| 950 | **** Gnus implements a sliding scale of subscribedness to groups. |
| 951 | |
| 952 | **** You can score articles according to any number of criteria. You |
| 953 | can get Gnus to score articles for you using adaptive scoring. |
| 954 | |
| 955 | **** Gnus maintains a dribble buffer that is auto-saved the normal |
| 956 | Emacs manner, so it should be difficult to lose much data on what you |
| 957 | have read if your machine should go down. |
| 958 | |
| 959 | **** Gnus now has its own startup file (`.gnus.el') to avoid |
| 960 | cluttering up the `.emacs' file. |
| 961 | |
| 962 | **** You can set the process mark on both groups and articles and |
| 963 | perform operations on all the marked items. |
| 964 | |
| 965 | **** You can grep through a subset of groups and create a group from |
| 966 | the results. |
| 967 | |
| 968 | **** You can list subsets of groups using matches on group names or |
| 969 | group descriptions. |
| 970 | |
| 971 | **** You can browse foreign servers and subscribe to groups from those |
| 972 | servers. |
| 973 | |
| 974 | **** Gnus can pre-fetch articles asynchronously on a second connection |
| 975 | to the servers. |
| 976 | |
| 977 | **** You can cache articles locally. |
| 978 | |
| 979 | **** Gnus can fetch FAQs to and descriptions of groups. |
| 980 | |
| 981 | **** Digests (and other files) can be used as the basis for groups. |
| 982 | |
| 983 | **** Articles can be highlighted and customized. |
| 984 | |
| 985 | ** Changes to Version Control (VC) |
| 986 | |
| 987 | *** General changes (all backends). |
| 988 | |
| 989 | VC directory listings (C-x v d) are now kept up to date when you do a |
| 990 | vc-next-action (C-x v v) on the marked files. The `g' command updates |
| 991 | the buffer properly. `=' in a VC dired buffer produces a version |
| 992 | control diff, not an ordinary diff. |
| 993 | |
| 994 | *** CVS changes. |
| 995 | |
| 996 | Under CVS, you no longer need to type C-x C-q before you can edit a |
| 997 | file. VC doesn't write-protect unmodified buffers anymore; you can |
| 998 | freely change them at any time. The mode line keeps track of the |
| 999 | file status. |
| 1000 | |
| 1001 | If you do want unmodified files to be write-protected, set your |
| 1002 | CVSREAD environment variable. VC sees this and behaves accordingly; |
| 1003 | that will give you the behavior of Emacs 19.29, similar to that under |
| 1004 | RCS and SCCS. In this mode, if the variable vc-mistrust-permissions |
| 1005 | is nil, VC learns the modification state from the file permissions. |
| 1006 | When setting CVSREAD for the first time, you should check out the |
| 1007 | whole module anew, so that the file permissions are set correctly. |
| 1008 | |
| 1009 | VC also works with remote repositories now. When you visit a file, it |
| 1010 | doesn't run "cvs status" anymore, so there shouldn't be any long delays. |
| 1011 | |
| 1012 | Directory listings under VC/CVS have been enhanced. Type C-x v d, and |
| 1013 | you get a list of all files in or below the current directory that are |
| 1014 | not up-to-date. The actual status (modified, merge, conflict, ...) is |
| 1015 | displayed for each file. If you give a prefix argument (C-u C-x v d), |
| 1016 | up-to-date files are also listed. You can mark any number of files, |
| 1017 | and execute the next logical version control command on them (C-x v v). |
| 1018 | |
| 1019 | *** Starting a new branch. |
| 1020 | |
| 1021 | If you try to lock a version that is not the latest on its branch, |
| 1022 | VC asks for confirmation in the minibuffer. If you say no, it offers |
| 1023 | to lock the latest version instead. |
| 1024 | |
| 1025 | *** RCS non-strict locking. |
| 1026 | |
| 1027 | VC can now handle RCS non-strict locking, too. In this mode, working |
| 1028 | files are always writable and you needn't lock the file before making |
| 1029 | changes, similar to the default mode under CVS. To enable non-strict |
| 1030 | locking for a file, use the "rcs -U" command. |
| 1031 | |
| 1032 | *** Sharing RCS master files. |
| 1033 | |
| 1034 | If you share RCS subdirs with other users (through symbolic links), |
| 1035 | and you always want to work on the latest version, set |
| 1036 | vc-consult-headers to nil and vc-mistrust-permissions to `t'. |
| 1037 | Then you see the state of the *latest* version on the mode line, not |
| 1038 | that of your working file. When you do a check out, VC overwrites |
| 1039 | your working file with the latest version from the master. |
| 1040 | |
| 1041 | *** RCS customization. |
| 1042 | |
| 1043 | There is a new variable vc-consult-headers. If it is t (the default), |
| 1044 | VC searches for RCS headers in working files (like `$Id$') and |
| 1045 | determines the state of the file from them, not from the master file. |
| 1046 | This is fast and more reliable when you use branches. (The variable |
| 1047 | was already present in Emacs 19.29, but didn't get mentioned in the |
| 1048 | NEWS.) |
| 1049 | |
| 1050 | ** Calendar changes. |
| 1051 | |
| 1052 | *** New calendars supported: Chinese, Coptic, Ethiopic |
| 1053 | |
| 1054 | Here are the commands for converting to and from these calendars: |
| 1055 | |
| 1056 | gC: calendar-goto-chinese-date |
| 1057 | gk: calendar-goto-coptic-date |
| 1058 | ge: calendar-goto-ethiopic-date |
| 1059 | |
| 1060 | pC: calendar-print-chinese-date |
| 1061 | pk: calendar-print-coptic-date |
| 1062 | pe: calendar-print-ethiopic-date |
| 1063 | |
| 1064 | *** Printed calendars |
| 1065 | |
| 1066 | Calendar mode now has commands to produce fancy printed calendars via |
| 1067 | LaTeX. You can ask for a calendar for one or more days, weeks, months |
| 1068 | or years. The commands all start with `t'; see the manual for a list |
| 1069 | of them. |
| 1070 | |
| 1071 | *** New sexp diary entry type |
| 1072 | |
| 1073 | Reminders that apply in the days leading up to an event. |
| 1074 | |
| 1075 | ** The CC-mode package now provides the default C and C++ modes. |
| 1076 | See the manual for documentation of its features. |
| 1077 | |
| 1078 | ** The uniquify package chooses buffer names differently when you |
| 1079 | visit multiple files with the same name (in different directories). |
| 1080 | |
| 1081 | ** RMAIL now always uses the movemail program when it renames an |
| 1082 | inbox file, so that it can interlock properly with the mailer |
| 1083 | no matter where it is delivering mail. |
| 1084 | |
| 1085 | ** tex-start-of-header and tex-end-of-header are now regular expressions, |
| 1086 | not strings. |
| 1087 | |
| 1088 | ** To enable automatic uncompression of compressed files, |
| 1089 | type M-x auto-compression-mode. (This command used to be called |
| 1090 | toggle-auto-compression, but was not documented before.) In Lisp, |
| 1091 | you can do |
| 1092 | |
| 1093 | (auto-compression-mode 1) |
| 1094 | |
| 1095 | to turn the mode on. |
| 1096 | |
| 1097 | ** The new pc-select package emulates the key bindings for cutting and |
| 1098 | pasting, and selection of regions, found in Windows, Motif, and the |
| 1099 | Macintosh. |
| 1100 | |
| 1101 | ** Help buffers now use a special major mode, Help mode. This mode |
| 1102 | normally turns on View mode; it also provides a hook, help-mode-hook, |
| 1103 | which you can use for other customization. |
| 1104 | |
| 1105 | ** Apropos now uses faces for enhanced legibility. It now describes |
| 1106 | symbol properties as well as their function definitions and variable |
| 1107 | values. You can use Mouse-2 or RET to get more information about a |
| 1108 | function definition, variable, or property. |
| 1109 | |
| 1110 | ** Font Lock mode |
| 1111 | |
| 1112 | *** Supports Scheme, TCL and Help modes |
| 1113 | |
| 1114 | For example, to automatically turn on Font Lock mode in the *Help* |
| 1115 | buffer, put: |
| 1116 | |
| 1117 | (add-hook 'help-mode-hook 'turn-on-font-lock) |
| 1118 | |
| 1119 | in your ~/.emacs. |
| 1120 | |
| 1121 | *** Enhanced fontification |
| 1122 | |
| 1123 | The structure of font-lock-keywords is extended to allow "anchored" keywords. |
| 1124 | Typically, a keyword item of font-lock-keywords comprises a regexp to search |
| 1125 | for and information to specify how the regexp should be highlighted. However, |
| 1126 | the highlighting information is extended so that it can be another keyword |
| 1127 | item. This keyword item, its regexp and highlighting information, is processed |
| 1128 | before resuming with the keyword item of which it is part. |
| 1129 | |
| 1130 | For example, a typical keyword item might be: |
| 1131 | |
| 1132 | ("\\<anchor\\>" (0 anchor-face)) |
| 1133 | |
| 1134 | which fontifies each occurrence of the discrete word "anchor" in the value of |
| 1135 | the variable anchor-face. However, the highlighting information can be used to |
| 1136 | fontify text that is anchored to the word "anchor". For example: |
| 1137 | |
| 1138 | ("\\<anchor\\>" (0 anchor-face) ("\\=[ ,]*\\(item\\)" nil nil (1 item-face))) |
| 1139 | |
| 1140 | which fontifies each occurrence of "anchor" as above, but for each occurrence |
| 1141 | of "anchor", each occurrence of "item", in any following comma separated list, |
| 1142 | is fontified in the value of the variable item-face. Thus the "item" text is |
| 1143 | anchored to the "anchor" text. See the variable documentation for further |
| 1144 | information. |
| 1145 | |
| 1146 | This feature is used to extend the level and quality of fontification in a |
| 1147 | number of modes. For example, C/C++ modes now have level 3 decoration that |
| 1148 | includes the fontification of variable and function names in declaration lists. |
| 1149 | In this instance, the "anchor" described in the above example is a type or |
| 1150 | class name, and an "item" is a variable or function name. |
| 1151 | |
| 1152 | *** Fontification levels |
| 1153 | |
| 1154 | The variables font-lock-maximum-decoration and font-lock-maximum-size are |
| 1155 | extended to specify levels and sizes for specific modes. The variable |
| 1156 | font-lock-maximum-decoration specifies the preferred level of fontification for |
| 1157 | modes that provide multiple levels (typically from "subdued" to "gaudy"). The |
| 1158 | variable font-lock-maximum-size specifies the buffer size for which buffer |
| 1159 | fontification is suppressed when Font Lock mode is turned on (typically because |
| 1160 | it would take too long). |
| 1161 | |
| 1162 | These variables can now specify values for individual modes, by supplying |
| 1163 | lists of mode names and values. For example, to use the above mentioned level |
| 1164 | 3 decoration for buffers in C/C++ modes, and default decoration otherwise, put: |
| 1165 | |
| 1166 | (setq font-lock-maximum-decoration '((c-mode . 3) (c++-mode . 3))) |
| 1167 | |
| 1168 | in your ~/.emacs. Maximum buffer size values for individual modes are |
| 1169 | specified in the same way with the variable font-lock-maximum-size. |
| 1170 | |
| 1171 | *** Font Lock configuration |
| 1172 | |
| 1173 | The mechanism to provide default settings for Font Lock mode are the variables |
| 1174 | font-lock-defaults and font-lock-maximum-decoration. Typically, you should |
| 1175 | only need to change the value of font-lock-maximum-decoration. However, to |
| 1176 | support Font Lock mode for buffers in modes that currently do not support Font |
| 1177 | Lock mode, you should set a buffer local value of font-lock-defaults for that |
| 1178 | mode, typically via its mode hook. |
| 1179 | |
| 1180 | These variables are used by Font Lock mode to set the values of the variables |
| 1181 | font-lock-keywords, font-lock-keywords-only, font-lock-syntax-table, |
| 1182 | font-lock-beginning-of-syntax-function and font-lock-keywords-case-fold-search. |
| 1183 | |
| 1184 | You need not set these variables directly, and should not set them yourself |
| 1185 | since the underlining mechanism may change in future. |
| 1186 | |
| 1187 | ** Archive mode is now the default mode for various sorts of |
| 1188 | archive files (files whose names end with .arc, .lzh, .zip, and .zoo). |
| 1189 | |
| 1190 | ** You can automatically update the years in copyright notice by |
| 1191 | means of (add-hook 'write-file-hooks 'copyright-update). |
| 1192 | Optionally it can update the GPL version as well. |
| 1193 | |
| 1194 | ** Scripts of various languages (Shell, AWK, Perl, makefiles ...) can |
| 1195 | be automatically provided with a magic number and be made executable |
| 1196 | by their respective modes under control of various user variables. |
| 1197 | The mode must call (executable-set-magic "perl") or |
| 1198 | (executable-set-magic "make" "-f"). The latter for example has no |
| 1199 | effect on [Mm]akefile. |
| 1200 | |
| 1201 | ** Shell script mode now supports over 15 different shells. The new |
| 1202 | command C-c ! executes the region, and optionally beginning of script |
| 1203 | as well, by passing them to the shell. |
| 1204 | |
| 1205 | Cases such as `sh' being a `bash' are now accounted for. |
| 1206 | Fontification now also does variables, the magic number and all |
| 1207 | builtin commands. Shell script mode no longer mingles `tab-width' and |
| 1208 | indentation style. The variable `sh-tab-width' has been renamed to |
| 1209 | `sh-indentation'. Empty lines are now indented like previous |
| 1210 | non-empty line, rather than just previous line. |
| 1211 | |
| 1212 | The annoying $ variable prompting has been eliminated. Instead, shell |
| 1213 | script mode uses `comint-dynamic-completion' for commands, variables |
| 1214 | and filenames. |
| 1215 | |
| 1216 | ** Two-column mode now automatically scrolls both buffers together, |
| 1217 | which makes it possible to eliminate the special scrolling commands |
| 1218 | that used to do so. |
| 1219 | |
| 1220 | The commands that operate in two-column mode are no longer bound to |
| 1221 | keys outside that mode. f2 o will now position at the same point in |
| 1222 | associated buffer. |
| 1223 | |
| 1224 | the new command f2 RET inserts a newline in both buffers, at point and |
| 1225 | at the corresponding position in the associated buffer. |
| 1226 | |
| 1227 | ** Skeleton commands now work smoothly as abbrev definitions. The |
| 1228 | element < no longer exists, ' is a new element. |
| 1229 | |
| 1230 | ** The autoinsert insert facility for prefilling empty files as soon |
| 1231 | as they are found has been extended to accommodate skeletons or calling |
| 1232 | functions. See the function auto-insert. |
| 1233 | |
| 1234 | ** TPU-edt Changes |
| 1235 | |
| 1236 | Loading tpu-edt no longer turns on tpu-edt mode. In fact, it is no |
| 1237 | longer necessary to explicitly load tpu-edt. All you need to do to |
| 1238 | turn on tpu-edt is run the tpu-edt function. Here's how to run |
| 1239 | tpu-edt instead of loading the file: |
| 1240 | |
| 1241 | Running Emacs: Type emacs -f tpu-edt |
| 1242 | not emacs -l tpu-edt |
| 1243 | |
| 1244 | Within Emacs: Type M-x tpu-edt <ret> |
| 1245 | not M-x load-library <ret> tpu-edt <ret> |
| 1246 | |
| 1247 | In .emacs: Use (tpu-edt) |
| 1248 | not (load "tpu-edt") |
| 1249 | |
| 1250 | The default name of the tpu-edt X key definition file has changed from |
| 1251 | ~/.tpu-gnu-keys to ~/.tpu-keys. If you don't rename the file yourself, |
| 1252 | tpu-edt will offer to rename it the first time you invoke it under |
| 1253 | x-windows. |
| 1254 | |
| 1255 | ** MS-DOS Enhancements: |
| 1256 | |
| 1257 | *** Better mouse control by adding the following functions [in dosfns.c] |
| 1258 | msdos-mouse-enable, msdos-mouse-disable, msdos-mouse-init. |
| 1259 | |
| 1260 | *** If another foreground/background color than the default is setup in |
| 1261 | your ~/_emacs, then the screen briefly flickers with the default |
| 1262 | colors before changing to the colors you have specified. To avoid |
| 1263 | this, the EMACSCOLORS environment variable exists. It shall be |
| 1264 | defined as a string with the following elements: |
| 1265 | |
| 1266 | set EMACSCOLORS=fb;fb |
| 1267 | |
| 1268 | The first set of "fb" defines the initial foreground and background |
| 1269 | colors using standard dos color numbers (0=black,.., 7=white). |
| 1270 | If specified, the second set of "fb" defines the colors which are |
| 1271 | restored when you leave emacs. |
| 1272 | |
| 1273 | *** The new SUSPEND environment variable can now be set as the shell to |
| 1274 | use when suspending emacs. This can be used to override the stupid |
| 1275 | limitation on the environment of sub-shells in MS-DOS (they are just |
| 1276 | large enough to hold the currently defined variables, not leaving |
| 1277 | room for more); to overcome this limitation, add this to autoexec.bat: |
| 1278 | |
| 1279 | set SUSPEND=%COMSPEC% /E:2000 |
| 1280 | |
| 1281 | ** The escape character can now be displayed on X frames. Try |
| 1282 | this: |
| 1283 | (aset standard-display-table 27 (vector 27)) |
| 1284 | after first creating a display table (you can do that by loading |
| 1285 | the disp-table library). |
| 1286 | |
| 1287 | ** The new command-line option --eval specifies an expression to evaluate |
| 1288 | from the command line. |
| 1289 | |
| 1290 | ** etags has now the ability to tag Perl files. They are recognized |
| 1291 | either by the .pm and .pl suffixes or by a first line which starts |
| 1292 | with `#!' and specifies a Perl interpreter. The tagged lines are |
| 1293 | those beginning with the `sub' keyword. |
| 1294 | |
| 1295 | New suffixes recognized are .hpp for C++; .f90 for Fortran; .bib, |
| 1296 | .ltx, .TeX for TeX (.bbl, .dtx removed); .ml for Lisp; .prolog for |
| 1297 | prolog (.pl is now Perl). |
| 1298 | |
| 1299 | ** The files etc/termcap.dat and etc/termcap.ucb have been replaced |
| 1300 | with a new, merged, and much more comprehensive termcap file. The |
| 1301 | new file should include all the special entries from the old one. |
| 1302 | This new file is under active development as part of the ncurses |
| 1303 | project. If you have any questions about this file, or problems with |
| 1304 | an entry in it, email terminfo@ccil.org. |
| 1305 | |
| 1306 | \f |
| 1307 | * Lisp changes in Emacs 19.30. |
| 1308 | |
| 1309 | ** New Data Types |
| 1310 | |
| 1311 | *** There is a new data type called a char-table which is an array |
| 1312 | indexed by a character. Currently this is mostly equivalent to a |
| 1313 | vector of length 256, but in the future, when a wider character set is |
| 1314 | in use, it will be different. To create one, call |
| 1315 | (make-char-table SUBTYPE INITIAL-VALUE) |
| 1316 | |
| 1317 | SUBTYPE is a symbol that identifies the specific use of this |
| 1318 | character table. It can be any of these values: |
| 1319 | |
| 1320 | syntax-table |
| 1321 | display-table |
| 1322 | keyboard-translate-table |
| 1323 | case-table |
| 1324 | |
| 1325 | The function `char-table-subtype' returns the subtype of a char-table. |
| 1326 | You cannot alter the subtype of an existing char-table. |
| 1327 | |
| 1328 | A char-table has an element for each character code. It also has some |
| 1329 | "extra slots". The number of extra slots depends on the subtype and |
| 1330 | their use depends on the subtype. (Each subtype symbol has a |
| 1331 | `char-table-extra-slots' property that says how many extra slots to |
| 1332 | make.) Use (char-table-extra-slot TABLE N) to access extra slot N and |
| 1333 | (set-char-table-extra-slot TABLE N VALUE) to store VALUE in slot N. |
| 1334 | |
| 1335 | A char-table T can have a parent, which should be another char-table |
| 1336 | P. If you look for the value in T for character C, and the table T |
| 1337 | actually holds nil, P's element for character C is used instead. |
| 1338 | The functions `char-table-parent' and `set-char-table-parent' |
| 1339 | let you read or set the parent of a char-table. |
| 1340 | |
| 1341 | To scan all the values in a char-table, do not try to loop through all |
| 1342 | possible character codes. That would work for now, but will not work |
| 1343 | in the future. Instead, call map-char-table. (map-char-table |
| 1344 | FUNCTION TABLE) calls FUNCTION once for each character or character |
| 1345 | set that has a distinct value in TABLE. FUNCTION gets two arguments, |
| 1346 | RANGE and VALUE. RANGE specifies a range of TABLE that has one |
| 1347 | uniform value, and VALUE is the value in TABLE for that range. |
| 1348 | |
| 1349 | Currently, RANGE is always a vector containing a single character |
| 1350 | and it refers to that character alone. In the future, other kinds |
| 1351 | of ranges will occur. You can set the value for a given range |
| 1352 | with (set-char-table-range TABLE RANGE VALUE) and examine the value |
| 1353 | for a range with (char-table-range TABLE RANGE). |
| 1354 | |
| 1355 | *** Syntax tables are now represented as char-tables. |
| 1356 | All syntax tables other than the standard syntax table |
| 1357 | normally have the standard syntax table as their parent. |
| 1358 | Their subtype is `syntax-table'. |
| 1359 | |
| 1360 | *** Display tables are now represented as char-tables. |
| 1361 | Their subtype is `display-table'. |
| 1362 | |
| 1363 | *** Case tables are now represented as char-tables. |
| 1364 | Their subtype is `case-table'. |
| 1365 | |
| 1366 | *** The value of keyboard-translate-table may now be a char-table |
| 1367 | instead of a string. Normally the char-tables used for this purpose |
| 1368 | have the subtype `keyboard-translate-table', but that is not required. |
| 1369 | |
| 1370 | *** A new data type called a bool-vector is a vector of values |
| 1371 | that are either t or nil. To create one, do |
| 1372 | (make-bool-vector LENGTH INITIAL-VALUE) |
| 1373 | |
| 1374 | ** You can now specify, for each marker, how it should relocate when |
| 1375 | text is inserted at the place where the marker points. This is called |
| 1376 | the "insertion type" of the marker. |
| 1377 | |
| 1378 | To set the insertion type, do (set-marker-insertion-type MARKER TYPE). |
| 1379 | If TYPE is t, it means the marker advances when text is inserted. If |
| 1380 | TYPE is nil, it means the marker does not advance. (In Emacs 19.29, |
| 1381 | markers did not advance.) |
| 1382 | |
| 1383 | The function marker-insertion-type reports the insertion type of a |
| 1384 | given marker. The function copy-marker takes a second argument TYPE |
| 1385 | which specifies the insertion type of the new copied marker. |
| 1386 | |
| 1387 | ** When you create an overlay, you can specify the insertion type of |
| 1388 | the beginning and of the end. To do this, you can use two new |
| 1389 | arguments to make-overlay: front-advance and rear-advance. |
| 1390 | |
| 1391 | ** The new function overlays-in returns a list of the overlays that |
| 1392 | overlap a specified range of the buffer. The returned list includes |
| 1393 | empty overlays at the beginning of this range, as well as within the |
| 1394 | range. |
| 1395 | |
| 1396 | ** The new hook window-scroll-functions is run when a window has been |
| 1397 | scrolled. The functions in this list are called just before |
| 1398 | redisplay, after the new window-start has been computed. Each function |
| 1399 | is called with two arguments--the window that has been scrolled, and its |
| 1400 | new window-start position. |
| 1401 | |
| 1402 | This hook is useful for on-the-fly fontification and other features |
| 1403 | that affect how the redisplayed text will look when it is displayed. |
| 1404 | |
| 1405 | The window-end value of the window is not valid when these functions |
| 1406 | are called. The computation of window-end is byproduct of actual |
| 1407 | redisplay of the window contents, which means it has not yet happened |
| 1408 | when the hook is run. Computing window-end specially in advance for |
| 1409 | the sake of these functions would cause a slowdown. |
| 1410 | |
| 1411 | The hook functions can determine where the text on the window will end |
| 1412 | by calling vertical-motion starting with the window-start position. |
| 1413 | |
| 1414 | ** The new hook redisplay-end-trigger-functions is run whenever |
| 1415 | redisplay in window uses text that extends past a specified end |
| 1416 | trigger position. You set the end trigger position with the function |
| 1417 | set-window-redisplay-end-trigger. The functions are called with two |
| 1418 | arguments: the window, and the end trigger position. Storing nil for |
| 1419 | the end trigger position turns off the feature, and the trigger value |
| 1420 | is automatically reset to nil just after the hook is run. |
| 1421 | |
| 1422 | You can use the function window-redisplay-end-trigger to read a |
| 1423 | window's current end trigger value. |
| 1424 | |
| 1425 | ** The new function insert-file-contents-literally inserts the |
| 1426 | contents of a file without any character set translation or decoding. |
| 1427 | |
| 1428 | ** The new function safe-length computes the length of a list. |
| 1429 | It never gets an error--it treats any non-list like nil. |
| 1430 | If given a circular list, it returns an upper bound for the number |
| 1431 | of elements before the circularity. |
| 1432 | |
| 1433 | ** replace-match now takes a fifth argument, SUBEXP. If SUBEXP is |
| 1434 | non-nil, that says to replace just subexpression number SUBEXP of the |
| 1435 | regexp that was matched, not the entire match. For example, after |
| 1436 | matching `foo \(ba*r\)' calling replace-match with 1 as SUBEXP means |
| 1437 | to replace just the text that matched `\(ba*r\)'. |
| 1438 | |
| 1439 | ** The new keymap special-event-map defines bindings for certain |
| 1440 | events that should be handled at a very low level--as soon as they |
| 1441 | are read. The read-event function processes these events itself, |
| 1442 | and never returns them. |
| 1443 | |
| 1444 | Events that are handled in this way do not echo, they are never |
| 1445 | grouped into key sequences, and they never appear in the value of |
| 1446 | last-command-event or (this-command-keys). They do not discard a |
| 1447 | numeric argument, they cannot be unread with unread-command-events, |
| 1448 | they may not appear in a keyboard macro, and they are not recorded |
| 1449 | in a keyboard macro while you are defining one. |
| 1450 | |
| 1451 | These events do, however, appear in last-input-event immediately after |
| 1452 | they are read, and this is the way for the event's definition to find |
| 1453 | the actual event. |
| 1454 | |
| 1455 | The events types iconify-frame, make-frame-visible and delete-frame |
| 1456 | are normally handled in this way. |
| 1457 | |
| 1458 | ** encode-time now supports simple date arithmetic by means of |
| 1459 | out-of-range values for its SEC, MINUTE, HOUR, DAY, and MONTH |
| 1460 | arguments; for example, day 0 means the day preceding the given month. |
| 1461 | Also, the ZONE argument can now be a TZ-style string. |
| 1462 | |
| 1463 | ** command-execute and call-interactively now accept an optional third |
| 1464 | argument KEYS. If specified and non-nil, this specifies the key |
| 1465 | sequence containing the events that were used to invoke the command. |
| 1466 | |
| 1467 | ** The environment variable NAME, if set, now specifies the value of |
| 1468 | (user-full-name), when Emacs starts up. |
| 1469 | |
| 1470 | |
| 1471 | \f |
| 1472 | * User Editing Changes in Emacs 19.29 |
| 1473 | |
| 1474 | ** If you run out of memory. |
| 1475 | |
| 1476 | If you get the error message "Virtual memory exhausted", type C-x s. |
| 1477 | That way of saving files has the least additional memory needs. Emacs |
| 1478 | 19.29 keeps a reserve of memory which it makes available when this |
| 1479 | error happens; that is to ensure that C-x s can complete its work. |
| 1480 | |
| 1481 | Once you have saved your data, you can exit and restart Emacs, or use |
| 1482 | M-x kill-some-buffers to free up space. If you kill buffers |
| 1483 | containing a substantial amount of text, you can go on editing. |
| 1484 | |
| 1485 | Do not use M-x buffer-menu to save or kill buffers when you are out of |
| 1486 | memory, because that needs a fair amount memory itself and you may not |
| 1487 | have enough to get it started. |
| 1488 | |
| 1489 | ** The format of compiled files has changed incompatibly. |
| 1490 | |
| 1491 | Byte-compiled files made with Emacs 19.29 normally use a new format |
| 1492 | that will not work in older Emacs versions. You can compile files |
| 1493 | in the old format if you wish; see "Changes in compilation," below. |
| 1494 | |
| 1495 | ** Emacs 19.29 supports the DEC Alpha. |
| 1496 | |
| 1497 | ** Emacs runs on Windows NT. |
| 1498 | |
| 1499 | This port does not yet support windowing features. It works like a |
| 1500 | text-only terminal, but it does support a mouse. |
| 1501 | |
| 1502 | In general, support for non-GNU-like operating systems is not a high |
| 1503 | priority for the GNU project. We merged in the support for Windows NT |
| 1504 | because that system is expected to be very widely used. |
| 1505 | |
| 1506 | ** Emacs supports Motif widgets. |
| 1507 | |
| 1508 | You can build Emacs with Motif widgets by specifying --with-x-toolkit=motif |
| 1509 | when you run configure. |
| 1510 | |
| 1511 | Motif defines collections of windows called "tab groups", and uses the |
| 1512 | tab key and the cursor keys to move between windows in a tab group. |
| 1513 | Emacs naturally does not support this--it has other uses for the tab |
| 1514 | key and cursor keys. Emacs does not support Motif accelerators either, |
| 1515 | because it uses its normal keymap event binding features. |
| 1516 | |
| 1517 | We give higher priority to operation with a free widget set than to |
| 1518 | operation with a proprietary one. |
| 1519 | |
| 1520 | ** If Emacs or the computer crashes, you can recover all the files you |
| 1521 | were editing from their auto save files by typing M-x recover-session. |
| 1522 | This first shows you a list of recorded interrupted sessions. Move |
| 1523 | point to the one you choose, and type C-c C-c. |
| 1524 | |
| 1525 | Then recover-session asks about each of the files that were being |
| 1526 | edited during that session, asking whether to recover that file. If |
| 1527 | you answer y, it calls recover-file, which works in its normal |
| 1528 | fashion. It shows the dates of the original file and its auto-save |
| 1529 | file and asks once again whether to recover that file. |
| 1530 | |
| 1531 | When recover-session is done, the files you've chosen to recover |
| 1532 | are present in Emacs buffers. You should then save them. |
| 1533 | Only this--saving them--updates the files themselves. |
| 1534 | |
| 1535 | ** Menu bar menus now stay up if you click on the menu bar item and |
| 1536 | release the mouse button within a certain amount of time. This is in |
| 1537 | the X Toolkit version. |
| 1538 | |
| 1539 | ** The menu bar menus have been rearranged and split up to make for a |
| 1540 | better organization. Two new menu bar menus, Tools and Search, |
| 1541 | contain items that were formerly in the Files and Edit menus, as well |
| 1542 | as some that did not exist in the menu bar menus before. |
| 1543 | |
| 1544 | ** Emacs can now display on more than one X display at the same time. |
| 1545 | Use the command make-frame-on-display to create a frame, specifying |
| 1546 | which display to use. |
| 1547 | |
| 1548 | ** M-x talk-connect sets up a multi-user talk connection |
| 1549 | via Emacs. Specify the X display of the person you want to talk to. |
| 1550 | You can talk to any number of people (within reason) by using |
| 1551 | this command repeatedly to specify different people. |
| 1552 | |
| 1553 | Emacs does not make a fuss about security; the people who you talk to |
| 1554 | can use all Emacs features, including visiting and editing files. If |
| 1555 | this frightens you, don't use M-x talk-connect. |
| 1556 | |
| 1557 | ** The range of integer values is now at least 2**28 on all machines. |
| 1558 | This means the maximum size of a buffer is at least 2**27-1, |
| 1559 | or 134,217,727. |
| 1560 | |
| 1561 | ** When you start Emacs, you can now specify option names in |
| 1562 | long GNU form (starting with `--') and you can abbreviate the names. |
| 1563 | |
| 1564 | You can now specify the options in any order. |
| 1565 | The previous requirements about the order of options |
| 1566 | have been eliminated. |
| 1567 | |
| 1568 | The -L or --directory option lets you specify an additional |
| 1569 | directory to search for Lisp libraries (including libraries |
| 1570 | that you specify with the -l or --load options). |
| 1571 | |
| 1572 | ** Incremental search in Transient Mark mode, if the mark is already |
| 1573 | active, now leaves the mark active and does not change its position. |
| 1574 | You can make incremental search deactivate the mark once again with |
| 1575 | this expression. |
| 1576 | |
| 1577 | (add-hook 'isearch-mode-hook 'deactivate-mark) |
| 1578 | |
| 1579 | ** C-delete now deletes a word backwards. This is for compatibility |
| 1580 | with some editors in the PC world. (This key is not available on |
| 1581 | ordinary ASCII terminals, because C-delete is not a distinct character |
| 1582 | on those terminals.) |
| 1583 | |
| 1584 | ** ESC ESC ESC is now a command to escape from various temporary modes |
| 1585 | and states. |
| 1586 | |
| 1587 | ** M-x pc-bindings-mode sets up bindings compatible with many PC editors. |
| 1588 | In particular, Delete and its variants delete forward instead of backward. |
| 1589 | Use Backspace to delete backward. |
| 1590 | |
| 1591 | C-Backspace kills backward a word (as C-Delete normally would). |
| 1592 | M-Backspace does undo. |
| 1593 | Home and End move to beginning and end of line |
| 1594 | C-Home and C-End move to beginning and end of buffer. |
| 1595 | |
| 1596 | ** The key sequence for evaluating a Lisp expression using the minibuffer |
| 1597 | is now ESC :. It used to be ESC ESC, but we moved it to make way for |
| 1598 | the ESC ESC ESC feature, on the grounds that people who evaluate Lisp |
| 1599 | expressions are experienced users and can cope with a change. |
| 1600 | If you prefer the old ESC ESC binding, put in your `~/.emacs': |
| 1601 | |
| 1602 | (global-set-key "\e\e" 'eval-expression) |
| 1603 | |
| 1604 | ** The f1 function key is now equivalent to the help key. This is |
| 1605 | done with key-translation-map; delete the binding for f1 in that map |
| 1606 | if you want to use f1 for something else. |
| 1607 | |
| 1608 | ** Mouse-3, in the simplest case, still sets the region. But now, it |
| 1609 | places the mark where point was, and sets point where you click. |
| 1610 | (It used to set the mark where you click and leave point alone.) |
| 1611 | |
| 1612 | If you position point with Mouse-1, then scroll with the scroll bar |
| 1613 | and use Mouse-3, Mouse-3 uses the position you specified with Mouse-1 |
| 1614 | even if it has scrolled off the screen (and point is no longer there). |
| 1615 | This makes it easier to select a region with the mouse which is bigger |
| 1616 | than a screenful. |
| 1617 | |
| 1618 | Any editing of the buffer, and any cursor motion or scrolling for any |
| 1619 | reason other than the scroll bar, cancels the special state set up by |
| 1620 | Mouse-1--so that a subsequent Mouse-3 click will use the actual value |
| 1621 | of point. |
| 1622 | |
| 1623 | ** C-mouse-3 now pops up a mode-specific menu of commands--normally |
| 1624 | the same ones available in the mode's own menu bar menus. |
| 1625 | |
| 1626 | ** C-mouse-2 now pops up a menu of faces, indentation, justification, |
| 1627 | and certain other text properties. This menu is also available |
| 1628 | through the menu-bar Edit menu. It is meant for use with Enriched |
| 1629 | mode. |
| 1630 | |
| 1631 | *** You can use this menu to change the face of the region. |
| 1632 | You can also set the face of the region with the new M-g command. |
| 1633 | |
| 1634 | *** The menu also includes commands for indenting the region, |
| 1635 | which locally changes the values of left-margin and fill-column that |
| 1636 | are used. |
| 1637 | |
| 1638 | *** All fill functions now indent every line to the left-margin. If |
| 1639 | there is also a fill-prefix, that goes after the margin indentation. |
| 1640 | |
| 1641 | *** Open-line and newline also make sure that the lines they create |
| 1642 | are indented to the left margin. |
| 1643 | |
| 1644 | *** It also allows you to set the "justification" of the region: |
| 1645 | whether it should be centered, flush right, and so forth. The fill |
| 1646 | functions (including auto-fill-mode) will maintain the justification |
| 1647 | and indentation that you request. |
| 1648 | |
| 1649 | *** The new function `list-colors-display' shows you what colors are |
| 1650 | available. This is also accessible from the C-mouse-2 menu. |
| 1651 | |
| 1652 | ** You can now save and load files including their faces and other |
| 1653 | text-properties by using Enriched-mode. Files are saved in an |
| 1654 | extended version of the MIME text/enriched format. You can use the |
| 1655 | menus described above, or M-g and other keyboard commands, to |
| 1656 | alter the formatting information. |
| 1657 | |
| 1658 | ** C-mouse-1 now pops up the menu for changing the frame's default font. |
| 1659 | |
| 1660 | ** You can input Hyper, Super, Meta, and Alt characters, as well as |
| 1661 | non-ASCII control characters, on an ASCII-only terminal. |
| 1662 | To do this, use |
| 1663 | |
| 1664 | C-x @ h -- hyper |
| 1665 | C-x @ s -- super |
| 1666 | C-x @ m -- meta |
| 1667 | C-x @ a -- alt |
| 1668 | C-x @ S -- shift |
| 1669 | C-x @ c -- control |
| 1670 | |
| 1671 | These are not ordinary key sequences; they operate through |
| 1672 | function-key-map, which means they can be used even in the |
| 1673 | middle of an ordinary key sequence. |
| 1674 | |
| 1675 | ** Outline minor mode and Hideif mode now use C-c @ as their prefix |
| 1676 | character. |
| 1677 | |
| 1678 | ** Echo area messages are now logged in the "*Messages*" buffer. The |
| 1679 | size of this buffer is limited to message-log-max lines. |
| 1680 | |
| 1681 | ** RET in various special modes for read-only buffers that contain |
| 1682 | lists of items now selects the item point is on. These modes include |
| 1683 | Dired, Compilation buffers, Buffer-menu, Tar mode, and Occur mode. |
| 1684 | (In Info, RET follows the reference near point; in completion list |
| 1685 | buffers, RET chooses the completion around point.) |
| 1686 | |
| 1687 | ** set-background-color now updates the modeline face in a special |
| 1688 | way. If that face was previously set up to be reverse video, the |
| 1689 | reverse of the default face, then set-background-color updates it so |
| 1690 | that it remains the reverse of the default face. |
| 1691 | |
| 1692 | ** The functions raise-frame and lower-frame are now commands. |
| 1693 | When used interactively, they apply to the selected frame. |
| 1694 | |
| 1695 | ** M-x buffer-menu now displays the buffer list in the selected window. |
| 1696 | Use M-x buffer-menu-other-window to display it in another window. |
| 1697 | |
| 1698 | ** M-w followed by a kill command now *does not* append the text in |
| 1699 | the kill ring. In consequence, M-w followed by C-w works as you would |
| 1700 | expect: it leaves the top of the kill ring matching the region that |
| 1701 | you killed. |
| 1702 | |
| 1703 | ** In Lisp mode, the C-M-x command now executes defvar forms in a |
| 1704 | special way: it unconditionally sets the variable to the specified |
| 1705 | default value, if there is one. Normal execution of defvar does not |
| 1706 | alter the variable if it already has a non-void value. |
| 1707 | |
| 1708 | ** In completion list buffers, the left and right arrow keys run the |
| 1709 | new commands previous-completion and next-completion. They move one |
| 1710 | completion at a time. |
| 1711 | |
| 1712 | ** While doing completion in the minibuffer, the `prior' or `pageup' |
| 1713 | key switches to the completion list window. |
| 1714 | |
| 1715 | ** When you exit the minibuffer with empty contents, the empty string |
| 1716 | is not put in the minibuffer history. |
| 1717 | |
| 1718 | ** The default buffer for insert-buffer is now the "first" buffer |
| 1719 | other than the current one. If you have more than one window, this |
| 1720 | is a buffer visible in another window. (Usually it is the buffer |
| 1721 | that C-M-v would scroll.) |
| 1722 | |
| 1723 | ** The etags program is now capable of recording tags based on regular |
| 1724 | expressions provided on the command line. |
| 1725 | |
| 1726 | This new feature allows easy support for constructs not normally |
| 1727 | handled by etags, such as the macros frequently used in big C/C++ |
| 1728 | projects to define project-specific structures. It also enables the |
| 1729 | use of etags and TAGS files for languages not supported by etags. |
| 1730 | |
| 1731 | The Emacs manual section on Tags contains explanations and examples |
| 1732 | for Emacs's DEFVAR, VHDL, Cobol, PostScript and TCL. |
| 1733 | |
| 1734 | ** Various mode-specific commands that used to be bound to C-c LETTER |
| 1735 | have been moved. |
| 1736 | |
| 1737 | *** In gnus-uu mode, gnus-uu-interactive-scan-directory is now on C-c C-d, |
| 1738 | and gnus-uu-interactive-save-current-file is on C-c C-z. |
| 1739 | |
| 1740 | *** In Scribe mode, scribe-insert-environment is now on C-c C-v, |
| 1741 | scribe-chapter is on C-c C-c, scribe-subsection is on C-c C-s, |
| 1742 | scribe-section is on C-c C-t, scribe-bracket-region-be is on C-c C-e, |
| 1743 | scribe-italicize-word is on C-c C-i, scribe-bold-word is on C-c C-b, |
| 1744 | and scribe-underline-word is on C-c C-u. |
| 1745 | |
| 1746 | *** In Gomoku mode, gomoku-human-takes-back is now on C-c C-b, |
| 1747 | gomoku-human-plays is on C-c C-p, gomoku-human-resigns is on C-c C-r, |
| 1748 | and gomoku-emacs-plays is on C-c C-e. |
| 1749 | |
| 1750 | *** In the Outline mode defined in allout.el, |
| 1751 | outline-rebullet-current-heading is now on C-c *. |
| 1752 | |
| 1753 | ** M-s in Info now searches through the nodes of the Info file, |
| 1754 | just like s. The alias M-s was added so that you can use the same |
| 1755 | command for searches in both Info and Rmail. |
| 1756 | |
| 1757 | ** iso-acc.el now lets you enter inverted-! and inverted-? |
| 1758 | with the sequences ~! and ~?. |
| 1759 | |
| 1760 | ** M-x compare-windows now pushes mark in both windows before |
| 1761 | it starts moving point. |
| 1762 | |
| 1763 | ** There are two new commands in Dired, A (dired-do-search) |
| 1764 | and Q (dired-do-query-replace). These are similar to tags-search and |
| 1765 | tags-query-replace, but instead of searching the list of files that |
| 1766 | appears in a tags table, they search all the files marked in Dired. |
| 1767 | |
| 1768 | ** Changes to dabbrev. |
| 1769 | |
| 1770 | A new function, `dabbrev-completion' (bound to M-C-/), expands the |
| 1771 | unique part of an abbreviation. |
| 1772 | |
| 1773 | Dabbrev now looks for expansions in other buffers, looks for symbols |
| 1774 | instead of words and it works in the minibuffer. |
| 1775 | |
| 1776 | Dabbrev can be customized to work for shell scripts, with variables |
| 1777 | that sometimes have and sometimes haven't a leading "$". See the |
| 1778 | variable 'dabbrev-abbrev-skip-leading-regexp'. |
| 1779 | |
| 1780 | ** In Rmail, the command rmail-input-menu has been eliminated. The |
| 1781 | feature of selecting an Rmail file from a menu is now implemented in |
| 1782 | another way. |
| 1783 | |
| 1784 | ** Bookmarks changes. |
| 1785 | |
| 1786 | *** It now works to set bookmarks in Info nodes. |
| 1787 | |
| 1788 | *** Bookmarks can have annotations; type "C-h m" after doing |
| 1789 | "M-x list-bookmarks", for more information on annotations. |
| 1790 | |
| 1791 | *** The bookmark-jump popup menu function is now `bookmark-menu-jump', for |
| 1792 | those who bind it to a mouse click. |
| 1793 | |
| 1794 | *** The default bookmarks file name is now "~/.emacs.bmk". If you |
| 1795 | already have a bookmarks file, it will be renamed automagically when |
| 1796 | you next load it. |
| 1797 | |
| 1798 | ** New package, ps-print. |
| 1799 | |
| 1800 | The ps-print package generates PostScript printouts of buffers or |
| 1801 | regions, and includes face attributes such as color, underlining, |
| 1802 | boldface and italics in the printed output. |
| 1803 | |
| 1804 | ** New package, msb. |
| 1805 | |
| 1806 | The msb package provides a buffer-menu in the menubar with separate |
| 1807 | menus for different types of buffers. |
| 1808 | |
| 1809 | ** `cpp.el' is a new library that can highlight or hide parts of a C |
| 1810 | file according to C preprocessor conditionals. To try it, run the |
| 1811 | command M-x cpp-highlight-buffer. |
| 1812 | |
| 1813 | ** Changes in CC mode. |
| 1814 | |
| 1815 | *** c-set-offset and related functions and variables can now accept |
| 1816 | variable symbols. Also ++ and -- which mean 2* positive and negative |
| 1817 | c-basic-offset respectively. |
| 1818 | |
| 1819 | *** New variable, c-recognize-knr-p, which controls whether K&R C |
| 1820 | constructs will be recognized. Trying to recognize K&R constructs is a |
| 1821 | time hog so if you're programming strictly in ANSI C, set this |
| 1822 | variable to nil (it should already be nil in c++-mode). |
| 1823 | |
| 1824 | *** New variable, c-hanging-comment-ender-p for controlling |
| 1825 | c-fill-paragraph's behavior. |
| 1826 | |
| 1827 | *** New syntactic symbol: statement-case-open. This is assigned to lines |
| 1828 | containing an open brace just after a case/default label. |
| 1829 | |
| 1830 | *** New variable, c-progress-interval, which controls minibuffer update |
| 1831 | message displays during long re-indentation. This is a new feature |
| 1832 | which prints percentage complete messages at specified intervals. |
| 1833 | |
| 1834 | ** Makefile mode changes. |
| 1835 | |
| 1836 | *** The electric keys are not enabled by default. |
| 1837 | |
| 1838 | *** There is now a mode-specific menu bar menu. |
| 1839 | |
| 1840 | *** The mode supports font-lock, add-log, and imenu. |
| 1841 | |
| 1842 | *** The command M-TAB does completion of target names and variable names. |
| 1843 | |
| 1844 | ** icomplete.el now works more like a minor mode. Use M-x icomplete-mode |
| 1845 | to turn it on and off. |
| 1846 | |
| 1847 | Icomplete now supports an `icomplete-minibuffer-setup-hook', which is |
| 1848 | run on minibuffer setup whenever icompletion will be occurring. This |
| 1849 | hook can be used to customize interoperation of icomplete with other |
| 1850 | minibuffer-specific packages, eg rsz-mini. See the doc string for |
| 1851 | more info. |
| 1852 | |
| 1853 | ** Ediff change. |
| 1854 | |
| 1855 | Use ediff-revision instead of vc-ediff. It also replaces rcs-ediff, |
| 1856 | for those who use that; if you want to use a version control package |
| 1857 | other than vc.el, you must set the variable |
| 1858 | ediff-version-control-package to specify which package. |
| 1859 | |
| 1860 | ** VC now supports branches with RCS. |
| 1861 | |
| 1862 | You can use C-u C-x C-q to select any branch or version by number. |
| 1863 | It reads the version number or branch number with the minibuffer, |
| 1864 | then checks out the file unlocked. |
| 1865 | |
| 1866 | Type C-x C-q again to lock the selected branch or version. |
| 1867 | When you check in changes to that branch or version, there are two |
| 1868 | possibilities: |
| 1869 | |
| 1870 | -- If you've selected a branch, or a version at the tip of a branch, |
| 1871 | then the new version adds to that branch. If you wish to create a |
| 1872 | new branch, use C-u C-x C-q to specify a version number when you check |
| 1873 | in the new version. |
| 1874 | |
| 1875 | -- If you've selected an inner version which is not the latest in its |
| 1876 | branch, then the new version automatically creates a new branch. |
| 1877 | |
| 1878 | ** VC now supports CVS as well as RCS and SCCS. |
| 1879 | |
| 1880 | Since there are no locks in CVS, some things behave slightly |
| 1881 | different when the backend is CVS. When vc-next-action is invoked |
| 1882 | in a directory handled by CVS, it does the following: |
| 1883 | |
| 1884 | If the file is not already registered, this registers it for version |
| 1885 | control. This does a "cvs add", but no "cvs commit". |
| 1886 | If the file is added but not committed, it is committed. |
| 1887 | If the file has not been changed, neither in your working area or |
| 1888 | in the repository, a message is printed and nothing is done. |
| 1889 | If your working file is changed, but the repository file is |
| 1890 | unchanged, this pops up a buffer for entry of a log message; when you |
| 1891 | finish the log message with C-c C-c, that checks in the resulting |
| 1892 | changes along with the log message as change commentary. A writable |
| 1893 | file remains in existence. |
| 1894 | |
| 1895 | If vc-next-action changes the repository file, it asks you |
| 1896 | whether to merge in the changes into your working copy. |
| 1897 | |
| 1898 | vc-directory, when started in a CVS file hierarchy, reports |
| 1899 | all files that are modified (and thus need to be committed). |
| 1900 | (When the backend is RCS or SCCS vc-directory reports all |
| 1901 | locked files). |
| 1902 | |
| 1903 | VC has no support for running the initial "cvs checkout" to get a |
| 1904 | working copy of a module. You can only use VC in a working copy of |
| 1905 | a module. |
| 1906 | |
| 1907 | You can disable the CVS support as follows: |
| 1908 | |
| 1909 | (setq vc-master-templates (delq 'vc-find-cvs-master vc-master-templates)) |
| 1910 | |
| 1911 | or by setting vc-handle-cvs to nil. |
| 1912 | |
| 1913 | This may be desirable if you run a non-standard version of CVS, or |
| 1914 | if CVS was compiled with FORCE_USE_EDITOR or (possibly) |
| 1915 | RELATIVE_REPOS. |
| 1916 | |
| 1917 | ** Comint and shell mode changes: |
| 1918 | |
| 1919 | *** Completion works with file names containing quoted characters. |
| 1920 | |
| 1921 | File names containing special characters (such as " ", "!", etc.) that are |
| 1922 | quoted with a "\" character are recognized during completion. Special |
| 1923 | characters are quoted when they are inserted during completion. |
| 1924 | |
| 1925 | *** You can use M-x comint-truncate-buffer to truncate the buffer. |
| 1926 | |
| 1927 | When this command is run, the buffer is truncated to a maximum number |
| 1928 | of lines, specified by the variable comint-buffer-maximum-size. Just |
| 1929 | like the command comint-strip-ctrl-m, this can be run automatically |
| 1930 | during process output by doing this: |
| 1931 | |
| 1932 | (add-hook 'comint-output-filter-functions |
| 1933 | 'comint-truncate-buffer) |
| 1934 | |
| 1935 | ** Telnet mode buffer name changed. |
| 1936 | |
| 1937 | The buffer name for a Telnet buffer is now *telnet-HOST*, not |
| 1938 | *HOST-telnet*. This is for consistency with other Emacs packages. |
| 1939 | |
| 1940 | ** M-x man (man) is now faster and more robust. On systems where the |
| 1941 | entire man page is indented, the indentation is removed. |
| 1942 | |
| 1943 | The user option names that used to end in -p now end in -flag. The |
| 1944 | new names are: Man-reuse-okay-flag, Man-downcase-section-letters-flag, |
| 1945 | Man-circular-pages-flag. The Man-notify user option has been renamed to |
| 1946 | Man-notify-method and accepts one more value, `pushy', that just |
| 1947 | switches the current buffer to the manpage buffer, without switching |
| 1948 | frames nor changing your windows configuration. |
| 1949 | |
| 1950 | A new user option Man-fontify-manpage-flag disables fontification |
| 1951 | (thus speeding up man) when set to nil. Default is to fontify if a |
| 1952 | window system is used. Two new user options Man-overstrike-face |
| 1953 | (default 'bold) and Man-underline-face (default 'underline) can be set |
| 1954 | to the preferred faces to be used for the words that man overstrikes |
| 1955 | and underlines. Useful for those who like colored man pages. |
| 1956 | |
| 1957 | Two new interactive functions are provided: Man-cleanup-manpage and |
| 1958 | Man-fontify-manpage. Both can be used on a buffer that contains the |
| 1959 | output of a `rsh host man manpage' command, or the output of an |
| 1960 | `nroff -man -Tman manpage' command to make them readable. |
| 1961 | Man-cleanup-manpage is faster, but does not fontify. |
| 1962 | |
| 1963 | ** The new function modify-face makes it easy to specify |
| 1964 | all the attributes of a face, all at once. |
| 1965 | |
| 1966 | ** Faces now support background stippling. |
| 1967 | |
| 1968 | Use the command set-face-stipple to specify the stipple-pattern for a |
| 1969 | face. Use face-stipple to access the specified stipple pattern. The |
| 1970 | existing face functions now handle the stipple pattern when |
| 1971 | appropriate. |
| 1972 | |
| 1973 | If you specify one of the standard gray colors as a face background |
| 1974 | color, and your display doesn't handle gray, Emacs automatically uses |
| 1975 | stipple instead to get the same effect. |
| 1976 | |
| 1977 | ** Changes in Font Lock mode. |
| 1978 | |
| 1979 | *** Fontification |
| 1980 | |
| 1981 | Two new default faces are provided; `font-lock-variable-name-face' and |
| 1982 | `font-lock-reference-face'. The face `font-lock-doc-string-face' has |
| 1983 | been removed since it is the same as the existing |
| 1984 | `font-lock-string-face'. Where appropriate, fontification |
| 1985 | automatically uses these new faces. |
| 1986 | |
| 1987 | Fontification via commands `font-lock-mode' and |
| 1988 | `font-lock-fontify-buffer' is now cleanly interruptible (i.e., with |
| 1989 | C-g). If you interrupt during the fontification process, the buffer |
| 1990 | remains in its previous modified state and all highlighting is removed |
| 1991 | from the buffer. |
| 1992 | |
| 1993 | For C/C++ modes, Font Lock mode is much faster but highlights much |
| 1994 | more. Other modes are faster/more extensive/more discriminatory, or a |
| 1995 | combination of these. |
| 1996 | |
| 1997 | To enable Font Lock mode, add the new function `turn-on-font-lock' in |
| 1998 | one of the following ways: |
| 1999 | |
| 2000 | (add-hook 'c-mode-hook 'turn-on-font-lock) |
| 2001 | |
| 2002 | Or for any visited file with: |
| 2003 | |
| 2004 | (add-hook 'find-file-hooks 'turn-on-font-lock) |
| 2005 | |
| 2006 | *** Supports color and grayscale displays |
| 2007 | |
| 2008 | Font Lock mode supports different ways of highlighting, depending on |
| 2009 | the type of display and background shade. Attributes (face color, |
| 2010 | bold, italic and underline, and display type and background mode) can |
| 2011 | be controlled either from Emacs Lisp or X resources. |
| 2012 | |
| 2013 | See the new variables `font-lock-display-type' and |
| 2014 | `font-lock-face-attributes'. |
| 2015 | |
| 2016 | *** Supports more modes |
| 2017 | |
| 2018 | The following modes are directly supported: |
| 2019 | |
| 2020 | ada-mode, asm-mode, bibtex-mode, c++-c-mode, c++-mode, c-mode, |
| 2021 | change-log-mode, compilation-mode, dired-mode, emacs-lisp-mode, |
| 2022 | fortran-mode, latex-mode, lisp-mode, mail-mode, makefile-mode, |
| 2023 | outline-mode, pascal-mode, perl-mode, plain-tex-mode, rmail-mode, |
| 2024 | rmail-summary-mode, scheme-mode, shell-mode, slitex-mode, tex-mode, |
| 2025 | texinfo-mode. |
| 2026 | |
| 2027 | See the new variables `font-lock-defaults-alist' and |
| 2028 | `font-lock-defaults'. |
| 2029 | |
| 2030 | Some modes support different levels of fontification. You can choose |
| 2031 | to use the minimum or maximum available decoration by changing the |
| 2032 | value of the new variable `font-lock-maximum-decoration'. |
| 2033 | |
| 2034 | Programmers are urged to make available to the community their own |
| 2035 | keywords for modes not yet supported. See font-lock.el for |
| 2036 | information about efficiency. |
| 2037 | |
| 2038 | *** fast-lock |
| 2039 | |
| 2040 | The fast-lock package speeds up Font Lock mode by saving font choices |
| 2041 | in associated cache files. When you visit a file with Font Lock mode |
| 2042 | and Fast Lock mode turned on for the first time, the file's buffer is |
| 2043 | fontified as normal. When certain events occur (such as exiting |
| 2044 | Emacs), Fast Lock saves the highlighting in a cache file. When you |
| 2045 | subsequently visit this file, its cache is used to restore the |
| 2046 | highlighting. |
| 2047 | |
| 2048 | To use this package, put in your `~/.emacs': |
| 2049 | |
| 2050 | (add-hook 'font-lock-mode-hook 'turn-on-fast-lock) |
| 2051 | |
| 2052 | To control the use of caches, see the documentation for `fast-lock-mode'. |
| 2053 | |
| 2054 | ** You can tell pop-to-buffer to display certain buffers in the selected |
| 2055 | window rather than finding some other window to display them in. |
| 2056 | There are two variables you can use to specify these buffers. |
| 2057 | |
| 2058 | same-window-buffer-names holds a list of buffer names; if a buffer's |
| 2059 | name appears in this list, pop-to-buffer puts it in the selected window. |
| 2060 | |
| 2061 | same-window-regexps holds a list of regexps--if any one of them |
| 2062 | matches a buffer's name, then pop-to-buffer puts that buffer in the |
| 2063 | selected window. |
| 2064 | |
| 2065 | The default values of these variables are not nil: they list various |
| 2066 | buffers that normally appear, when you as for them, in the selected |
| 2067 | window. These include shell buffers, mail buffers, telnet buffers, |
| 2068 | and others. By removing elements from these variables, you can ask |
| 2069 | Emacs to display those buffers in separate windows. |
| 2070 | |
| 2071 | ** The special-display-buffer-names and special-display-regexps lists |
| 2072 | have been generalized. An element may now be a list. The car of the list |
| 2073 | is the buffer name or regular expression for matching buffer names. |
| 2074 | |
| 2075 | The cdr of the list can be an alist specifying additional frame |
| 2076 | parameters for use in constructing the special display frame. |
| 2077 | |
| 2078 | Alternatively, the cdr can have this form: |
| 2079 | |
| 2080 | (FUNCTION ARGS...) |
| 2081 | |
| 2082 | where FUNCTION is a symbol. Then the frame is constructed by calling |
| 2083 | FUNCTION; its first argument is the buffer, and its remaining |
| 2084 | arguments are ARGS. |
| 2085 | |
| 2086 | ** If the environment variable REPLYTO is set, its value is the default |
| 2087 | for mail-default-reply-to. |
| 2088 | |
| 2089 | ** When you send a message in Emacs, if you specify an Rmail file with |
| 2090 | the FCC: header field, Emacs converts the message to Rmail format |
| 2091 | before writing it. Thus, the file never contains anything but Rmail |
| 2092 | format messages. |
| 2093 | |
| 2094 | ** The new variable mail-from-style controls whether the From: header |
| 2095 | should include the sender's full name, and if so, which format to use. |
| 2096 | |
| 2097 | ** The new variable mail-personal-alias-file specifies the name of the |
| 2098 | user's personal aliases. This defaults to the file ~/.mailrc. |
| 2099 | mailabbrev.el used to have its own variable for this purpose |
| 2100 | (mail-abbrev-mailrc-file). That variable is no longer used. |
| 2101 | |
| 2102 | ** In Buffer-Menu mode, the d and C-d commands (which mark buffers for |
| 2103 | deletion) now accept a prefix argument which serves as a repeat count. |
| 2104 | |
| 2105 | ** Changes in BibTeX mode. |
| 2106 | |
| 2107 | *** Reference keys can now be entered with TAB completion. All |
| 2108 | reference keys defined in that buffer and all labels that appear in |
| 2109 | crossreference entries are object to completion. |
| 2110 | |
| 2111 | *** Braces are supported as field delimiters in addition to quotes. |
| 2112 | BibTeX entries may have brace-delimited and quote-delimited fields |
| 2113 | intermixed. The delimiters generated for new entries are specified by |
| 2114 | the variables bibtex-field-left-delimiter and |
| 2115 | bibtex-field-right-delimiter on a buffer-local basis. Those variables |
| 2116 | default to braces, since it is easier to put quote accented characters |
| 2117 | (as the german umlauts) into a brace-delimited entry. |
| 2118 | |
| 2119 | *** The function bibtex-clean-entry can now be invoked with a prefix |
| 2120 | argument. In this case, a label is automatically generated from |
| 2121 | various fields in the record. If bibtex-clean-entry is invoked on a |
| 2122 | record without label, a label is also generated automatically. |
| 2123 | Various variables (all beginning with `bibtex-autokey-') control the |
| 2124 | creation of that key. The variable bibtex-autokey-edit-before-use |
| 2125 | determines, if the user is allowed to edit auto-generated reference |
| 2126 | keys before they are used. |
| 2127 | |
| 2128 | *** A New function bibtex-complete-string completes strings with |
| 2129 | respect to the strings defined in this buffer and a set of predefined |
| 2130 | strings (initialized to the string macros defined in the standard |
| 2131 | BibTeX style files) in the same way in which ispell-complete-word |
| 2132 | works with respect to words in a dictionary. Candidates for |
| 2133 | bibtex-complete-string are initialized from variable |
| 2134 | bibtex-predefined-strings and by parsing the files found in |
| 2135 | bibtex-string-files for @String definitions. |
| 2136 | |
| 2137 | *** Every reference/field pair has now attached a comment which |
| 2138 | appears in the echo area when this field is edited. These comments |
| 2139 | should provide useful hints for BibTeX usage, especially for BibTeX |
| 2140 | beginners. New variable bibtex-help-message determines if these help |
| 2141 | messages are to appear in the minibuffer when moving to a text entry. |
| 2142 | |
| 2143 | *** Inscriptions of menu bar changed from "Entry Types" to |
| 2144 | "Entry-Types" and "Bibtex Edit" to "BibTeX-Edit". |
| 2145 | |
| 2146 | *** The variable bibtex-include-OPTcrossref is now not longer a binary |
| 2147 | switch but a list of reference names which should contain a crossref |
| 2148 | field. E.g., you can tell bibtex-mode you want a crossref field for |
| 2149 | @InProceedings and @InBook entries but for no other. |
| 2150 | |
| 2151 | *** The function validate-bibtex-buffer was completely rewritten to |
| 2152 | validate if a buffer is syntactically correct. find-bibtex-duplicates |
| 2153 | is no longer a function itself but was moved into |
| 2154 | validate-bibtex-buffer. |
| 2155 | |
| 2156 | *** Cleaning a BibTeX entry tests, if necessary fields are there. |
| 2157 | E.g., if you tell bibtex-mode to include a crossref entry, some fields |
| 2158 | are optional which would be required without the crossref entry. If |
| 2159 | you now leave the crossref entry empty and do a bibtex-clean-entry |
| 2160 | with some now required fields left empty, version 2.0 of bibtex.el |
| 2161 | complains about the absence of these fields, whereas version 1.3 |
| 2162 | didn't. |
| 2163 | |
| 2164 | *** Default value for variables bibtex-maintain-sorted-entries and |
| 2165 | bibtex-sort-ignore-string-entries is now t. |
| 2166 | |
| 2167 | *** All interactive functions are renamed to begin with `bibtex-'. |
| 2168 | |
| 2169 | *** Keybindings with \C-c\C-e entry changed for unification. Often |
| 2170 | used reference types are now on control-modified keys, mediocre used |
| 2171 | types are on unmodified keys, seldom used types are on shift-modified |
| 2172 | keys and almost never used types on meta-modified keys. |
| 2173 | |
| 2174 | \f |
| 2175 | * Configuration Changes in Emacs 19.29 |
| 2176 | |
| 2177 | ** Emacs now uses directory /usr/local/share for most of its installed |
| 2178 | files. This follows a GNU convention for directory usage. |
| 2179 | |
| 2180 | ** The option --with-x11 is no longer supported. |
| 2181 | X11 is the only version of X that Emacs 19.29 supports; |
| 2182 | use --with-x if you need to request X support explicitly. |
| 2183 | (Normally this should not be necessary, since configure should |
| 2184 | automatically enable X support if X is installed on your machine.) |
| 2185 | |
| 2186 | ** If you use the site-init.el file to set the variable |
| 2187 | mail-host-address to a string in the dumped Emacs, that string becomes |
| 2188 | the default host address for initializing user-mail-address. |
| 2189 | It is used instead of the value of (system-name). |
| 2190 | |
| 2191 | \f |
| 2192 | * Lisp-Level Changes in Emacs 19.29 |
| 2193 | |
| 2194 | ** Basic Lisp |
| 2195 | |
| 2196 | *** The range of integer values is now at least 2**28 on all machines. |
| 2197 | This means the maximum size of a buffer is at least 2**27-1, |
| 2198 | or 134,217,727. |
| 2199 | |
| 2200 | *** You can now use Common Lisp syntax for the backquote and comma |
| 2201 | macros. Thus, you can now write `(x ,y z) instead of (` (x (, y) z)). |
| 2202 | |
| 2203 | The old syntax is still accepted. |
| 2204 | |
| 2205 | *** The new function rassoc is like assoc, except that it compares the |
| 2206 | key against the cdr of each alist element, where assoc would compare |
| 2207 | it against the car of each alist element. |
| 2208 | |
| 2209 | *** The new function unintern deletes a symbol from an obarray. The |
| 2210 | first argument can be the symbol to delete, or a string giving its |
| 2211 | name. The second argument specifies the obarray (nil means the |
| 2212 | current default obarray). |
| 2213 | |
| 2214 | If the specified symbol is not in the obarray, or if there's no symbol |
| 2215 | in the obarray matching the specified string, unintern does nothing |
| 2216 | and returns nil. If it does delete a symbol, it returns t. |
| 2217 | |
| 2218 | *** You can specify an alternative read function for use by load and |
| 2219 | eval-region by binding the variable load-read-function to some other |
| 2220 | function. This function should accept one argument just like read. |
| 2221 | If load-read-function is nil, load and eval-region use ordinary read. |
| 2222 | |
| 2223 | *** The new function `type-of' takes any object as argument, and |
| 2224 | returns a symbol identifying the type of that object--one of `symbol', |
| 2225 | `integer', `float', `string', `cons', `vector', `marker', `overlay', |
| 2226 | `window', `buffer', `subr', `compiled-function', |
| 2227 | `window-configuration', `process'. |
| 2228 | |
| 2229 | *** When you use eval-after-load for a file that is already loaded, it |
| 2230 | executes the FORM right away. As before, if the file is not yet |
| 2231 | loaded, it arranges to execute FORM if and when the file is loaded |
| 2232 | later. The result is: if you have called eval-after-load for a file, |
| 2233 | and if that file has been loaded, then regardless of the order of |
| 2234 | these two events, the specified form has been evaluated. |
| 2235 | |
| 2236 | *** The Lisp construct #@NUMBER now skips the next NUMBER characters, |
| 2237 | treating them as a comment. |
| 2238 | |
| 2239 | You would not want to use this in a file you edit by hand, but it is |
| 2240 | useful for commenting out parts of machine-generated files. |
| 2241 | |
| 2242 | *** Two new functions, `plist-get' and `plist-put', |
| 2243 | allow you to modify and retrieve values from lists formatted as property-lists. |
| 2244 | They work like `get' and `put', but operate on any list. |
| 2245 | `plist-put' returns the modified property-list; you must store it |
| 2246 | back where you got it. |
| 2247 | |
| 2248 | *** The new function add-to-list is called with two elements, |
| 2249 | a variable that holds a list and a new element. |
| 2250 | It adds the element to the list unless it is already present. |
| 2251 | It compares elements using `equal'. Here is an example: |
| 2252 | |
| 2253 | (setq foo '(a b)) => (a b) |
| 2254 | |
| 2255 | (add-to-list 'foo 'c) => (c a b) |
| 2256 | |
| 2257 | (add-to-list 'foo 'b) => (c a b) |
| 2258 | |
| 2259 | foo => (c a b) |
| 2260 | |
| 2261 | ** Changes in compilation. |
| 2262 | |
| 2263 | Functions and variables loaded from a byte-compiled file |
| 2264 | now refer to the file for their doc strings. |
| 2265 | |
| 2266 | This has a few consequences: |
| 2267 | |
| 2268 | -- Loading the file is faster and uses less memory. |
| 2269 | -- Reference to doc strings is a little slower (the same speed |
| 2270 | as reference to the doc strings of primitive and preloaded functions). |
| 2271 | -- The compiled files will not work in old versions of Emacs. |
| 2272 | -- If you move the compiled file after loading it, Emacs can no longer |
| 2273 | find these doc strings. |
| 2274 | -- If you alter the compiled file (such as by compiling a new |
| 2275 | version), then further access to documentation strings will get |
| 2276 | nonsense results. |
| 2277 | |
| 2278 | The byte compiler now optionally supports lazy loading of compiled |
| 2279 | functions' definitions. If you enable this feature when you compile, |
| 2280 | loading the compiled file does not actually bring the function |
| 2281 | definitions into core. Instead it creates references to the compiled |
| 2282 | file, and brings each function's definition into core the first time |
| 2283 | you call that function, or when you force it with the new function |
| 2284 | `fetch-bytecode'. |
| 2285 | |
| 2286 | Using the lazy loading feature has a few consequences: |
| 2287 | |
| 2288 | -- Loading the file is faster and uses less memory. |
| 2289 | -- Calling any function in the file for the first time is slower. |
| 2290 | -- If you move the compiled file after loading it, Emacs can no longer |
| 2291 | find the function definitions. |
| 2292 | -- If you alter the compiled file (such as by compiling a new |
| 2293 | version), then further access to functions not already loaded |
| 2294 | will get nonsense results. |
| 2295 | |
| 2296 | To enable the lazy loading feature, set up a non-nil file local |
| 2297 | variable binding for the variable `byte-compile-dynamic' in the Lisp |
| 2298 | source file. For example, put this on the first line: |
| 2299 | |
| 2300 | -*-byte-compile-dynamic: t;-*- |
| 2301 | |
| 2302 | It's a good idea to use the lazy loading feature for a file that |
| 2303 | contains many functions, most of which are not actually used by a |
| 2304 | given user in a given session. |
| 2305 | |
| 2306 | To turn off the basic feature of referring to the file for doc |
| 2307 | strings, set byte-compile-dynamic-docstrings to nil. You can do this |
| 2308 | globally, or for one source file by adding this to the first line: |
| 2309 | |
| 2310 | -*-byte-compile-dynamic-docstrings: nil;-*- |
| 2311 | |
| 2312 | ** Strings |
| 2313 | |
| 2314 | *** Do not pass integer arguments to `concat' (or `vconcat' or |
| 2315 | `append'). We are phasing out the old unrecommended support for |
| 2316 | integers as arguments to these functions, in preparation for treating |
| 2317 | numbers as single characters in a future release. To concatenate |
| 2318 | numbers in string form, use `number-to-string' first, or rewrite the |
| 2319 | call to use `format' instead of `concat'. |
| 2320 | |
| 2321 | *** The new function match-string returns the string of text matched at |
| 2322 | the given parenthesized expression by the last regexp search, or nil |
| 2323 | if there was no match. If the last match was by `string-match' on a |
| 2324 | string, the string must be given. Therefore, this function can be |
| 2325 | used in place of `buffer-substring' and `substring', when using |
| 2326 | `match-beginning' and `match-end' to find match positions. |
| 2327 | |
| 2328 | (match-string N) or (match-string N STRING) |
| 2329 | |
| 2330 | *** The function replace-match now accepts an optional fourth argument, |
| 2331 | STRING. Use this after performing string-match on STRING, to replace |
| 2332 | the portion of STRING that was matched. When used in this way, |
| 2333 | replace-match returns a newly created string which is the same as |
| 2334 | STRING except for the matched portion. |
| 2335 | |
| 2336 | *** The new function buffer-substring-no-properties |
| 2337 | is like buffer-substring except that the string it returns |
| 2338 | has no text properties. |
| 2339 | |
| 2340 | *** The function `equal' now considers two strings to be different |
| 2341 | if they don't have the same text properties. |
| 2342 | |
| 2343 | ** Completion |
| 2344 | |
| 2345 | *** all-completions now takes an optional fourth argument. |
| 2346 | If that argument is non-nil, completions that start with a space |
| 2347 | are ignored unless the initial string also starts with a space. |
| 2348 | (This used to happen unconditionally.) |
| 2349 | |
| 2350 | ** Local Variables |
| 2351 | |
| 2352 | *** Local hook variables. |
| 2353 | |
| 2354 | There is now a clean way to give a hook variable a buffer-local value. |
| 2355 | Call the function `make-local-hook' to do this. |
| 2356 | |
| 2357 | Once a hook variable is buffer-local, you can add hooks to it either |
| 2358 | globally or locally. run-hooks runs the local hook functions |
| 2359 | of the current buffer, then all the global hook functions. |
| 2360 | |
| 2361 | The functions add-hook and remove-hook take an additional optional |
| 2362 | argument LOCAL which says whether to add (or remove) a local hook |
| 2363 | function or a global one. |
| 2364 | |
| 2365 | Local hooks use t as an element of the (local) value of the hook |
| 2366 | variable as a flag meaning to use the global value also. |
| 2367 | |
| 2368 | *** The new function local-variable-p tells you whether a particular |
| 2369 | variable is buffer-local in the current buffer or a specified buffer. |
| 2370 | |
| 2371 | ** Editing Facilities |
| 2372 | |
| 2373 | *** The function copy-region-as-kill no longer sets this-command; |
| 2374 | as a result, a following kill command will not normally append |
| 2375 | to the text saved by copy-region-as-kill. |
| 2376 | |
| 2377 | *** Regular expression searching and matching no longer performs full |
| 2378 | Posix backtracking by default. They now stop with the first match found |
| 2379 | instead of looking for the longest match--just as they did in Emacs 18. |
| 2380 | The reason for this change is to get higher speed. |
| 2381 | |
| 2382 | There are new functions you can use if you really want to search or |
| 2383 | match with Posix behavior: posix-search-forward, |
| 2384 | posix-search-backward, posix-looking-at, and posix-string-match. Call |
| 2385 | these just like re-search-forward, re-search-backward, looking-at, and |
| 2386 | string-match. |
| 2387 | |
| 2388 | ** Files |
| 2389 | |
| 2390 | *** The new variable `format-alist' defines file formats, |
| 2391 | which are ways of translating between the data in a file and things |
| 2392 | (text, text-properties, and possibly other information) in a buffer. |
| 2393 | |
| 2394 | `format-alist' has one element for each format. Each element is a |
| 2395 | list like this: |
| 2396 | (NAME DOC-STRING REGEXP FROM-FN TO-FN MODIFY MODE-FN) |
| 2397 | containing the name of the format, a documentation string, a regular |
| 2398 | expression which is used to recognize files in that format, a decoding |
| 2399 | function, an encoding function, a flag that indicates whether the |
| 2400 | encoding function modifies the buffer, and a mode function. |
| 2401 | |
| 2402 | FROM-FN is called to decode files in that format; it gets two args, BEGIN |
| 2403 | and END, and can make any modifications it likes, returning the new |
| 2404 | end position. It must make sure that the beginning of the file no |
| 2405 | longer matches REGEXP, or else it will get called again. |
| 2406 | TO-FN is called to encode a region into that format; it is also passed BEGIN |
| 2407 | and END, and either returns a list of annotations as in |
| 2408 | `write-region-annotate-functions', or modifies the region and returns |
| 2409 | the new end position. |
| 2410 | MODIFY, if non-nil, means the TO-FN modifies the region. If nil, TO-FN may |
| 2411 | not make any changes and should return a list of annotations. |
| 2412 | |
| 2413 | `insert-file-contents' checks the beginning of the file that it is |
| 2414 | inserting to see if it matches one of the regexps. If so, then it |
| 2415 | calls the decoding function, and then looks for another match. When |
| 2416 | visiting a file, it also calls the mode function, and sets the |
| 2417 | variable `buffer-file-format' to the list of formats that the file |
| 2418 | used. |
| 2419 | |
| 2420 | `write-region' calls the encoding functions for each format in |
| 2421 | `buffer-file-format' before it writes the file. To save a file in a |
| 2422 | different format, either set `buffer-file-format' to a different |
| 2423 | value, or call the new function `format-write-file'. |
| 2424 | |
| 2425 | Since some encoding functions may be slow, you can request that |
| 2426 | auto-save use a format different from the buffer's default by setting |
| 2427 | the variable `auto-save-file-format' to the desired format. This will |
| 2428 | determine the format of all auto-save files. |
| 2429 | |
| 2430 | *** The new function file-ownership-preserved-p tells you whether |
| 2431 | deleting a file and recreating it would keep the file's owner |
| 2432 | unchanged. |
| 2433 | |
| 2434 | *** The new function file-regular-p returns t if a file |
| 2435 | is a "regular" file (not a directory, symlink, named pipe, |
| 2436 | terminal, or other I/O device). |
| 2437 | |
| 2438 | *** The new function file-name-sans-extension discards the extension |
| 2439 | of a file name. You call it with a file name, and returns a string |
| 2440 | lacking the extension. |
| 2441 | |
| 2442 | *** The variable path-separator is a string which says which |
| 2443 | character separates directories in a search path. It is ":" |
| 2444 | for Unix and GNU systems, ";" for MSDOG and Windows NT. |
| 2445 | |
| 2446 | ** Commands and Key Sequences |
| 2447 | |
| 2448 | *** Key sequences consisting of C-c followed by {, }, <, >, : or ; are |
| 2449 | now reserved for major modes. Sequences consisting of C-c followed by |
| 2450 | any other punctuation character are now meant for minor modes. We don't |
| 2451 | plan to convert all existing major modes to stop using those sequences, |
| 2452 | but we hope to keep them to a minimum. |
| 2453 | |
| 2454 | *** When the post-command-hook or the pre-command-hook gets an error, the error |
| 2455 | is silently ignored. Emacs no longer sets the hook variable to nil when this |
| 2456 | happens. Meanwhile, the hook functions can now alter the hook variable in |
| 2457 | a normal fashion; there is no need to do anything special. |
| 2458 | |
| 2459 | *** define-key, lookup-key, and various other functions for changing or |
| 2460 | looking up key bindings now let you write an event type with a list |
| 2461 | like (ctrl meta newline) or (meta ?d), as in XEmacs. (ctrl meta newline) |
| 2462 | is equivalent to the event type symbol C-M-newline, and (meta ?d) |
| 2463 | is equivalent to the character ?\M-d. |
| 2464 | |
| 2465 | *** The function event-convert-list converts a list such as |
| 2466 | (meta ?d) into the corresponding event type (a symbol or integer). |
| 2467 | |
| 2468 | *** In an interactive spec, `k' means to read a key sequence. In this |
| 2469 | key sequence, upper case characters and shifted function keys which |
| 2470 | have no bindings are converted to lower case if that makes them |
| 2471 | defined. |
| 2472 | |
| 2473 | The new interactive code `K' reads a key sequence similarly, but does |
| 2474 | not convert the last event. `K' is useful for reading a key sequence |
| 2475 | to be given a binding. |
| 2476 | |
| 2477 | *** The variable overriding-local-map now has no effect on the menu bar |
| 2478 | display unless overriding-local-map-menu-flag is non-nil. This is why |
| 2479 | incremental search no longer temporarily changes the menu bars. |
| 2480 | |
| 2481 | Note that overriding-local-map does still affect the execution of key |
| 2482 | sequences entered using the menu bar. So if you use |
| 2483 | overriding-local-map, and a menu bar key sequence comes in, you should |
| 2484 | make sure to clear overriding-local-map before that key sequence gets |
| 2485 | looked up and executed. But this is what you'd normally do anyway: |
| 2486 | programs that use overriding-local-map normally exit and "put back" |
| 2487 | any event such as menu-bar that they do not handle specially. |
| 2488 | |
| 2489 | *** The new variable `overriding-terminal-local-map' is like |
| 2490 | overriding-local-map, but is specific to a single terminal. |
| 2491 | |
| 2492 | *** delete-frame events. |
| 2493 | |
| 2494 | When you use the X window manager's "delete window" command, this now |
| 2495 | generates a delete-frame event. The standard definition of this event |
| 2496 | is a command that deletes the frame that received the event, and kills |
| 2497 | Emacs when the last visible or iconified frame is deleted. You can |
| 2498 | rebind the event to some other command if you wish. |
| 2499 | |
| 2500 | *** Two new types of events, iconify-frame and make-frame-visible, |
| 2501 | indicate that the user iconified or deiconified a frame with the |
| 2502 | window manager. Since the window manager has already done the work, |
| 2503 | the default definition for both event types in Emacs is to do nothing. |
| 2504 | |
| 2505 | ** Frames and X |
| 2506 | |
| 2507 | *** Certain Lisp variables are now local to an X terminal (in other |
| 2508 | words, all the screens of a single X server). The value in effect, at |
| 2509 | any given time, is the one that belongs to the terminal of the |
| 2510 | selected frame. The terminal-local variables are |
| 2511 | default-minibuffer-frame, system-key-alist, defining-kbd-macro, and |
| 2512 | last-kbd-macro. There is no way for Lisp programs to create others. |
| 2513 | |
| 2514 | The terminal-local variables cannot be buffer-local. |
| 2515 | |
| 2516 | *** When you create an X frame, for the `top' and `left' frame |
| 2517 | parameters, you can now use values of the form (+ N) or (- N), where N |
| 2518 | is an integer. (+ N) means N pixels to the right of the left edge of |
| 2519 | the screen and (- N) means N pixels to the left of the right edge. In |
| 2520 | both cases, N may be zero (exactly at the edge) or negative (putting |
| 2521 | the window partly off the screen). |
| 2522 | |
| 2523 | The function x-parse-geometry can return values of these forms |
| 2524 | for certain inputs. |
| 2525 | |
| 2526 | *** The variable menu-bar-file-menu has been renamed to |
| 2527 | menu-bar-files-menu to match the actual item that appears in the menu. |
| 2528 | (All the other such variable names do match.) |
| 2529 | |
| 2530 | *** The new function active-minibuffer-window returns the minibuffer window |
| 2531 | currently active, or nil if none is now active. |
| 2532 | |
| 2533 | *** In the functions next-window, previous-window, next-frame, |
| 2534 | previous-frame, get-buffer-window, get-lru-window, get-largest-window |
| 2535 | and delete-windows-on, if you specify 0 for the last argument, |
| 2536 | it means to consider all visible and iconified frames. |
| 2537 | |
| 2538 | *** When you set a frame's cursor type with modify-frame-parameters, |
| 2539 | you can now specify (bar . INTEGER) as the cursor type. This stands |
| 2540 | for a bar cursor of width INTEGER. |
| 2541 | |
| 2542 | *** The new function facep returns t if its argument is a face name |
| 2543 | (or if it is a vector such as is used internally by the Lisp code |
| 2544 | to represent a face). |
| 2545 | |
| 2546 | *** Each frame can now have a buffer-predicate function, |
| 2547 | which is the `buffer-predicate' frame parameter. |
| 2548 | When `other-buffer' looks for an alternative buffer, it considers |
| 2549 | only the buffers that fit the selected frame's buffer predicate (if it |
| 2550 | has one). This is useful for applications that make their own frames. |
| 2551 | |
| 2552 | *** When you create an X frame, you can now specify the frame parameter |
| 2553 | `display'. This says which display to put the frame on. The value |
| 2554 | should be a display name--a string of the form |
| 2555 | "HOST:DPYNUMBER.SCREENNUMBER". |
| 2556 | |
| 2557 | The functions x-server-... and x-display-... now take an optional |
| 2558 | argument which specifies the display to ask about. You can use either |
| 2559 | a display name string or a frame. A value of nil stands for the |
| 2560 | selected frame. |
| 2561 | |
| 2562 | To close the connection to an X display, use the function |
| 2563 | x-close-connection. Specify which display with a display name. You |
| 2564 | cannot close the connection if Emacs still has frames open on that |
| 2565 | display. |
| 2566 | |
| 2567 | x-display-list returns a list indicating which displays Emacs has |
| 2568 | connections to. Its elements are display names (strings). |
| 2569 | |
| 2570 | *** The icon-type frame parameter may now be a file name. |
| 2571 | Then the contents of that file specify the icon bitmap to use |
| 2572 | for that frame. |
| 2573 | |
| 2574 | *** The title of an Emacs frame, displayed by most window managers, is |
| 2575 | set from frame-title-format or icon-title-format. These have the same |
| 2576 | structure as mode-line-format. |
| 2577 | |
| 2578 | *** x-display-grayscale-p is a new function that returns non-nil if |
| 2579 | your X server can display shades of gray. Currently it returns |
| 2580 | non-nil for color displays (because they can display shades of gray); |
| 2581 | we may change it in the next version to return nil for color displays. |
| 2582 | |
| 2583 | *** The frame parameter scroll-bar-width specifies the width of the |
| 2584 | scrollbar in pixels. |
| 2585 | |
| 2586 | ** Buffers |
| 2587 | |
| 2588 | *** Creating a buffer with get-buffer-create does not obey |
| 2589 | default-major-mode. That variable is now handled in a separate |
| 2590 | function, set-buffer-major-mode. get-buffer-create and generate-new-buffer |
| 2591 | always leave the newly created buffer in Fundamental mode. |
| 2592 | |
| 2593 | Creating a new buffer by visiting a file or with switch-to-buffer, |
| 2594 | pop-to-buffer, and similar functions does call set-buffer-major-mode |
| 2595 | to select the default major mode specified with default-major-mode. |
| 2596 | |
| 2597 | *** You can now create an "indirect buffer". An indirect buffer shares |
| 2598 | its text, including text properties, with another buffer (the "base |
| 2599 | buffer"), but has its own major mode, local variables, overlays, and |
| 2600 | narrowing. An indirect buffer has a name of its own, distinct from |
| 2601 | those of the base buffer and all other buffers. An indirect buffer |
| 2602 | cannot itself be visiting a file (though its base buffer can be). |
| 2603 | The base buffer cannot itself be indirect. |
| 2604 | |
| 2605 | Use (make-indirect-buffer BASE-BUFFER NAME) to make an indirect buffer |
| 2606 | named NAME whose base is BASE-BUFFER. If BASE-BUFFER is an indirect |
| 2607 | buffer, its base buffer is used as the base for the new buffer. |
| 2608 | |
| 2609 | You can make an indirect buffer current, or switch to it in a window, |
| 2610 | just as you would a non-indirect buffer. |
| 2611 | |
| 2612 | The function buffer-base-buffer, given an indirect buffer, returns its |
| 2613 | base buffer. It returns nil when given an ordinary buffer (not |
| 2614 | indirect). |
| 2615 | |
| 2616 | The library `noutline' has versions of Outline mode and Outline minor |
| 2617 | mode which let you display different parts of the outline in different |
| 2618 | indirect buffers. |
| 2619 | |
| 2620 | ** Subprocesses |
| 2621 | |
| 2622 | *** The functions call-process and call-process-region now allow |
| 2623 | you to direct error message output from the subprocess into a |
| 2624 | separate destination, instead of mixing it with ordinary output. |
| 2625 | To do this, specify for the third argument, BUFFER, a list of the form |
| 2626 | (BUFFER-OR-NAME ERROR-DESTINATION) |
| 2627 | BUFFER-OR-NAME specifies where to put ordinary output; it should |
| 2628 | be a buffer or buffer name, or t, nil or 0. This is what would |
| 2629 | have been the BUFFER argument, ordinarily. |
| 2630 | |
| 2631 | ERROR-DESTINATION specifies where to put the error output. |
| 2632 | nil means discard it, t means mix it with the ordinary output, |
| 2633 | and a string specifies a file name to write this output into. |
| 2634 | |
| 2635 | You can't specify a buffer to put the error output in; that is not |
| 2636 | easy to implement directly. You can put the error output into a |
| 2637 | buffer by sending it to a temporary file and then inserting the file |
| 2638 | into a buffer. |
| 2639 | |
| 2640 | *** Comint mode changes: |
| 2641 | |
| 2642 | **** The variable comint-completion-addsuffix can also be a cons pair |
| 2643 | of the form (DIRSUFFIX . FILESUFFIX), where DIRSUFFIX and FILESUFFIX are |
| 2644 | strings added on unambiguous or exact completion of directories and file |
| 2645 | names, respectively. |
| 2646 | |
| 2647 | ** Text properties |
| 2648 | |
| 2649 | *** You can now specify which values of the `invisible' property |
| 2650 | make text invisible in a given buffer. The variable |
| 2651 | `buffer-invisibility-spec', which is always local in all buffers, |
| 2652 | controls this. |
| 2653 | |
| 2654 | If its value is t, then any non-nil `invisible' property makes |
| 2655 | a character invisible. |
| 2656 | |
| 2657 | If its value is a list, then a character is invisible if its |
| 2658 | `invisible' property value appears as a member of the list, or if it |
| 2659 | appears as the car of a member of the list. |
| 2660 | |
| 2661 | When the `invisible' property value appears as the car of a member of |
| 2662 | the `buffer-invisibility-spec' list, then the cdr of that member has |
| 2663 | an effect. If it is non-nil, then an ellipsis appears in place of the |
| 2664 | character. (This happens only for the *last* invisible character in a |
| 2665 | series of consecutive invisible characters, and only at the end of a |
| 2666 | line.) |
| 2667 | |
| 2668 | If a character's `invisible' property is a list, then Emacs checks each |
| 2669 | element of the list against `buffer-invisibility-spec'. If any element |
| 2670 | matches, the character is invisible. |
| 2671 | |
| 2672 | *** The command `list-text-properties-at' shows what text properties |
| 2673 | are in effect at point. |
| 2674 | |
| 2675 | *** Frame objects now exist in Emacs even on systems that don't support |
| 2676 | X Windows. You can create multiple frames, and switch between them |
| 2677 | using select-frame. The selected frame is actually displayed on your |
| 2678 | terminal; other frames are not displayed at all. The selected frame |
| 2679 | number appears in the mode line after `Emacs', except for frame 1. |
| 2680 | |
| 2681 | Switching frames on ASCII terminals is therefore more or less |
| 2682 | equivalent to switching between different window configurations. |
| 2683 | |
| 2684 | *** The new variable window-size-change-functions holds a list of |
| 2685 | functions to be called if window sizes change (or if windows are |
| 2686 | created or deleted). The functions are called once for each frame on |
| 2687 | which changes have occurred, with the frame as the sole argument. |
| 2688 | This takes place shortly before redisplay. |
| 2689 | |
| 2690 | *** The modification hook functions of overlays now work differently. |
| 2691 | They are called both before and after each change. This makes it |
| 2692 | possible for the functions to determine exactly what the change was. |
| 2693 | |
| 2694 | This change affects three overlay properties: the modification-hooks |
| 2695 | property, a list of functions called for deletions overlapping the |
| 2696 | overlay's range and for insertions inside it; the |
| 2697 | insert-in-front-hooks, a list of functions called for insertions at |
| 2698 | the beginning of the overlay; and the insert-behind-hooks, a list of |
| 2699 | functions called for insertions at the end of the overlay. |
| 2700 | |
| 2701 | Each function is called both before and after each change that it |
| 2702 | applies to. Before the change, it is called with four arguments: |
| 2703 | (funcall FUNCTION OVERLAY nil START END) |
| 2704 | START and END are the same arguments that the before-change-functions |
| 2705 | receive. |
| 2706 | |
| 2707 | After the change, each function is called with five arguments: |
| 2708 | (funcall FUNCTION OVERLAY t START END OLDSIZE) |
| 2709 | The last arguments, START and END and OLDSIZE, |
| 2710 | are the same arguments that the after-change-functions receive. |
| 2711 | |
| 2712 | This means the function must accept either four or five arguments. |
| 2713 | |
| 2714 | *** You can set defaults for text-properties with the new variable |
| 2715 | `default-text-properties'. Its value is a property list; the values |
| 2716 | specified there are used whenever a character (or its category) does |
| 2717 | not specify a value. |
| 2718 | |
| 2719 | *** The `face' property of a character or an overlay can now be a list |
| 2720 | of face names. Formerly it had to be just one face name. |
| 2721 | |
| 2722 | *** Changes in handling the `intangible' text property. |
| 2723 | |
| 2724 | **** If inhibit-point-motion-hooks is non-nil, then `intangible' properties |
| 2725 | are ignored. |
| 2726 | |
| 2727 | **** Moving to just before a stretch of intangible text |
| 2728 | is no longer special in any way. Point stays at that place. |
| 2729 | |
| 2730 | **** When you move point backwards into the midst of intangible text, |
| 2731 | point moves back to the beginning of that text. (It used to move |
| 2732 | forward to the end of that text, which was not very useful.) |
| 2733 | |
| 2734 | **** When moving across intangible text, Emacs stops wherever the |
| 2735 | property value changes. So if you have two stretches of intangible |
| 2736 | text, with different non-nil intangible properties, it is possible to |
| 2737 | place point between them. |
| 2738 | |
| 2739 | ** Overlays |
| 2740 | |
| 2741 | *** Overlay changes. |
| 2742 | |
| 2743 | **** The new function previous-overlay-change returns the position of |
| 2744 | the previous overlay start or end, before a specified position. This |
| 2745 | is the backwards-moving counterpart of next-overlay-change. |
| 2746 | |
| 2747 | **** overlay-get now supports category properties on an overlay |
| 2748 | the same way get-text-property supports them as text properties. |
| 2749 | |
| 2750 | Specifically, if an overlay does not have the property PROP that you |
| 2751 | ask for, but it does have a `category' property which is a symbol, |
| 2752 | then that symbol's PROP property is used. |
| 2753 | |
| 2754 | **** If an overlay has a non-nil `evaporate' property, it will be |
| 2755 | deleted if it ever becomes empty (i.e., when it spans no characters). |
| 2756 | |
| 2757 | **** If an overlay has a `before-string' and/or `after-string' property, |
| 2758 | these strings are displayed at the overlay's endpoints. |
| 2759 | |
| 2760 | ** Filling |
| 2761 | |
| 2762 | *** The new variable fill-paragraph-function provides a way for major |
| 2763 | modes to override the filling of paragraphs. If this is non-nil, |
| 2764 | fill-paragraph calls it as a function, passing along its sole |
| 2765 | argument. If the function returns non-nil, fill-paragraph assumes it |
| 2766 | has done the job and simply passes on whatever value it returned. |
| 2767 | |
| 2768 | The usual use of this feature is to fill comments in programming |
| 2769 | language modes. |
| 2770 | |
| 2771 | *** Text filling and justification changes: |
| 2772 | |
| 2773 | **** The new variable use-hard-newlines can be used to make a |
| 2774 | distinction between "hard" and "soft" newlines; the fill functions |
| 2775 | will then never remove a newline that was manually inserted. Hard |
| 2776 | newlines are marked with a non-nil `hard' text-property. |
| 2777 | |
| 2778 | **** The fill-column and left-margin can now be modified by text-properties. |
| 2779 | Most lisp programs should use the new functions (current-fill-column) and |
| 2780 | (current-left-margin), which return the proper values to use for the |
| 2781 | current line. |
| 2782 | |
| 2783 | **** There are new functions for dealing with margins: |
| 2784 | |
| 2785 | ***** Set-left-margin and set-right-margin (set the value for a region |
| 2786 | and re-fill). These functions take three arguments: two to specify |
| 2787 | a region, and the desired margin value. |
| 2788 | |
| 2789 | ***** Increase-left-margin, decrease-left-margin, increase-right-margin, and |
| 2790 | decrease-right-margin (change settings relative to current values, and |
| 2791 | re-fill). |
| 2792 | |
| 2793 | ***** move-to-left-margin moves point there, optionally adding |
| 2794 | indentation or changing tabs to spaces in order to make that possible. |
| 2795 | beginning-of-line-text also moves past the fill-prefix and any |
| 2796 | indentation added to center or right-justify a line, to the beginning |
| 2797 | of the text that the user actually typed. |
| 2798 | |
| 2799 | ***** delete-to-left-margin removes any left-margin indentation, but |
| 2800 | does not change the property. |
| 2801 | |
| 2802 | **** The paragraph-movement functions look for the paragraph-start and |
| 2803 | paragraph-separate regexps at the current left margin, not at the |
| 2804 | beginning of the line. This means that those regexps should NOT use ^ |
| 2805 | to anchor the search. However, for backwards compatibility, a ^ at |
| 2806 | the beginning of the regexp will be ignored, so most packages won't break. |
| 2807 | |
| 2808 | **** justify-current-line is now capable of doing left, center, or |
| 2809 | right justification as well as full justification. |
| 2810 | |
| 2811 | **** The fill functions can do any kind of justification based on the new |
| 2812 | `justification' text-property and `default-justification' variable, |
| 2813 | or arguments to the functions. They also have a new option which |
| 2814 | defeats the normal removal of extra whitespace. |
| 2815 | |
| 2816 | **** The new function `current-justification' returns the kind of |
| 2817 | justification used for the current line. The new function |
| 2818 | `set-justification' can be used to change it, including re-justifying |
| 2819 | the text of the region according to the new value. |
| 2820 | |
| 2821 | **** Filling and auto-fill are disabled if justification is `none'. |
| 2822 | |
| 2823 | **** The auto-fill-function is now called regardless of whether |
| 2824 | the fill-column has been exceeded; the function can determine on its |
| 2825 | own whether filling (or justification) is necessary. |
| 2826 | |
| 2827 | ** Processes |
| 2828 | |
| 2829 | *** process-tty-name is a new function that returns the name of the |
| 2830 | terminal that the process itself reads and writes on (not the name of |
| 2831 | the pty that Emacs uses to talk with that terminal). |
| 2832 | |
| 2833 | *** Errors in process filters and sentinels are now normally caught |
| 2834 | automatically, so that they don't abort other Lisp programs. |
| 2835 | |
| 2836 | Setting debug-on-error non-nil turns off this feature; then errors in |
| 2837 | filters and sentinels are not caught. As a result, they can invoke |
| 2838 | the debugger, under the control of debug-on-error. |
| 2839 | |
| 2840 | *** Emacs now preserves the match data around the execution of process |
| 2841 | filters and sentinels. You can use search and match functions freely |
| 2842 | in filters and sentinels without explicitly bothering to save the |
| 2843 | match data. |
| 2844 | |
| 2845 | ** Display |
| 2846 | |
| 2847 | *** The variable message-log-max controls how messages are logged in the |
| 2848 | "*Messages*" buffer. An integer value means to keep that many lines; |
| 2849 | t means to log with no limit; nil means disable message logging. Lisp |
| 2850 | code that calls `message' excessively (e.g. isearch.el) should probably |
| 2851 | bind this variable to nil. |
| 2852 | |
| 2853 | *** Display tables now have a new element, at index 261, specifying the |
| 2854 | glyph to use for the separator between two side-by-side windows. By |
| 2855 | default, this is the vertical bar character `|'. Probably the only |
| 2856 | other useful character to store for this element is a space, to make |
| 2857 | less visual separation between two side-by-side windows displaying |
| 2858 | related information. |
| 2859 | |
| 2860 | *** The new mode-line-format spec %c displays the current column number. |
| 2861 | |
| 2862 | *** The new variable blink-matching-delay specifies how long to keep |
| 2863 | the cursor at the matching open-paren, after you insert a close-paren. |
| 2864 | This is useful mainly on systems which can wait for a fraction of a |
| 2865 | second--you can then specify fractional values such as 0.5. |
| 2866 | |
| 2867 | *** Faster processing of buffers with long lines |
| 2868 | |
| 2869 | The new variable cache-long-line-scans determines whether Emacs |
| 2870 | should use caches to handle long lines more quickly. This variable is |
| 2871 | buffer-local, in all buffers. |
| 2872 | |
| 2873 | Normally, the line-motion functions work by scanning the buffer for |
| 2874 | newlines. Columnar operations (like `move-to-column' and |
| 2875 | `compute-motion') also work by scanning the buffer, summing character |
| 2876 | widths as they go. This works well for ordinary text, but if the |
| 2877 | buffer's lines are very long (say, more than 500 characters), these |
| 2878 | motion functions will take longer to execute. Emacs may also take |
| 2879 | longer to update the display. |
| 2880 | |
| 2881 | If cache-long-line-scans is non-nil, these motion functions cache |
| 2882 | the results of their scans, and consult the cache to avoid rescanning |
| 2883 | regions of the buffer until the text is modified. The caches are most |
| 2884 | beneficial when they prevent the most searching---that is, when the |
| 2885 | buffer contains long lines and large regions of characters with the |
| 2886 | same, fixed screen width. |
| 2887 | |
| 2888 | When cache-long-line-scans is non-nil, processing short lines will |
| 2889 | become slightly slower (because of the overhead of consulting the |
| 2890 | cache), and the caches will use memory roughly proportional to the |
| 2891 | number of newlines and characters whose screen width varies. |
| 2892 | |
| 2893 | The caches require no explicit maintenance; their accuracy is |
| 2894 | maintained internally by the Emacs primitives. Enabling or disabling |
| 2895 | the cache should not affect the behavior of any of the motion functions; |
| 2896 | it should only affect their performance. |
| 2897 | |
| 2898 | ** System Interface |
| 2899 | |
| 2900 | *** The function user-login-name now accepts an optional |
| 2901 | argument uid. If the argument is non-nil, user-login-name |
| 2902 | returns the login name for that user id. |
| 2903 | |
| 2904 | *** system-name, user-name, user-full-name and user-real-name are now |
| 2905 | variables as well as functions. The variables hold the same values |
| 2906 | that the functions would return. The new variable multiple-frames |
| 2907 | is non-nil if at least two non-minibuffer frames are visible. These |
| 2908 | variables may be useful in constructing the value of frame-title-format |
| 2909 | or icon-title-format. |
| 2910 | |
| 2911 | *** Changes in time-conversion functions. |
| 2912 | |
| 2913 | **** The new function format-time-string takes a format string and a |
| 2914 | time value. It converts the time to a string, according to the format |
| 2915 | specified. You can specify what kind of conversion to use with |
| 2916 | %-specifications. |
| 2917 | |
| 2918 | **** The new function decode-time converts a time value into a list of |
| 2919 | specific items of information: the year, month, day of week, day of |
| 2920 | month, hour, minute and second. (A time value is a list of two or |
| 2921 | three integers.) |
| 2922 | |
| 2923 | **** The new function encode-time converts specific items of time |
| 2924 | information--the second, minute, hour, day, month, year, and time |
| 2925 | zone--into a time value. |
| 2926 | |
| 2927 | |
| 2928 | \f |
| 2929 | * Changes in Emacs 19.27 |
| 2930 | |
| 2931 | There are no changes; however, here is one bug fix made in 19.26 that users |
| 2932 | think should be documented here. |
| 2933 | |
| 2934 | ** SPC and DEL in Info now handle menus consistently. |
| 2935 | |
| 2936 | SPC and DEL scroll through an entire subtree an Info manual. Once you |
| 2937 | scroll through a node far enough to reach a menu, SPC begins moving |
| 2938 | into the subnodes of the menu, starting with the first one. When you |
| 2939 | reach the end of a subnode, SPC moves into the next subnode, and so |
| 2940 | on. |
| 2941 | |
| 2942 | DEL more or less scrolls through the same text in reverse order. |
| 2943 | |
| 2944 | |
| 2945 | \f |
| 2946 | * User Editing Changes in Emacs 19.26 |
| 2947 | |
| 2948 | ** In the X toolkit version, if you click on a menu bar item and |
| 2949 | release the button quickly outside the menu, the menu remains visible |
| 2950 | until you click or type something else. If you click on the menu, you |
| 2951 | select from the menu. Any other mouse click makes the menu disappear. |
| 2952 | Keyboard input gets rid of the menu and then is processed normally. |
| 2953 | |
| 2954 | "Quickly" means within double-click-time milliseconds. |
| 2955 | |
| 2956 | ** The C-x 5 commands to select a buffer in "another frame" now use an |
| 2957 | existing iconified frame, if any, deiconifying it. They also raise |
| 2958 | the frame. |
| 2959 | |
| 2960 | ** Region highlighting on a black-and-white-only display now uses |
| 2961 | underlining. Inverse-video had the problem that you couldn't see |
| 2962 | the cursor. |
| 2963 | |
| 2964 | ** You can now change the height of a window by pressing mouse-1 on |
| 2965 | the mode line and dragging it up and down. |
| 2966 | |
| 2967 | ** If you set the environment variable LC_CTYPE to iso_8859_1 or |
| 2968 | iso-8859-1, Emacs automatically sets up for display and syntactic |
| 2969 | handling of the ISO Latin-1 character set. |
| 2970 | |
| 2971 | This does not automatically load any of the packages for input of |
| 2972 | these characters, because it's not yet clear what is right to do. |
| 2973 | You must still explicitly load either iso-transl or iso-acc. |
| 2974 | |
| 2975 | ** For a read-only buffer that is also modified, the mode line now displays |
| 2976 | %* instead of %%. |
| 2977 | |
| 2978 | ** M-prior (scroll-other-window-down) is a new command that works like |
| 2979 | M-next (and C-M-v) but scrolls in the opposite direction. |
| 2980 | |
| 2981 | M-home moves to the beginning of the buffer, in the other window. |
| 2982 | M-end moves to the end of the buffer, in the other window. These two |
| 2983 | commands, along with M-next and M-prior, form a series of commands for |
| 2984 | moving around in the other window. |
| 2985 | |
| 2986 | ** In change logs, the mail address is now delimited with <...> instead |
| 2987 | of (...). |
| 2988 | |
| 2989 | This makes it a little more convenient to extract the mail address for |
| 2990 | use in mailing a message. |
| 2991 | |
| 2992 | ** In Shell mode and other comint modes, C-a has now returned to |
| 2993 | its ordinary meaning: move to the beginning of the line. |
| 2994 | Use C-c C-a to move to the end of the prompt. |
| 2995 | |
| 2996 | ** If you set mail-signature to t to cause automatic insertion of |
| 2997 | your .signature file, you now get a -- before the signature. |
| 2998 | |
| 2999 | ** Setting rmail-highlighted-headers to nil entirely turns off |
| 3000 | highlighting in Rmail. However, if your motivation for doing this is |
| 3001 | that the highlighted text doesn't look good on your display, it might |
| 3002 | be better to change the appearance of the `highlight' face. Once |
| 3003 | you've done that, you may find Rmail highlighting is useful. |
| 3004 | |
| 3005 | ** In the calendar, mouse-2 is now used only for commands that apply to a date. |
| 3006 | If you click it when not on a date, it gives an immediate error. |
| 3007 | |
| 3008 | Mouse-3 in the calendar now gives a menu of commands that do not apply |
| 3009 | to a particular date. |
| 3010 | |
| 3011 | The D command displays diary entries from a specified diary file (not |
| 3012 | your standard diary file). |
| 3013 | |
| 3014 | ** In the gnus-uu package, the binding for gnus-uu-threaded-decode-and-view |
| 3015 | is now C-c C-v C-d, not C-c C-v C-h. Thus, C-c C-v C-h is now available |
| 3016 | for asking for a list of the subcommands of C-c C-v. |
| 3017 | |
| 3018 | ** You can now specify "who you are" for various Emacs packages by |
| 3019 | setting just one variable, user-mail-address. This currently applies |
| 3020 | to posting news with GNUS and to making change log entries. It may |
| 3021 | apply to additional Emacs features in the future. |
| 3022 | |
| 3023 | \f |
| 3024 | * Lisp-Level Changes in Emacs 19.26: |
| 3025 | |
| 3026 | ** The function insert-char now takes an optional third argument |
| 3027 | which, if non-nil, says the inserted characters should inherit sticky |
| 3028 | text properties from the surrounding text. |
| 3029 | |
| 3030 | ** The `diary' library has been renamed to `diary-lib'. If you refer |
| 3031 | to this library in your Lisp code, you must update the references. |
| 3032 | |
| 3033 | ** Sending text to a subprocess can read input from subprocesses if it |
| 3034 | has to wait because the destination subprocess's terminal input buffer |
| 3035 | is full. |
| 3036 | |
| 3037 | It was already possible in unusual occasions for this operation to |
| 3038 | read subprocess input, but it did not happen very often. It is now |
| 3039 | more likely to happen. |
| 3040 | |
| 3041 | ** last-nonmenu-event is now bound to t around filter functions and sentinels. |
| 3042 | This is to ensure that y-or-n-p and yes-or-no-p use the keyboard by default. |
| 3043 | |
| 3044 | ** In mode lines, %+ now displays as % for unmodified read-only |
| 3045 | buffers. It is now the same as %* except in the case of a modified |
| 3046 | read-only buffer; in that case, %+ displays as *. |
| 3047 | |
| 3048 | The old meaning of %+ is now available on %&. |
| 3049 | It displays * for a modified buffer and - for an unmodified buffer, |
| 3050 | regardless of read-only status. |
| 3051 | |
| 3052 | ** You can now use `underline' in the color list of a face. |
| 3053 | It serves as a last resort, and says to underline the face |
| 3054 | (if previous color list elements can't be used). |
| 3055 | |
| 3056 | ** The new function x-color-values returns the list of color values |
| 3057 | for a given color name (a string). The list contains three integers |
| 3058 | which give the amounts of red, green and blue in the color: (R G B). |
| 3059 | |
| 3060 | ** In run-at-time, 0 as the repeat interval means "don't repeat". |
| 3061 | |
| 3062 | ** The variable trim-versions-without-asking has been renamed to |
| 3063 | delete-old-versions. |
| 3064 | |
| 3065 | ** The new function other-window-for-scrolling returns the choice of |
| 3066 | other window for C-M-v to scroll. |
| 3067 | |
| 3068 | ** Note that the function fceiling was mistakenly documented as fceil before. |
| 3069 | |
| 3070 | \f |
| 3071 | * Changes in cc-mode.el in Emacs 19.26: |
| 3072 | |
| 3073 | ** A new syntactic symbol has been added: substatement-open. It |
| 3074 | defines the open brace of a substatement block. These used to get: |
| 3075 | ((block-open ...) (substatement . ...)). |
| 3076 | |
| 3077 | Non-block substatement lines still get just ((substatement . ...)) |
| 3078 | |
| 3079 | Note that the custom indent function c-adaptive-block-open has been |
| 3080 | removed as obsolete. |
| 3081 | |
| 3082 | ** You can now specify the `hanginess' of closing braces. See |
| 3083 | c-hanging-braces-alist. |
| 3084 | |
| 3085 | ** Recognizes try and catch blocks in C++. They are given the |
| 3086 | substatement syntactic symbol. |
| 3087 | |
| 3088 | ** should be generally more forgiving about non-GNU standard top-level |
| 3089 | construct definition styles (i.e. where the function/class/struct |
| 3090 | opening brace does not start in column zero). |
| 3091 | |
| 3092 | If you hang the braces that open a top-level construct on the right |
| 3093 | edge, and you find you still need to define defun-open-prompt (Emacs |
| 3094 | 19) please let me know. Note that there may still be performance |
| 3095 | issues related to non-column zero opening braces. |
| 3096 | |
| 3097 | ** c-macro-expand is put on C-c C-e |
| 3098 | |
| 3099 | ** New style: "Default". Resets indentation to those shipped with |
| 3100 | cc-mode.el. |
| 3101 | |
| 3102 | ** internal defun c-indent-via-language-element has been renamed |
| 3103 | c-indent-line for compatibility with c-mode.el and awk-mode. |
| 3104 | |
| 3105 | ** new buffer-local variable c-comment-start-regexp for (potential) |
| 3106 | flexibility in adding new modes based on cc-mode.el |
| 3107 | |
| 3108 | |
| 3109 | \f |
| 3110 | * Changes in Emacs 19.25 |
| 3111 | |
| 3112 | The variable x-cross-pointer-shape (which didn't really exist) has |
| 3113 | been renamed to x-sensitive-text-pointer-shape, and now does exist. |
| 3114 | |
| 3115 | |
| 3116 | \f |
| 3117 | * Changes in Emacs 19.24 |
| 3118 | |
| 3119 | Here is a list of new Lisp packages introduced since 19.22. |
| 3120 | |
| 3121 | derived.el Define new major modes based on old ones. |
| 3122 | dired-x.el Extra Dired features. |
| 3123 | double.el New mode for conveniently inputting non-beyond chars. |
| 3124 | easymenu.el Create menus easily. |
| 3125 | ediff.el Snazzy diff interface. |
| 3126 | foldout.el A kind of outline mode designed for editing programs. |
| 3127 | gnus-uu.el UUdecode in GNUS buffers. |
| 3128 | ielm.el Interactively evaluate Lisp. |
| 3129 | This is a replacement for Lisp Interaction Mode. |
| 3130 | iso-cvt.el Conversion of beyond-ASCII characters between |
| 3131 | various different representations. |
| 3132 | jka-compr.el Automatic compression/decompression. |
| 3133 | mldrag.el Drag modeline to change heights of windows. |
| 3134 | mail-hist.el Provides history for headers of outgoing mail. |
| 3135 | rsz-mini.el Automatically resizing minibuffers. |
| 3136 | s-region.el Set region by holding shift. |
| 3137 | skeleton.el Templates for statement insertion. |
| 3138 | soundex.el Classifying words by how they sound. |
| 3139 | tempo.el Template insertion with hotspots. |
| 3140 | |
| 3141 | |
| 3142 | \f |
| 3143 | * User Editing Changes in 19.23. |
| 3144 | |
| 3145 | ** Emacs 19.23 uses Ispell version 3. |
| 3146 | |
| 3147 | Previous Emacs 19 versions used Ispell version 4. That version had |
| 3148 | improvements in storing the dictionary compactly, but these are not |
| 3149 | very important nowadays. Meanwhile, in parallel to the work on Ispell |
| 3150 | 4, many useful features were added to Ispell 3. Until a few months |
| 3151 | ago, the terms on Ispell 3 did not let us use it; but they have now |
| 3152 | been changed, so now we are using it. We are dropping Ispell 4. |
| 3153 | |
| 3154 | ** Emacs 19.23 can run on MS-DOG. See the file MSDOS in the same |
| 3155 | directory as this file. |
| 3156 | |
| 3157 | ** Emacs 19.23 can work with an X toolkit. You must specify toolkit |
| 3158 | operation when you configure Emacs: use the option |
| 3159 | --with-x-toolkit=yes. (This option uses code developed by Lucid; |
| 3160 | thanks to Frederic Pierresteguy for helping to adapt it.) |
| 3161 | |
| 3162 | ** Emacs now has dialog boxes; yes/no and y/n questions automatically |
| 3163 | use them in commands invoked with the mouse. For more information, |
| 3164 | see below under "Lisp programming changes". |
| 3165 | |
| 3166 | ** Menus now display the keyboard equivalents (if any) of the menu |
| 3167 | commands in parentheses after the menu item. |
| 3168 | |
| 3169 | ** Kill commands, used in a read-only buffer, now move point across |
| 3170 | the text they would otherwise have killed. This way, you can use |
| 3171 | repeated kill commands to transfer text into the kill ring. |
| 3172 | |
| 3173 | ** There is now a global mark ring in addition to the mark ring that is local |
| 3174 | to each buffer. The global mark ring stores positions in any buffer. Any |
| 3175 | time the mark is set and the current buffer is different from the last time |
| 3176 | the mark was set, the new mark is pushed on the global mark ring as well. |
| 3177 | The new command C-x C-SPC (pop-global-mark) pops the global mark ring and |
| 3178 | jumps to the last mark pushed, first switching to that buffer. |
| 3179 | |
| 3180 | ** Query Replace is now available in the Edit menu. |
| 3181 | |
| 3182 | ** ESC no longer simply exits a Query Replace. It now exits the Query |
| 3183 | Replace and remains pending. Thus, ESC A and M-A are now equivalent |
| 3184 | in Query Replace. |
| 3185 | |
| 3186 | To simply exit a Query Replace, type RET or Period. |
| 3187 | |
| 3188 | ** M-mouse-2 now puts point at the end of the yanked secondary selection. |
| 3189 | |
| 3190 | ** Mouse-1 in the mode line now simply selects the window above that |
| 3191 | mode line. Mouse-2 in the mode line selects that window and expands |
| 3192 | it to fill the frame it is in. |
| 3193 | |
| 3194 | ** You can now use mouse-2 in a Dired buffer or Tar mode buffer to find |
| 3195 | a file you click on, in a compilation buffer to go to a particular |
| 3196 | error message, and in a *Occur* buffer to go to a particular |
| 3197 | occurrence. |
| 3198 | |
| 3199 | (It was already possible to do likewise in Info and in completion list |
| 3200 | buffers.) |
| 3201 | |
| 3202 | What's more, the sensitive areas of the buffer now highlight when you |
| 3203 | move the mouse over them. |
| 3204 | |
| 3205 | ** In a completion list buffer, the command RET now chooses the completion |
| 3206 | that is around or next to point. |
| 3207 | |
| 3208 | ** If you specify the foreground color for the `mode-line' face, and |
| 3209 | mode-line-inverse-video is non-nil, then the default background color |
| 3210 | is the usual foreground color. |
| 3211 | |
| 3212 | ** revert-buffer now preserves markers pointing within the unchanged |
| 3213 | text (if any) at the beginning and end of the file. |
| 3214 | |
| 3215 | ** Version control checkin and checkout preserve all markers if the |
| 3216 | file does not contain any of the magic version header sequences that |
| 3217 | are updated automatically by RCS and SCCS. If such version headers |
| 3218 | are present, checkin and checkout preserve a marker unless it comes |
| 3219 | between two such sequences. (So it's a good idea to put all the |
| 3220 | header sequences close together.) |
| 3221 | |
| 3222 | ** When a large deletion shuts off auto save temporarily in a buffer, |
| 3223 | you can now turn it on again by saving the buffer with C-x C-s (as was |
| 3224 | possible in Emacs 18). You can also turn it on again with M-1 M-x |
| 3225 | auto-save (as has been possible in Emacs 19). |
| 3226 | |
| 3227 | ** C-x r d now runs the command delete-rectangle. |
| 3228 | |
| 3229 | ** The new command imenu shows you a menu of interesting places in the |
| 3230 | current buffer and lets you select one; then it moves point there. |
| 3231 | The definition of interesting places depends on the major mode, but |
| 3232 | typically this includes function definitions and such. Normally, |
| 3233 | imenu displays the menu in a buffer; but if you bind it to a mouse |
| 3234 | event, it shows a mouse popup menu. |
| 3235 | |
| 3236 | ** You can make certain chosen buffers, that normally appear in a |
| 3237 | separate window, appear in special frames of their own. To do this, |
| 3238 | set special-display-buffer-names to a list of buffer names; any buffer |
| 3239 | whose name is in that list automatically gets a special frame when it |
| 3240 | is to be displayed in another window. |
| 3241 | |
| 3242 | A good value to try is ("*compilation*" "*grep*" "*TeX Shell*"). |
| 3243 | |
| 3244 | More generally, you can set special-display-regexps to a list of regular |
| 3245 | expressions; then each buffer whose name matches any of those regular |
| 3246 | expressions gets its own frame. |
| 3247 | |
| 3248 | The variable special-display-frame-alist specifies the frame |
| 3249 | parameters for these frames. It has a default value, so you don't |
| 3250 | need to set it. |
| 3251 | |
| 3252 | ** If you set sentence-end-double-space to nil, the fill commands |
| 3253 | expect just one space at the end of a sentence. (If you want the |
| 3254 | sentence commands to accept single spaces, you must modify the regexp |
| 3255 | sentence-end also.) |
| 3256 | |
| 3257 | ** You can suppress the startup echo area message by adding text like |
| 3258 | this to your .emacs file: |
| 3259 | |
| 3260 | (setq inhibit-startup-echo-area-message "YOUR-LOGIN-NAME") |
| 3261 | |
| 3262 | Simply setting inhibit-startup-echo-area-message to your login name is |
| 3263 | not sufficient to inhibit the message; Emacs explicitly checks whether |
| 3264 | .emacs contains an expression as shown above. Your login name must |
| 3265 | appear in the expression as a Lisp string constant. |
| 3266 | |
| 3267 | This way, you can easily inhibit the message for yourself if you wish, |
| 3268 | but thoughtless copying of your .emacs file will not inhibit the |
| 3269 | message for someone else. |
| 3270 | |
| 3271 | ** Outline minor mode now uses C-c C-o as a prefix instead of just C-c. |
| 3272 | |
| 3273 | ** In Outline mode, hide-subtree is now C-c C-d. (It was C-c C-h; but |
| 3274 | that is now a conventional way to ask for help about C-c commands.) |
| 3275 | |
| 3276 | ** There are two additional commands in Outline mode. |
| 3277 | M-x hide-sublevels |
| 3278 | hides all headers except the topmost N levels. |
| 3279 | M-x hide-other |
| 3280 | hides everything about the body that point is in |
| 3281 | plus the headers leading up from there to the top of the tree. |
| 3282 | |
| 3283 | ** In iso-transl and iso-insert, the sequences for entering A-ring and |
| 3284 | the AE ligature are now just A and E (plus the initial C-x 8 or Alt). |
| 3285 | You used to have to enter AA or AE, after the C-x 8 prefix of course. |
| 3286 | Likewise for lower case a-ring and ae. |
| 3287 | |
| 3288 | ** iso-transl now defines convenient Alt keys as well as the C-x 8 prefix. |
| 3289 | Instead of prefixing a sequence with C-x 8, you can add Alt to the |
| 3290 | first character of the sequence. For example, Alt-" a is now a way |
| 3291 | to enter an a-umlaut. |
| 3292 | |
| 3293 | ** CC mode is a greatly improved mode for C and C++. |
| 3294 | See the following page. |
| 3295 | |
| 3296 | ** tcl mode is a new major mode. It provides features for |
| 3297 | editing, indenting and running tcl programs. |
| 3298 | |
| 3299 | ** Compilation minor mode lets you parse error messages in any buffer, |
| 3300 | not just a normal compilation output buffer. Type M-x |
| 3301 | compilation-minor-mode to enable the minor mode; then C-c C-c jumps to |
| 3302 | the source location for the error at point, as in the `*compilation*' |
| 3303 | buffer. If you use compilation-minor-mode in an Rlogin buffer, it |
| 3304 | automatically accesses remote source files by ftp. |
| 3305 | |
| 3306 | ** Comint and shell mode changes: |
| 3307 | |
| 3308 | *** Comint modes (including Shell mode, GUD modes, etc.) now bind |
| 3309 | C-M-l to the command comint-show-output. This command scrolls the |
| 3310 | buffer to show the last batch of output from the subprogram. |
| 3311 | |
| 3312 | *** Completion in Comint modes now truly operates on the string before |
| 3313 | point, rather than the word that point is within. |
| 3314 | |
| 3315 | *** Comint mode file name completion ignores those files that end with a |
| 3316 | string in the new variable comint-completion-fignore. This variable's |
| 3317 | default value is nil. |
| 3318 | |
| 3319 | *** Shell mode uses the variable shell-completion-fignore to set |
| 3320 | comint-completion-fignore. The default value is nil, but some |
| 3321 | people prefer ("~" "#" "%"). |
| 3322 | |
| 3323 | *** The function `comint-watch-for-password-prompt' can be used to |
| 3324 | suppress echoing when a subprocess asks for a password. To use it, |
| 3325 | do this: |
| 3326 | |
| 3327 | (add-hook 'comint-output-filter-functions |
| 3328 | 'comint-watch-for-password-prompt) |
| 3329 | |
| 3330 | *** You can use M-x shell-strip-ctrl-m to strip ^M characters from |
| 3331 | process output. |
| 3332 | |
| 3333 | *** In Shell mode, TAB now completes environment variables, if possible, |
| 3334 | and expands directory references. |
| 3335 | |
| 3336 | *** You can use M-x comint-run to execute any program of your choice in |
| 3337 | a comint mode. Some programs such as shells, rlogin, and debuggers |
| 3338 | have their own specialized modes; this command is one way to use |
| 3339 | comint to run programs for which no such specialized mode exits. (You |
| 3340 | can also run a shell with M-x shell and run the program of your choice |
| 3341 | under the shell--but that gives you the specializations of Shell |
| 3342 | mode.) |
| 3343 | |
| 3344 | ** When you run GUD (M-x gdb, M-x dbx, and so on), you can use TAB |
| 3345 | to do file name completion in the minibuffer. |
| 3346 | |
| 3347 | The "Complete" menu includes an item for directory expansion. |
| 3348 | |
| 3349 | ** GUD working with future versions of GDB will permit TAB for |
| 3350 | GDB-style symbol completion. This will work with GDB 4.13. |
| 3351 | |
| 3352 | ** Rmail no longer gets new mail automatically when you visit an Rmail |
| 3353 | file specified by name--not even if it is your primary Rmail file. To |
| 3354 | get new mail, type `g'. This feature is an advantage because you now |
| 3355 | have a choice of whether to get new mail. (This change actually |
| 3356 | occurred in an earlier version, but wasn't listed here then, since it |
| 3357 | made the code do what the documentation already said.) |
| 3358 | |
| 3359 | ** Rmail now highlights certain fields automatically, when you use X |
| 3360 | windows. The variable rmail-highlighted-headers controls which |
| 3361 | fields. |
| 3362 | |
| 3363 | ** If you set rmail-summary-window-size to an integer, Rmail uses |
| 3364 | a window that many lines high for the summary buffer. |
| 3365 | |
| 3366 | ** rmail-input-menu is a new command that visits an Rmail file letting |
| 3367 | you choose which file with a mouse menu. rmail-output-menu is |
| 3368 | similar; it outputs the current message, using a mouse menu to choose |
| 3369 | which Rmail file. These commands use the variables |
| 3370 | rmail-secondary-file-directory and rmail-secondary-file-regexp. |
| 3371 | |
| 3372 | ** The mh-e package has been changed substantially. |
| 3373 | See the file ./MH-E-NEWS for details. |
| 3374 | |
| 3375 | ** The calendar and diary have new features. |
| 3376 | |
| 3377 | The menu bar for the calendar contains most of the calendar commands, |
| 3378 | arranged into logical categories. |
| 3379 | |
| 3380 | Mouse-2 now performs specific-date-related commands when clicked on a |
| 3381 | date in the calendar window and common three-month-related commands |
| 3382 | when clicked elsewhere in the calendar window. |
| 3383 | |
| 3384 | You can set up colored/shaded highlighting of holidays, diary entry |
| 3385 | dates, and today's date, by setting calendar-holiday-marker, |
| 3386 | diary-entry-marker, and calendar-today-marker to a face instead of a |
| 3387 | character. Using a special face is now the default if you are using a |
| 3388 | window system. |
| 3389 | |
| 3390 | ** The appt package for displaying appointment reminders has new |
| 3391 | features. |
| 3392 | |
| 3393 | *** The appt alarm window stays for the full duration of |
| 3394 | appt-display-duration. It no longer disappears when you start typing |
| 3395 | text. |
| 3396 | |
| 3397 | *** You can change the way the appointment window is created/deleted by |
| 3398 | setting the variables appt-disp-window-function and |
| 3399 | appt-delete-window-function. |
| 3400 | |
| 3401 | For instance, these variables can be set to functions that display |
| 3402 | appointments in pop-up frames, which are lowered or iconified after |
| 3403 | appt-display-duration seconds. |
| 3404 | |
| 3405 | ** desktop.el can now save a list of buffer-local variables, |
| 3406 | and saves more global ones. |
| 3407 | |
| 3408 | ** Pascal mode has been completely rewritten. It now features |
| 3409 | completing of function names, variables and type definitions around |
| 3410 | current point (like M-TAB does with lisp-symbols). There's also an |
| 3411 | outline mode (M-x pascal-outline) that hides the bodies of all |
| 3412 | functions you're not working with. |
| 3413 | |
| 3414 | ** Edebug has a number of changes: |
| 3415 | |
| 3416 | *** Edebug syntax error reporting is improved. |
| 3417 | |
| 3418 | *** Top-level forms and defining forms other than defun and defmacro may |
| 3419 | now be debugged with Edebug. |
| 3420 | |
| 3421 | *** Edebug specifications may now contain body, &define, name, arg or |
| 3422 | arglist, def-body, and def-form, to support definitions. |
| 3423 | |
| 3424 | *** edebug-all-defuns is renamed to edebug-all-defs. |
| 3425 | def-edebug-form-spec is replaced by def-edebug-form whose arguments |
| 3426 | are unevaluated. The old names are still available for now. |
| 3427 | |
| 3428 | *** Frequency counts and coverage data may be displayed for functions being |
| 3429 | debugged. |
| 3430 | |
| 3431 | *** A global break condition is now checked at every stop point. |
| 3432 | |
| 3433 | *** The previous condition at a breakpoint may now be edited. |
| 3434 | |
| 3435 | *** A new "next" mode stops only after expression evaluation. |
| 3436 | |
| 3437 | *** A new command, top-level-nonstop, does not even stop for unwind-protect, |
| 3438 | as top-level would. |
| 3439 | |
| 3440 | \f |
| 3441 | * Changes in CC mode in Emacs 19.23. |
| 3442 | |
| 3443 | `cc-mode' provides ANSI C, K&R C, and ARM C++ language editing. It |
| 3444 | represents the merge of c++-mode.el and c-mode.el. cc-mode provides a |
| 3445 | new, more flexible indentation engine so that indentation |
| 3446 | customization is more intuitive. There are two steps to calculating |
| 3447 | indentation: first, CC mode analyzes the line for syntactic content, |
| 3448 | then based on this content it applies user defined offsets and adds |
| 3449 | this offset to the indentation of some previous line. |
| 3450 | |
| 3451 | The syntactic analysis determines if the line describes a `statement', |
| 3452 | `substatement', `class-open', `member-init-intro', etc. These are |
| 3453 | described in detail with C-h v c-offsets-alist. You can change the |
| 3454 | offsets interactively with C-c C-o (c-set-offsets), or |
| 3455 | programmatically in your c-mode-common-hook, which is run both by |
| 3456 | c-mode and c++-mode. You can also set up "styles" in the same way |
| 3457 | that you could with c-mode.el. The variable c-basic-offset controls |
| 3458 | the basic offset given to a level of indentation. |
| 3459 | |
| 3460 | If, for example, you wanted to change this style: |
| 3461 | |
| 3462 | int foo (int i) |
| 3463 | { |
| 3464 | switch (i) { |
| 3465 | case 1: |
| 3466 | printf ("its a foo\n"); |
| 3467 | break; |
| 3468 | default: |
| 3469 | printf ("don't know what it is\n"); |
| 3470 | break; |
| 3471 | } |
| 3472 | } |
| 3473 | |
| 3474 | into this: |
| 3475 | |
| 3476 | int foo (int i) |
| 3477 | { |
| 3478 | switch (i) { |
| 3479 | case 1: |
| 3480 | printf ("its a foo\n"); |
| 3481 | break; |
| 3482 | default: |
| 3483 | printf ("don't know what it is\n"); |
| 3484 | break; |
| 3485 | } |
| 3486 | } |
| 3487 | |
| 3488 | you could add the following to your .emacs file: |
| 3489 | |
| 3490 | (defun my-c-mode-common-hook () |
| 3491 | (c-set-offset 'case-label 2) |
| 3492 | (c-set-offset 'statement-case-intro 2)) |
| 3493 | (add-hook 'c-mode-common-hook 'my-c-mode-common-hook) |
| 3494 | |
| 3495 | ** New variables: |
| 3496 | |
| 3497 | c-offsets-alist contains an association list of syntactic symbols and |
| 3498 | their relative offsets. Do a "C-h v c-offsets-alist" to get a list of |
| 3499 | all syntactic symbols currently defined, and their meanings. You |
| 3500 | should not change this variable directly; use the supplied interface |
| 3501 | commands c-set-offset and c-set-style. |
| 3502 | |
| 3503 | c-mode-common-hook is run by both c-mode and c++-mode during their |
| 3504 | common initializations. You should put any customizations that are |
| 3505 | the same for both C and C++ into this hook. |
| 3506 | |
| 3507 | The variable c-strict-semantics-p is used mainly for debugging. When |
| 3508 | non-nil, CC mode signals an error if it returns a syntactic symbol |
| 3509 | that can't be found in c-offsets-alist. |
| 3510 | |
| 3511 | If you want CC mode to echo the syntactic analysis for a particular |
| 3512 | line when you hit the TAB key, set c-echo-semantic-information-p to |
| 3513 | non-nil. |
| 3514 | |
| 3515 | c-basic-offset controls the standard amount of offset for a level of |
| 3516 | indentation. You can set a syntactic symbol's offset to + or - as a |
| 3517 | short-hand for positive or negative c-basic-offset. |
| 3518 | |
| 3519 | c-comment-only-line-offset lets you control indentation given to lines |
| 3520 | which contain only a comment, in the case of C++ line style comments, |
| 3521 | or the introduction to a C block comment. Comment-only lines at |
| 3522 | column zero can be anchored there independent of the indentation given |
| 3523 | to other comment-only lines. |
| 3524 | |
| 3525 | c-block-comments-indent-p controls the style of C block comment |
| 3526 | re-indentation. If you put leading stars in front of comment |
| 3527 | continuation lines, you should set this variable to nil. |
| 3528 | |
| 3529 | c-cleanup-list is a list describing certain C and C++ constructs to be |
| 3530 | "cleaned up" as they are typed, but only when the auto-newline feature |
| 3531 | is turned on. In C++, make sure this variable contains at least |
| 3532 | 'scope-operator so that double colons will not be separated by a |
| 3533 | newline. |
| 3534 | |
| 3535 | Colons (`:') and braces (`{` and `}') are special in C and C++. For |
| 3536 | certain constructs, you may like them to hang on the right edge of the |
| 3537 | code, or you may like them to start a new line of code. You can use |
| 3538 | the two variables c-hanging-braces-alist and c-hanging-colons-alist |
| 3539 | to control whether newlines are placed before and/or after colons and |
| 3540 | braces when certain C and C++ constructs are entered. For example, |
| 3541 | you can control whether the colon that introduces a C++ member |
| 3542 | initialization list hangs on the right edge, starts a new line, or has |
| 3543 | no newlines either before or after it. |
| 3544 | |
| 3545 | c-special-indent-hook is run after a line is indented by CC mode. You |
| 3546 | can perform any custom indentations here. |
| 3547 | |
| 3548 | c-delete-function is the function that is called when a single |
| 3549 | character is deleted with the c-electric-delete command (DEL). |
| 3550 | |
| 3551 | c-electric-pound-behavior describes what happens when you enter the |
| 3552 | `#' that introduces a cpp macro. |
| 3553 | |
| 3554 | If c-tab-always-indent is neither t nor nil, then TAB inserts a tab |
| 3555 | when within strings, comments, and cpp directives, but it reindents |
| 3556 | the line unconditionally. |
| 3557 | |
| 3558 | c-inhibit-startup-warnings-p inhibits warnings about any old |
| 3559 | version of Emacs you might be running, which could be incompatible |
| 3560 | with cc-mode. |
| 3561 | |
| 3562 | ** There are two new minor-mode features in CC mode: auto-newline and |
| 3563 | hungry-delete. Auto-newline inserts newlines automatically as you |
| 3564 | type certain constructs. Hungry-delete consumes all preceding |
| 3565 | whitespace (spaces, tabs, and newlines) when the delete key is hit. |
| 3566 | You can toggle auto-newline on and off on a per-buffer basis by |
| 3567 | hitting C-c C-a. You can toggle hungry-delete on and off by hitting |
| 3568 | C-c C-d. You can toggle them both on and off together with C-c C-t. |
| 3569 | |
| 3570 | ** Slash (`/') and star (`*') are now both electric characters. |
| 3571 | |
| 3572 | ** New commands: |
| 3573 | |
| 3574 | The new C-c C-o (c-set-offset) command can be used to interactively change |
| 3575 | the offset for a particular syntactic symbol. |
| 3576 | |
| 3577 | The new command C-c : (c-scope-operator) inserts the C++ scope operator in |
| 3578 | c++-mode only. |
| 3579 | |
| 3580 | The new command C-c C-q (c-indent-defun) indents the entire enclosing |
| 3581 | top-level function or class. |
| 3582 | |
| 3583 | The new command C-c C-s (c-show-semantic-information) echos the current |
| 3584 | syntactic analysis without re-indenting the current line. |
| 3585 | |
| 3586 | The new commands M-x c-forward-into-nomenclature and M-x |
| 3587 | c-backward-into-nomenclature (currently otherwise unbound to a key |
| 3588 | sequence), make movement easier when using the C++ variable naming |
| 3589 | convention of VariableNamesWithoutUnderscoresButEachWordCapitalized. |
| 3590 | |
| 3591 | ** Command from c-mode.el that have been renamed in cc-mode.el: |
| 3592 | |
| 3593 | electric-c-brace => c-electric-brace |
| 3594 | electric-c-semi => c-electric-semi&comma |
| 3595 | electric-c-sharp-sign => c-electric-pound |
| 3596 | mark-c-function => c-mark-function |
| 3597 | electric-c-terminator => c-electric-colon |
| 3598 | indent-c-exp => c-indent-exp |
| 3599 | set-c-style => c-set-style |
| 3600 | |
| 3601 | ** Variables from c-mode.el that are obsolete with cc-mode.el: |
| 3602 | |
| 3603 | c-indent-level |
| 3604 | c-brace-imaginary-offset |
| 3605 | c-brace-offset |
| 3606 | c-argdecl-indent |
| 3607 | c-label-offset |
| 3608 | c-continued-statement-offset |
| 3609 | c-continued-brace-offset |
| 3610 | |
| 3611 | \f |
| 3612 | * Lisp programming changes in Emacs 19.23. |
| 3613 | |
| 3614 | ** To pop up a dialog box, call x-popup-dialog. |
| 3615 | It takes two arguments, POSITION and CONTENTS. |
| 3616 | |
| 3617 | POSITION specifies which frame to place the dialog box over; |
| 3618 | the dialog box always goes on the center of the frame. |
| 3619 | POSITION may be a mouse event, a window, a frame, |
| 3620 | or t meaning use the frame that the mouse is in. |
| 3621 | |
| 3622 | CONTENTS specifies the contents of the dialog box. |
| 3623 | It looks like a single pane of a popup menu: |
| 3624 | (TITLE ITEM1 ITEM2 ...), where each ITEM has the form (STRING . VALUE). |
| 3625 | The return value is VALUE from the chosen item. |
| 3626 | |
| 3627 | An ITEM may also be just a string--that makes a nonselectable item. |
| 3628 | An ITEM may also be nil--that means to put all preceding items |
| 3629 | on the left of the dialog box and all following items on the right. |
| 3630 | (By default, approximately half appear on each side.) |
| 3631 | |
| 3632 | If your Emacs is not using an X toolkit, then it cannot display a |
| 3633 | real dialog box; so instead it displays a pop-up menu in the center |
| 3634 | of the frame. |
| 3635 | |
| 3636 | ** y-or-n-p, yes-or-no-p and map-y-or-n-p now use menus or dialog boxes |
| 3637 | to ask their question(s) if the command that is running was reached by |
| 3638 | a mouse event. |
| 3639 | |
| 3640 | If you want to control which way these functions work, bind the |
| 3641 | variable last-nonmenu-event around the call. These functions use the |
| 3642 | keyboard if that variable holds a keyboard event (actually, any |
| 3643 | non-list); they use the mouse if that variable holds a mouse event |
| 3644 | (actually, any list). |
| 3645 | |
| 3646 | ** The mouse-face property is now implemented, both in overlays and as |
| 3647 | a text property. It specifies a face to use when the mouse is in the |
| 3648 | range of text for which the property is specified. |
| 3649 | |
| 3650 | ** When text has a non-nil `intangible' property, you cannot move point |
| 3651 | within it or right before it. If you try, point actually moves to the |
| 3652 | end of the intangible text. Note that this means that backward-char |
| 3653 | is a no-op when there is an intangible character to the left of point. |
| 3654 | |
| 3655 | ** minibuffer-exit-hook is a new normal hook that is run when you |
| 3656 | exit the minibuffer. |
| 3657 | |
| 3658 | ** The variable x-cross-pointer-shape specifies the cursor shape to use |
| 3659 | when the mouse is over text that has a mouse-face property. |
| 3660 | |
| 3661 | ** The new variable interpreter-mode-alist specifies major modes to use |
| 3662 | for shell scripts that specify a command interpreter. Its elements |
| 3663 | look like (INTERPRETER . MODE); for example, ("perl" . perl-mode) is |
| 3664 | one element present by default. This feature applies only when the |
| 3665 | file name doesn't indicate which mode to use. |
| 3666 | |
| 3667 | ** If you use a minibuffer-only frame, set the variable |
| 3668 | minibuffer-auto-raise to t, and entering the minibuffer will then |
| 3669 | raise the minibuffer frame. |
| 3670 | |
| 3671 | ** If pop-up-frames is t, display-buffer now looks for an existing |
| 3672 | window in any visible frame, showing the specified buffer, and uses |
| 3673 | such a window in preference to making a new frame. |
| 3674 | |
| 3675 | ** In the functions next-window, previous-window, next-frame, |
| 3676 | previous-frame, get-buffer-window, get-lru-window, get-largest-window |
| 3677 | and delete-windows-on, if you specify `visible' for the last argument, |
| 3678 | it means to consider all visible frames. |
| 3679 | |
| 3680 | ** Mouse events now give the X and Y coordinates in pixels, rather than |
| 3681 | in characters. You can convert these values to characters by dividing by |
| 3682 | the values of (frame-char-width) and (frame-char-height). |
| 3683 | |
| 3684 | ** The new functions mouse-pixel-position and set-mouse-pixel-position |
| 3685 | read and set the mouse position in units of pixels. The existing |
| 3686 | functions mouse-position and set-mouse-position continue to work with |
| 3687 | units of characters. |
| 3688 | |
| 3689 | ** The new function compute-motion is useful for computing the width |
| 3690 | of certain text when it is displayed. |
| 3691 | |
| 3692 | ** The function vertical-motion now takes an option second argument WINDOW |
| 3693 | which says which window to use for the display calculations. |
| 3694 | |
| 3695 | vertical-motion always operates on the current buffer. |
| 3696 | It is ok to specify a window displaying some other buffer. |
| 3697 | Then vertical-motion uses the width, hscroll and display-table of |
| 3698 | the specified window, but still scans the current buffer. |
| 3699 | |
| 3700 | ** An error no longer sets last-command to t; the value of last-command |
| 3701 | does reflect the previous command (the one that got an error). |
| 3702 | |
| 3703 | If you do not want a particular command to be recognized as the |
| 3704 | previous command in the case where it got an error, you must code that |
| 3705 | command to prevent this. Set this-command to t at the beginning of |
| 3706 | the command, and set this-command back to its proper value at the end, |
| 3707 | like this: |
| 3708 | |
| 3709 | (defun foo (args...) |
| 3710 | (interactive ...) |
| 3711 | (setq this-command t) |
| 3712 | ...do the work... |
| 3713 | (setq this-command 'foo)) |
| 3714 | |
| 3715 | or like this: |
| 3716 | |
| 3717 | (defun foo (args...) |
| 3718 | (interactive ...) |
| 3719 | (let ((old-this-command this-command)) |
| 3720 | (setq this-command t) |
| 3721 | ...do the work... |
| 3722 | (setq this-command old-this-command))) |
| 3723 | |
| 3724 | The undo and yank commands do this. |
| 3725 | |
| 3726 | ** If you specify an explicit title for a new frame when you create it, |
| 3727 | the title is used as the resource name when looking up X resources to |
| 3728 | control the shape of that frame. If you don't specify the frame title, |
| 3729 | the value of x-resource-name is used, as before. |
| 3730 | |
| 3731 | ** The frame parameter user-position, if non-nil, says that the user |
| 3732 | has specified the frame position. Emacs reports this to the window |
| 3733 | manager, to tell it not to override the position that the user |
| 3734 | specified. |
| 3735 | |
| 3736 | ** Major modes can now set change-major-mode-hook to arrange for state |
| 3737 | to be cleaned up when the user switches to a new major mode. The function |
| 3738 | kill-all-local-variables runs this hook. For best results, make the hook a |
| 3739 | buffer-local variable so that it will disappear after doing its job and will |
| 3740 | not interfere with the subsequent major mode. |
| 3741 | |
| 3742 | ** The new variable overriding-local-map, if non-nil, specifies a keymap |
| 3743 | that overrides the current local map, all minor mode keymaps, and all |
| 3744 | text property keymaps. Incremental search uses this feature to override |
| 3745 | all other keymaps temporarily. |
| 3746 | |
| 3747 | ** A key definition in a menu keymap can now have additional structure: |
| 3748 | in addition to (ITEMNAME [HELPSTRING] . COMMAND) which was allowed |
| 3749 | before, the form (ITEMNAME [HELPSTRING] (...) . COMMAND) is |
| 3750 | allowed. (HELPSTRING is optional, and is not currently used.) |
| 3751 | |
| 3752 | Here (...) represents a sublist containing information about keyboard |
| 3753 | key sequences that run the same command COMMAND. Displaying the menu |
| 3754 | automatically creates and updates the sublist when appropriate; you |
| 3755 | need never set these up yourself. |
| 3756 | |
| 3757 | lookup-key, key-binding, and similar functions return just COMMAND, |
| 3758 | not the whole binding. |
| 3759 | |
| 3760 | To precompute this information for a given keymap, you can do |
| 3761 | (x-popup-menu nil KEYMAP). |
| 3762 | |
| 3763 | ** When you specify coordinates for x-popup-menu as a list ((XOFFSET |
| 3764 | YOFFSET) WINDOW), the coordinates are now measured in pixels. |
| 3765 | |
| 3766 | ** where-is-internal now takes just four arguments: |
| 3767 | DEFINITION KEYMAP FIRSTONLY NOINDIRECT. |
| 3768 | The single argument KEYMAP replaces two arguments KEYMAP and KEYMAP1. |
| 3769 | |
| 3770 | If KEYMAP is non-nil, where-is-internal searches only KEYMAP and the |
| 3771 | global keymap. |
| 3772 | |
| 3773 | If KEYMAP is nil, where-is-internal searches all the currently active |
| 3774 | keymaps, but finds the active keymaps as if overriding-local-map were |
| 3775 | nil. |
| 3776 | |
| 3777 | If you pass a list of the form (keymap) as KEYMAP, where-is-internal |
| 3778 | searches only the global map. (This is not a special case--it follows |
| 3779 | from the specifications above.) |
| 3780 | |
| 3781 | If you pass the value of overriding-local-map as KEYMAP, where-is-internal |
| 3782 | searches in exactly the same was as command execution does. |
| 3783 | |
| 3784 | ** Use the macro define-derived-mode to define a new major mode that |
| 3785 | inherits the definition of another major mode. Here's how to define a |
| 3786 | command named hypertext-mode that inherits from the command text-mode: |
| 3787 | |
| 3788 | (define-derived-mode hypertext-mode text-mode "Hypertext" |
| 3789 | "Major mode for hypertext.\n\n\\{hypertext-mode-map}" |
| 3790 | (setq case-fold-search nil)) |
| 3791 | |
| 3792 | (define-key hypertext-mode-map [down-mouse-3] 'do-hyper-link) |
| 3793 | |
| 3794 | The new mode has its own keymap, which inherits from that of the |
| 3795 | original mode. It also has its own syntax and abbrev tables, which |
| 3796 | are initialized by copying those of the original mode. It also has |
| 3797 | its own mode hook. All are given names made by appending a suffix |
| 3798 | to the name of the new mode. |
| 3799 | |
| 3800 | ** A syntax table can now inherit the data for some characters from |
| 3801 | standard-syntax-table, while specifying other characters itself. |
| 3802 | Syntax code 13 means "inherit this character from the standard syntax |
| 3803 | table." In modify-syntax-entry, the character `@' represents this code. |
| 3804 | |
| 3805 | The function `make-syntax-table' now creates a syntax table which |
| 3806 | inherits all letters and control characters (0 to 31 and 128 to 255) |
| 3807 | from the standard syntax table, while copying the other characters |
| 3808 | from the standard syntax table. Most syntax tables in Emacs are set |
| 3809 | up this way. |
| 3810 | |
| 3811 | This sort of inheritance is useful for people who set up character |
| 3812 | sets with additional alphabetic characters in the range 128 to 255. |
| 3813 | Just changing the standard syntax for these characters affects all |
| 3814 | major modes. |
| 3815 | |
| 3816 | ** The new function transpose-regions swaps two regions of the buffer. |
| 3817 | It preserves the markers in those two regions, so that they stay with |
| 3818 | the surrounding text as it is swapped. |
| 3819 | |
| 3820 | ** revert-buffer now runs before-revert-hook at the beginning and |
| 3821 | after-revert-hook at the end. These can be used by minor modes |
| 3822 | that need to clean up state variables. |
| 3823 | |
| 3824 | ** The new function get-char-property is like get-text-property, but |
| 3825 | checks for overlays with properties as well as for text properties. |
| 3826 | It checks for overlays first, in order of descending priority, and |
| 3827 | text properties last. |
| 3828 | |
| 3829 | get-char-property allows windows as the OBJECT argument, as well |
| 3830 | as buffers and strings. If you specify a window, then only overlays |
| 3831 | active on that window are considered. |
| 3832 | |
| 3833 | ** Overlays can have the `invisible' property. |
| 3834 | |
| 3835 | ** The function insert-file-contents now takes an optional fifth |
| 3836 | argument called REPLACE. If this is t, it means to replace the |
| 3837 | contents of the buffer (actually, just the accessible portion) |
| 3838 | with the contents of the file. |
| 3839 | |
| 3840 | This is better than simply deleting and inserting the whole thing |
| 3841 | because (1) it preserves some marker positions and (2) it puts less |
| 3842 | data in the undo list. |
| 3843 | |
| 3844 | ** The variable inhibit-first-line-modes-regexps specifies classes of |
| 3845 | file names for which -*- on the first line should not be looked for. |
| 3846 | |
| 3847 | ** The variables before-change-functions and after-change-functions |
| 3848 | hold lists of functions to call before and after a change in the |
| 3849 | buffer's text. They work much like before-change-function and |
| 3850 | after-change-function, except that they hold a list of functions |
| 3851 | instead of just one. |
| 3852 | |
| 3853 | These variables will eventually make before-change-function and |
| 3854 | after-change-function obsolete. |
| 3855 | |
| 3856 | ** The variable kill-buffer-query-functions holds a list of functions |
| 3857 | to be called with no arguments when a buffer is about to be killed. |
| 3858 | (That buffer is the current buffer when the function is called.) |
| 3859 | If any of the functions returns nil, the buffer is not killed |
| 3860 | (and the remaining functions in the list are not called). |
| 3861 | |
| 3862 | ** The variable kill-emacs-query-functions holds a list of functions |
| 3863 | to be called with no arguments when you ask to exit Emacs. |
| 3864 | If any of the functions returns nil, the exit is canceled |
| 3865 | (and the remaining functions in the list are not called). |
| 3866 | |
| 3867 | ** The argument for buffer-disable-undo is now optional, |
| 3868 | like the argument for buffer-enable-undo. |
| 3869 | |
| 3870 | ** The new variable system-configuration holds the canonical three-part |
| 3871 | GNU configuration name for which Emacs was built. |
| 3872 | |
| 3873 | ** The function system-name now tries harder to return a fully qualified |
| 3874 | domain name. |
| 3875 | |
| 3876 | ** The variable emacs-major-version holds the major version number |
| 3877 | of Emacs. (Currently 19.) |
| 3878 | |
| 3879 | ** The variable emacs-minor-version holds the minor version number |
| 3880 | of Emacs. (Currently 23.) |
| 3881 | |
| 3882 | ** The default value of comint-input-autoexpand is now nil. |
| 3883 | However, Shell mode sets it from the value of shell-input-autoexpand, |
| 3884 | whose default value is `history'. |
| 3885 | |
| 3886 | ** The new function set-process-window-size specifies the terminal window |
| 3887 | size for a subprocess. On some systems it sends the subprocess a signal |
| 3888 | to let it know that the size has changed. |
| 3889 | |
| 3890 | ** %P is a new way to display a percentage in the mode line. It |
| 3891 | displays the percentage of the buffer text that is above the *bottom* |
| 3892 | of the window (which includes the text visible, in the window as well |
| 3893 | as the text above the top). It displays `Top' as well as the |
| 3894 | percentage if the top of the buffer is visible on screen. |
| 3895 | |
| 3896 | ** %+ in the mode line specs displays `*' if the buffer is modified, |
| 3897 | and otherwise `-'. It never displays `%', as `%*' would do; whether the |
| 3898 | buffer is read-only has no effect on %+. |
| 3899 | |
| 3900 | ** The new functions ffloor, fceiling, fround and ftruncate take a |
| 3901 | floating point argument and return a floating point result whose value |
| 3902 | is a nearby integer. ffloor returns the nearest integer below; fceiling, |
| 3903 | the nearest integer above; ftruncate, the nearest integer in the |
| 3904 | direction towards zero; fround, the nearest integer. |
| 3905 | |
| 3906 | ** Setting `print-escape-newlines' to a non-nil value now also makes |
| 3907 | formfeeds print as ``\f''. |
| 3908 | |
| 3909 | ** auto-mode-alist now has a new feature. If an element has the form |
| 3910 | (REGEXP FUNCTION t), and REGEXP matches the file name, then after calling |
| 3911 | FUNCTION, Emacs deletes the part of the file name that matched REGEXP |
| 3912 | and then searches auto-mode-alist again for a new match. |
| 3913 | |
| 3914 | This is useful for uncompression packages. An entry of this sort for |
| 3915 | .gz can uncompress the file and then put the uncompressed file in the |
| 3916 | proper mode according to the name sans .gz. |
| 3917 | |
| 3918 | ** The new function emacs-pid returns the process ID number of Emacs. |
| 3919 | |
| 3920 | ** user-login-name now consistently checks the LOGNAME environment |
| 3921 | variable before USER. user-original-login-name is obsolete, since it |
| 3922 | provides the same functionality. To ignore the environment variables, |
| 3923 | use user-real-login-name. |
| 3924 | |
| 3925 | ** There is a more general way of handling the system-specific X |
| 3926 | keysyms. Set the variable system-key-alist to an alist containing |
| 3927 | elements of the form (CODE . SYMBOL), where CODE is the numeric keysym |
| 3928 | code minus the "vendor specific" bit, and symbol is the name for the |
| 3929 | function key. |
| 3930 | |
| 3931 | ** You can use the variable command-line-functions to set up functions |
| 3932 | to process unrecognized command line arguments. The variable's value |
| 3933 | should be a list of functions of no arguments. The functions are |
| 3934 | called successively until one of them returns non-nil. |
| 3935 | |
| 3936 | Each function should access the free variables argi (the current |
| 3937 | argument) and command-line-args-left (the remaining arguments). The |
| 3938 | function should return non-nil only if it recognizes and processes the |
| 3939 | argument in argi. If it does so, it may consume following arguments |
| 3940 | as well by removing them from command-line-args-left. |
| 3941 | |
| 3942 | ** There's a new way for a magic file name handler to run a primitive |
| 3943 | and inhibit handling of the file name. Here is how to do it: |
| 3944 | |
| 3945 | (let ((inhibit-file-name-handlers |
| 3946 | (cons 'ange-ftp-file-handler |
| 3947 | (and (eq inhibit-file-name-operation operation) |
| 3948 | inhibit-file-name-handlers))) |
| 3949 | (inhibit-file-name-operation operation)) |
| 3950 | (apply this-operation args)) |
| 3951 | |
| 3952 | The function find-file-name-handler now takes two arguments. The |
| 3953 | second argument is OPERATION, the operation for which the handler is |
| 3954 | being sought. |
| 3955 | |
| 3956 | People have suggested that the second argument should be optional, for |
| 3957 | backward compatibility. It would be nice if that were possible, but |
| 3958 | it is not. There is simply no way for find-file-name-handler to do |
| 3959 | the right thing without receiving the proper value for its second |
| 3960 | argument. |
| 3961 | |
| 3962 | ** The variable completion-regexp-list affects the completion |
| 3963 | primitives try-completion and all-completions. They consider |
| 3964 | only the possible completions that match each regexp in the list. |
| 3965 | |
| 3966 | ** Case conversion in the function replace-match has been changed. |
| 3967 | |
| 3968 | The old behavior was this: if any word in the old text was |
| 3969 | capitalized, replace-match capitalized each word of the replacement |
| 3970 | text. |
| 3971 | |
| 3972 | The new behavior is this: if the first word in the old text is capitalized, |
| 3973 | replace-match capitalizes the first word of the replacement text. |
| 3974 | |
| 3975 | ** You can now specify a case table with CANON non-nil and EQV nil. |
| 3976 | Then the EQV part of the case table is deduced from CANON. |
| 3977 | |
| 3978 | ** The new function minibuffer-prompt takes no arguments and returns |
| 3979 | the current minibuffer prompt string. |
| 3980 | |
| 3981 | The new function minibuffer-prompt-width takes no arguments and |
| 3982 | returns the display width of the minibuffer prompt string. |
| 3983 | |
| 3984 | ** The new function frame-first-window returns the window at the |
| 3985 | upper left corner of a given frame. |
| 3986 | |
| 3987 | ** wholenump is a new alias for natnump. |
| 3988 | |
| 3989 | ** The variable installation-directory, if non-@code{nil}, names a |
| 3990 | directory within which to look for the `lib-src' and `etc' |
| 3991 | subdirectories. This is non-nil when Emacs can't find those |
| 3992 | directories in their standard installed locations, but can find them |
| 3993 | near where the Emacs executable was found. |
| 3994 | |
| 3995 | ** invocation-name and invocation-directory are now variables as well |
| 3996 | as functions. The variable values are the same values that the |
| 3997 | functions return: the Emacs program name sans directories, and the |
| 3998 | directory it was found in. (invocation-directory may be nil, if Emacs |
| 3999 | can't determine which directory it should be.) |
| 4000 | |
| 4001 | ** Installation change regarding version number counting. |
| 4002 | |
| 4003 | The version number of an Emacs executable contains three numbers. |
| 4004 | The first two describe the Emacs release and the third increments |
| 4005 | each time you build Emacs. |
| 4006 | |
| 4007 | Now the file version.el contains only the first two version numbers. |
| 4008 | The third component is now determined on the basis of the names of the |
| 4009 | existing executable files. This means that version.el is not altered |
| 4010 | by building Emacs. |
| 4011 | |
| 4012 | |
| 4013 | \f |
| 4014 | * Changes in 19.22. |
| 4015 | |
| 4016 | ** The mouse click M-mouse-2 now inserts the current secondary |
| 4017 | selection (from Emacs or any other X client) where you click. |
| 4018 | It does not move point. |
| 4019 | This command is called mouse-yank-secondary. |
| 4020 | |
| 4021 | mouse-kill-secondary no longer has a key binding by default. |
| 4022 | Clicking M-mouse-3 (mouse-secondary-save-then-kill) twice |
| 4023 | may be a convenient enough way of killing the secondary selection. |
| 4024 | Or perhaps there should be a keyboard binding for killing the |
| 4025 | secondary selection. Any suggestions? |
| 4026 | |
| 4027 | ** New packages: |
| 4028 | |
| 4029 | *** `icomplete' provides character-by-character information |
| 4030 | about what you could complete if you type TAB. |
| 4031 | |
| 4032 | *** `avoid' moves the mouse away from point so that it doesn't hide |
| 4033 | your typing. |
| 4034 | |
| 4035 | *** `shadowfile' helps you update files that are supposed to be stored |
| 4036 | identically in different places (perhaps on different machines). |
| 4037 | |
| 4038 | ** C-h p now knows about four additional keywords: data, faces, mouse, |
| 4039 | and matching. |
| 4040 | |
| 4041 | ** The key for starting an inferior Lisp process, in Lisp mode, |
| 4042 | is now C-c C-z instead of C-c C-l. |
| 4043 | |
| 4044 | ** When the VC commands ask whether to save the buffer, if you say no, |
| 4045 | they signal an error. This is so that you won't operate on the wrong |
| 4046 | data. |
| 4047 | |
| 4048 | ** ISO Accents mode now supports `"s' as a way of typing German sharp s. |
| 4049 | |
| 4050 | ** By default, comint buffers (including Shell mode and debuggers) |
| 4051 | no longer try to scroll to keep the cursor on the bottom line. |
| 4052 | This feature was added in 19.21 but did not work smoothly enough. |
| 4053 | |
| 4054 | ** Emacs now handles the window manager "delete window" operation. |
| 4055 | |
| 4056 | ** Display of buffers with text properties is much faster now. |
| 4057 | |
| 4058 | ** The feature previously announced whereby `insert' does not inherit |
| 4059 | text properties from surrounding text was not fully implemented |
| 4060 | before; but now it is. use `insert-and-inherit' if you wish to |
| 4061 | inherit sticky properties from the surrounding text. |
| 4062 | |
| 4063 | ** The functions next-property-change, previous-property-change, |
| 4064 | next-single-property-change, and previous-single-property-change |
| 4065 | now take one additional optional argument LIMIT that is a position at |
| 4066 | which to stop scanning. If scan ends without finding the property |
| 4067 | change sought, these functions return the specified limit. |
| 4068 | |
| 4069 | The value returned by previous-single-property-change and |
| 4070 | previous-property-change, when they do find a change, is now one |
| 4071 | greater than what it used to be. It is the position between the two |
| 4072 | characters whose properties differ, which is one greater than the |
| 4073 | position of the first character found (while scanning back) with |
| 4074 | different properties. |
| 4075 | |
| 4076 | |
| 4077 | \f |
| 4078 | * User editing changes in version 19.21. |
| 4079 | |
| 4080 | ** ISO Accents mode supports four additional characters: |
| 4081 | A-with-ring (entered as /A), AE ligature (entered as /E), |
| 4082 | and their lower-case equivalents. |
| 4083 | |
| 4084 | |
| 4085 | \f |
| 4086 | * User editing changes in version 19.20. |
| 4087 | (See following page for Lisp programming changes.) |
| 4088 | |
| 4089 | Note that some of these changes were made subsequent to the Emacs 19.20 |
| 4090 | editions of the Emacs manual and Emacs Lisp manual; therefore, if you |
| 4091 | have those editions, do read this page. |
| 4092 | |
| 4093 | ** Dragging with mouse button 1 now puts the selected region |
| 4094 | in the kill ring so you can paste it into other X applications. |
| 4095 | |
| 4096 | ** Double and triple clicks with button 1 now behave as in xterm, |
| 4097 | selecting the word or line surrounding where you click. If you drag |
| 4098 | after the last click, you can select a range of words or lines. |
| 4099 | |
| 4100 | ** You can use button 3 to extend a mouse-selected region, as in xterm. |
| 4101 | This works for regions selected either by dragging Mouse-1 or by |
| 4102 | multiple-clicking Mouse-1. Clicking Mouse-3 moves the end of the |
| 4103 | region that is (initially) nearer to where you click. |
| 4104 | |
| 4105 | If the selection was first made by multiple-clicking Mouse-1, and thus |
| 4106 | consists of entire words or lines, Mouse-3 preserves that state. |
| 4107 | |
| 4108 | As before, clicking Mouse-3 again in the same place kills the region |
| 4109 | thus selected. |
| 4110 | |
| 4111 | ** The secondary selection commands, M-Mouse-1 and M-Mouse-3, have been |
| 4112 | likewise modified. |
| 4113 | |
| 4114 | ** You can now search for strings and regexps using the Edit menu bar menu. |
| 4115 | |
| 4116 | ** You can now access bookmarks using the Bookmark submenu in the File |
| 4117 | menu in the menu bar. |
| 4118 | |
| 4119 | ** ISO Accents mode, a buffer-local minor mode, provides a convenient |
| 4120 | way to type certain non-ASCII characters. It makes the characters `, |
| 4121 | ', ", ^, ~ and / serve as modifiers for the following letter. ` and ' |
| 4122 | add accents, " adds an umlaut or dieresis, ^ adds a circumflex, ~ |
| 4123 | adds a tilde, and / adds a slash to the following letter. |
| 4124 | |
| 4125 | If the following character is not a letter, or cannot be modified as |
| 4126 | requested, then both characters stand for themselves. If you |
| 4127 | duplicate the modifier accent character, that enters the corresponding |
| 4128 | ISO non-spacing accent character (thus, '' enters the ISO acute-accent |
| 4129 | character). To enter a modifier character itself, type it followed by |
| 4130 | a space. |
| 4131 | |
| 4132 | This feature can be used whenever a key sequence is expected: for |
| 4133 | ordinary insertion, for searching, and for certain command arguments. |
| 4134 | |
| 4135 | A few special combinations: |
| 4136 | |
| 4137 | ~c => c with cedilla |
| 4138 | ~d => d with stroke |
| 4139 | ~< => left guillemot |
| 4140 | ~> => right guillemot |
| 4141 | |
| 4142 | ** iso-transl.el is a new library that replaces iso-insert.el. |
| 4143 | It defines C-x 8 as an insertion prefix for the ISO characters |
| 4144 | between 128 and 255, much like iso-insert, except that iso-transl |
| 4145 | works even in searches and help commands--wherever a key sequence |
| 4146 | is expected. |
| 4147 | |
| 4148 | To define case-conversion for these characters for ISO 8859/1, |
| 4149 | load the library iso-syntax. (This is not new.) |
| 4150 | |
| 4151 | ** M-TAB in Text mode now runs the command ispell-complete-word |
| 4152 | which performs completion using the spelling dictionary. |
| 4153 | |
| 4154 | The spelling correction submenu now includes this command |
| 4155 | and another command which completes a word fragment (that is, |
| 4156 | it doesn't assume that the text to be completed starts at the |
| 4157 | beginning of a word. |
| 4158 | |
| 4159 | ** In incremental search, you can use M-y to yank the most recent kill |
| 4160 | into the search string. |
| 4161 | |
| 4162 | ** The new function ispell-message checks the spelling of a message |
| 4163 | you are about to send or post. It ignores text cited from other |
| 4164 | messages. |
| 4165 | |
| 4166 | To automatically check all your outgoing messages, include the |
| 4167 | following line in your .emacs file: |
| 4168 | (setq news-inews-hook (setq mail-send-hook 'ispell-message)) |
| 4169 | |
| 4170 | ** There is now a separate minibuffer history list for the names of |
| 4171 | extended commands. This history list is used by M-x when reading |
| 4172 | the command name. The motivation for this is to prevent command |
| 4173 | names from appearing in the history used for other minibuffer |
| 4174 | arguments. |
| 4175 | |
| 4176 | Note that the history list for entire commands that use the minibuffer |
| 4177 | is a separate feature. That history list records a command with all |
| 4178 | its arguments, and you must use C-x ESC ESC to access it. |
| 4179 | |
| 4180 | ** You can use the new command C-x v ~ VERSION RET to examine a |
| 4181 | specified version of a file that is maintained with version control. |
| 4182 | |
| 4183 | ** In Indented Text mode, only blank lines now separate paragraphs. |
| 4184 | Indented lines continue the paragraph that is in progress. This makes |
| 4185 | the user option variable adaptive-fill-mode have its intended effect. |
| 4186 | |
| 4187 | ** Local variable specifications in files for variables whose names end |
| 4188 | in `-hook' and `-function' are now controlled by the variable |
| 4189 | `enable-local-eval', just like the `eval' variable. |
| 4190 | |
| 4191 | ** C-x r j (jump-to-register) when restoring a frame configuration now |
| 4192 | makes all unwanted frames (existing frames not mentioned in the |
| 4193 | configuration) invisible. |
| 4194 | |
| 4195 | If you want to delete these unwanted frames, use a prefix argument for |
| 4196 | C-x r j. |
| 4197 | |
| 4198 | ** You can customize the calendar to display weeks beginning on |
| 4199 | Monday: set the variable `calendar-week-start-day' to 1. |
| 4200 | |
| 4201 | ** Rmail changes. |
| 4202 | |
| 4203 | If you save messages to a file in Unix format while viewing a message |
| 4204 | with its whole header, this now copies to the file the entire header |
| 4205 | of each message copied. |
| 4206 | |
| 4207 | ** Comint mode changes. |
| 4208 | |
| 4209 | C-c C-e shows as much output as possible in the window. |
| 4210 | C-c RET copies an old input (the one at point) |
| 4211 | and places the copy after the latest prompt. |
| 4212 | C-c C-p and C-c C-n move through the buffer, stopping at places |
| 4213 | where the subshell prompted for input. |
| 4214 | C-c C-h lists the input history in a `*Help*' buffer. |
| 4215 | |
| 4216 | There are new menu bar items for completion/input/output/signal commands. |
| 4217 | |
| 4218 | Input behavior is configurable. Variables control whether some windows |
| 4219 | showing the buffer scroll to the bottom before insertion. These are |
| 4220 | `comint-scroll-to-bottom-on-input' and `before-change-function'. By default, |
| 4221 | insertion causes the selected window to scroll to the bottom before insertion |
| 4222 | occurs. |
| 4223 | |
| 4224 | Subprocess output now keeps point at the end of the buffer in each |
| 4225 | window individually if point was already at the end of the buffer in |
| 4226 | that window. |
| 4227 | |
| 4228 | If `comint-scroll-show-maximum-output' is non-nil (which is the |
| 4229 | default), then scrolling due to arrival of output tries to place the |
| 4230 | last line of text at the bottom line of the window, so as to show as |
| 4231 | much useful text as possible. (This mimics the scrolling behavior of |
| 4232 | many terminals.) |
| 4233 | |
| 4234 | By setting `comint-scroll-to-bottom-on-output', you can opt for having |
| 4235 | point jump to the end of the buffer whenever output arrives--no matter |
| 4236 | where in the buffer point was before. If the value is `this', point |
| 4237 | jumps in the selected window. If the value is `all', point jumps in |
| 4238 | each window that shows the comint buffer. If the value is `other', |
| 4239 | point jumps in all nonselected windows that show the current buffer. |
| 4240 | The default value is nil, which means point does not jump to the end. |
| 4241 | |
| 4242 | Input history insertion is configurable. A variable controls whether only the |
| 4243 | first instance of successive identical inputs is stored in the input history. |
| 4244 | This is `comint-input-ignoredups'. |
| 4245 | |
| 4246 | Completion (bound to TAB) is now more general. Depending on context, |
| 4247 | completion now operates on the input history, on command names, or (as |
| 4248 | before) on filenames. |
| 4249 | |
| 4250 | Filename completion is configurable. Variables control whether |
| 4251 | file/directory suffix characters are added (`comint-completion-addsuffix'), |
| 4252 | whether shortest completion is acceptable when no further unambiguous |
| 4253 | completion is possible (`comint-completion-recexact'), and the timing of |
| 4254 | completion candidate listing (`comint-completion-autolist'). |
| 4255 | |
| 4256 | Comint mode now provides history expansion. Insert input using `!' |
| 4257 | and `^', in the same syntax that typical shells use; then type TAB. |
| 4258 | This searches the comint input history for a matching element, |
| 4259 | performs substitution if necessary, and places the result in the |
| 4260 | comint buffer in place of the original input. |
| 4261 | |
| 4262 | History references in the input may be expanded before insertion into |
| 4263 | the input ring, or on input to the interpreter (and therefore |
| 4264 | visibly). The variable `comint-input-autoexpand' specifies which. |
| 4265 | |
| 4266 | You can make the SPC key perform history expansion by binding |
| 4267 | SPC to the command `comint-magic-space'. |
| 4268 | |
| 4269 | The command `comint-dynamic-complete-variable' does variable name |
| 4270 | completion using the environment variables as set within Emacs. The |
| 4271 | variables controlling filename completion apply to variable name |
| 4272 | completion too. This command is normally available through the menu |
| 4273 | bar. |
| 4274 | |
| 4275 | ** Shell mode |
| 4276 | |
| 4277 | Paragraph motion and marking commands (default bindings M-{, M-}, M-h) operate |
| 4278 | on output groups (i.e., shell prompt plus associated shell output). |
| 4279 | |
| 4280 | TAB now completes commands, as well as file names and expand history. |
| 4281 | Commands are searched for along the path that Emacs has on startup. |
| 4282 | |
| 4283 | C-c C-f now moves forward a command (`shell-forward-command') and |
| 4284 | C-c C-b now moves backward a command (`shell-backward-command'). |
| 4285 | |
| 4286 | Command completion is configurable. The variables controlling |
| 4287 | filename completion in comint mode apply, together with a variable |
| 4288 | controlling whether to restrict possible completions to only files |
| 4289 | that are executable (`shell-command-execonly'). |
| 4290 | |
| 4291 | The input history is initialized from the file name given in the |
| 4292 | variable `shell-input-ring-file-name'--normally `.history' in your |
| 4293 | home directory. |
| 4294 | |
| 4295 | Directory tracking is more robust. It can cope with command sequences |
| 4296 | and forked commands, and can detect the failure of directory changing |
| 4297 | commands in most circumstances. It's still not infallible, of course. |
| 4298 | |
| 4299 | You can now configure the behavior of `pushd'. Variables control |
| 4300 | whether `pushd' behaves like `cd' if no argument is given |
| 4301 | (`shell-pushd-tohome'), pop rather than rotate with a numeric argument |
| 4302 | (`shell-pushd-dextract'), and only add directories to the directory |
| 4303 | stack if they are not already on it (`shell-pushd-dunique'). The |
| 4304 | configuration you choose should match the underlying shell, of course. |
| 4305 | |
| 4306 | \f |
| 4307 | * Emacs Lisp programming changes in Emacs 19.20. |
| 4308 | |
| 4309 | ** A new function `remove-hook' is now used to remove a hook that you might |
| 4310 | have added with `add-hook'. |
| 4311 | |
| 4312 | ** There is now a Lisp pretty-printer in the library `pp'. |
| 4313 | |
| 4314 | ** The partial Common Lisp support has been entirely reimplemented. |
| 4315 | |
| 4316 | ** When you insert text using `insert', `insert-before-markers' or |
| 4317 | `insert-buffer-substring', text properties are no longer inherited |
| 4318 | from the surrounding text. |
| 4319 | |
| 4320 | When you want to inherit text properties, use the new functions |
| 4321 | `insert-and-inherit' or `insert-before-markers-and-inherit'. |
| 4322 | |
| 4323 | The self-inserting character command does do inheritance. |
| 4324 | |
| 4325 | ** Frame creation hooks. |
| 4326 | |
| 4327 | The function make-frame now runs the normal hooks |
| 4328 | before-make-frame-hook and after-make-frame-hook. |
| 4329 | |
| 4330 | ** You can now use function-key-map to make a key an alias for other |
| 4331 | key sequences that can vary depending on circumstances. To do this, |
| 4332 | give the key a definition in function-key-map which is a function |
| 4333 | rather than a specific expansion key sequence. |
| 4334 | |
| 4335 | If the function reads input itself, it can have the effect of altering |
| 4336 | the event that follows. For example, here's how to define C-c h to |
| 4337 | turn the character that follows into a hyper character: |
| 4338 | |
| 4339 | (define-key function-key-map "\C-ch" 'hyperify) |
| 4340 | |
| 4341 | (defun hyperify (prompt) |
| 4342 | (let ((e (read-event))) |
| 4343 | (vector (if (numberp e) |
| 4344 | (logior (lsh 1 20) e) |
| 4345 | (if (memq 'hyper (event-modifiers e)) |
| 4346 | e |
| 4347 | (add-event-modifier "H-" e)))))) |
| 4348 | |
| 4349 | (defun add-event-modifier (string e) |
| 4350 | (let ((symbol (if (symbolp e) e (car e)))) |
| 4351 | (setq symbol (intern (concat string (symbol-name symbol)))) |
| 4352 | (if (symbolp e) |
| 4353 | symbol |
| 4354 | (cons symbol (cdr e))))) |
| 4355 | |
| 4356 | The character translation function gets one argument, which is the |
| 4357 | prompt that was specified in read-key-sequence--or nil if the key |
| 4358 | sequence is being read by the editor command loop. In most cases |
| 4359 | you can just ignore the prompt value. |
| 4360 | |
| 4361 | ** Changes for reading and writing text properties. |
| 4362 | |
| 4363 | New low-level Lisp features make it possible to write Lisp programs to |
| 4364 | save text properties in files, and read text properties from files. |
| 4365 | You can program any file format you like. |
| 4366 | |
| 4367 | The variable `write-region-annotation-functions' should contain a list |
| 4368 | of functions to be run by `write-region' to encode text properties in |
| 4369 | some fashion as annotations to the text that is written. |
| 4370 | |
| 4371 | Each function in the list is called with two arguments: the start and |
| 4372 | end of the region to be written. These functions should not alter the |
| 4373 | contents of the buffer. Instead, they should return lists indicating |
| 4374 | annotations to write in the file in addition to the text in the |
| 4375 | buffer. |
| 4376 | |
| 4377 | Each function should return a list of elements of the form (POSITION |
| 4378 | . STRING), where POSITION is an integer specifying the relative |
| 4379 | position in the text to be written, and STRING is the annotation to |
| 4380 | add there. |
| 4381 | |
| 4382 | Each list returned by one of these functions must be already sorted in |
| 4383 | increasing order by POSITION. If there is more than one function, |
| 4384 | `write-region' merges the lists destructively into one sorted list. |
| 4385 | |
| 4386 | When `write-region' actually writes the text from the buffer to the |
| 4387 | file, it intermixes the specified annotations at the corresponding |
| 4388 | positions. All this takes place without modifying the buffer. |
| 4389 | |
| 4390 | The variable `after-insert-file-functions' should contain a list of |
| 4391 | functions to be run each time a file's contents have been inserted into |
| 4392 | a buffer. Each function receives one argument, the length of the |
| 4393 | inserted text; point indicates the start of that text. The function |
| 4394 | should make whatever changes it wants to make, then return the updated |
| 4395 | length of the inserted text, as it stands after those changes. The |
| 4396 | value returned by one function is used as the argument to the next. |
| 4397 | These functions should always return with point at the beginning of |
| 4398 | the inserted text. |
| 4399 | |
| 4400 | The intended use of `after-insert-file-functions' is for converting |
| 4401 | some sort of textual annotations into actual text properties. But many |
| 4402 | other uses may be possible. |
| 4403 | |
| 4404 | We now invite users to begin implementing Lisp programs to store and |
| 4405 | retrieve text properties in files, using these new primitive features, |
| 4406 | and thus to experiment with various data formats and find good ones. |
| 4407 | |
| 4408 | We suggest not trying to handle arbitrary Lisp objects as property |
| 4409 | names or property values--because a program that general is probably |
| 4410 | difficult to write, and slow. Instead, choose a set of possible data |
| 4411 | types that are reasonably flexible, and not too hard to encode. |
| 4412 | |
| 4413 | ** Comint completion. |
| 4414 | |
| 4415 | Currently comint-dynamic-complete-command (and associated variable |
| 4416 | comint-after-partial-pathname-command) are set by default to complete a |
| 4417 | filename. Other comint-mode users should have their own functions to achieve |
| 4418 | this. For example, gud-mode could complete debugger commands. A completion |
| 4419 | function is provided solely for this reason (comint-dynamic-simple-complete). |
| 4420 | |
| 4421 | Other comint-mode users should bind comint-dynamic-complete (shell-mode does |
| 4422 | already). |
| 4423 | |
| 4424 | ** Comint history reference expansion |
| 4425 | |
| 4426 | Currently comint-input-autoexpand is 'history, which means only expand |
| 4427 | history on insertion to comint-input-ring. For non-shell modes, this is |
| 4428 | a strange default, since non-shells will not understand history references. |
| 4429 | Perhaps it would be better for the variable to be 'input, which means expand |
| 4430 | on RET. |
| 4431 | |
| 4432 | The value 'history might possibly be wrong even for shells, since the |
| 4433 | expansion will be done both by comint and the underlying shell (except sh, of |
| 4434 | course). It would be better for expansion to be done by one or the other, |
| 4435 | not both since they may (ahem) disagree. Since it is silly to put a literal |
| 4436 | history reference into comint-input-ring, perhaps it would be better for the |
| 4437 | variable to be 'input too. |
| 4438 | |
| 4439 | The reason the variable is not 'input by default is that I was attempting to |
| 4440 | adhere to The Principle of Least Astonishment. I didn't want to shock users |
| 4441 | by having their input change in front of their eyes. |
| 4442 | |
| 4443 | ** Argument delimiters and Comint mode. |
| 4444 | |
| 4445 | Currently comint-delimiter-argument-list is '(), which means no strings are |
| 4446 | to be treated as delimiters and arguments. In shell-mode, this variable is |
| 4447 | set to shell-delimiter-argument-list, '("|" "&" "<" ">" "(" ")" ";"). Other |
| 4448 | comint-mode users should set this variable too. For example, a lisp-type |
| 4449 | mode might want to set this to '("." "(" ")") or some such. |
| 4450 | |
| 4451 | ** Comint output hook. |
| 4452 | |
| 4453 | There is now a hook, comint-output-filter-hook, that is run-hooks'ed by the |
| 4454 | output filter, comint-output-filter. This is useful for scrolling (see |
| 4455 | below), but also things like processing output for specific text, output |
| 4456 | highlighting, etc. |
| 4457 | |
| 4458 | So that such output processing may be done efficiently, there is a new |
| 4459 | variable, comint-last-output-start, that records the position of the start of |
| 4460 | the last output inserted into the buffer (effectively the previous value |
| 4461 | of process-mark). Output processing functions should process the text |
| 4462 | between comint-last-output-start (or perhaps the beginning of the line that |
| 4463 | the position lies on) and process-mark. |
| 4464 | |
| 4465 | ** Comint scrolling. |
| 4466 | |
| 4467 | There is now automatic scrolling of process windows. |
| 4468 | |
| 4469 | Currently comint-scroll-show-maximum-output is t, which means when scrolling |
| 4470 | output put process-mark at the bottom of the window. There is a good case |
| 4471 | for it to be t, since the user is likely to want to see as much output as |
| 4472 | possible. But, then again, there is a comint-show-maximum-output command. |
| 4473 | |
| 4474 | ** Comint history retrieval. |
| 4475 | |
| 4476 | The input following point is not deleted when moving around the input history |
| 4477 | (with M-p etc.). Emacs maintainers may not like this. However, I feel this |
| 4478 | is a useful feature. The simple remedy is to put end-of-line in before |
| 4479 | delete-region in comint-previous-matching-input. |
| 4480 | |
| 4481 | The input history retrieval commands still wrap-around the input ring, unlike |
| 4482 | Emacs command history. |
| 4483 | |
| 4484 | |
| 4485 | \f |
| 4486 | * Changes in version 19.19. |
| 4487 | |
| 4488 | ** The new package bookmark.el records named bookmarks: positions that |
| 4489 | you can jump to. Bookmarks are saved automatically between Emacs |
| 4490 | sessions. |
| 4491 | |
| 4492 | ** Another simpler package saveplace.el records your position in each |
| 4493 | file when you kill its buffer (or kill Emacs), and jumps to the same |
| 4494 | position when you visit the file again (even in another Emacs |
| 4495 | session). Use `toggle-save-place' to turn on place-saving in a given file; |
| 4496 | use (setq-default save-place t) to turn it on for all files. |
| 4497 | |
| 4498 | ** In Outline mode, you can now customize how to compute the level of a |
| 4499 | heading line. Set `outline-level' to a function of no arguments which |
| 4500 | returns the level, assuming point is at the beginning of a heading |
| 4501 | line. |
| 4502 | |
| 4503 | ** You can now specify the prefix key to use for Outline minor mode. |
| 4504 | (The default is C-c.) Set the variable outline-minor-mode-prefix to |
| 4505 | the key sequence you want to use (as a string or vector). |
| 4506 | |
| 4507 | ** In Bibtex mode, C-c e has been changed to C-c C-b. This is because |
| 4508 | C-c followed by a letter is reserved for users. |
| 4509 | |
| 4510 | ** The `mod' function is no longer an alias for `%', but is a separate function |
| 4511 | that yields a result with the same sign as the divisor. `floor' now takes an |
| 4512 | optional second argument, which divides the first argument before the floor is |
| 4513 | taken. |
| 4514 | |
| 4515 | ** `%' no longer allows floating point arguments, since the results were often |
| 4516 | inconsistent with integer `%'. |
| 4517 | |
| 4518 | |
| 4519 | \f |
| 4520 | * Changes in version 19.18. |
| 4521 | |
| 4522 | ** Typing C-z in an iconified Emacs frame now deiconifies it. |
| 4523 | |
| 4524 | ** hilit19 is a new library for automatic highlighting of parts of the |
| 4525 | text in the buffer, based on its meaning and context. |
| 4526 | |
| 4527 | ** Killing no longer sends the killed text to the X clipboard. |
| 4528 | And large strings are not put in the cut buffer either. |
| 4529 | The variable x-cut-buffer-max specifies the maximum number of characters |
| 4530 | to put in the cut buffer. |
| 4531 | |
| 4532 | ** The new command C-x 5 o (other-frame) selects different frames, |
| 4533 | successively, in cyclic order. It does for frames what C-x o |
| 4534 | does for windows. |
| 4535 | |
| 4536 | ** The command M-ESC (eval-expression) has its own command history. |
| 4537 | |
| 4538 | ** The commands M-! and M-| for running shell commands have their own |
| 4539 | command history. |
| 4540 | |
| 4541 | ** If the directory containing the Emacs executable has a sibling named |
| 4542 | `lisp', that `lisp' directory is added to the end of `load-path' |
| 4543 | (provided you don't override the normal value with the EMACSLOADPATH |
| 4544 | environment variable). This feature may make it easier to move |
| 4545 | an installed Emacs from place to place. |
| 4546 | |
| 4547 | ** M-x validate-tex-buffer now records the locations of mismatches |
| 4548 | found in the `*Occur*' buffer. You can go to that buffer and type C-c |
| 4549 | C-c to visit a particular mismatch. |
| 4550 | |
| 4551 | ** There are new commands in Shell mode. |
| 4552 | |
| 4553 | C-c C-n and C-c C-p move point to the next or previous shell input line. |
| 4554 | |
| 4555 | C-c C-d is now another way to send an end-of-file to the subshell. |
| 4556 | |
| 4557 | ** Changes to calendar/diary. |
| 4558 | |
| 4559 | Time zone data is now determined automatically, including the |
| 4560 | start/stop days and times of daylight saving time. The code now |
| 4561 | works correctly almost anywhere in the world. |
| 4562 | |
| 4563 | The format of the holiday specifications has changed and IS NO LONGER |
| 4564 | COMPATIBLE with the old (version 18) format. See the documentation of |
| 4565 | the variable calendar-holidays for details of the new, improved |
| 4566 | format. |
| 4567 | |
| 4568 | The hook `diary-display-hook' has been split into two: |
| 4569 | diary-display-hook which should be used ONLY for the display and |
| 4570 | `diary-hook' which should be used for appointment notification. If |
| 4571 | diary-display-hook is nil (the default), simple-diary-display is |
| 4572 | used. This allows the diary hooks to be correctly set with add-hook. |
| 4573 | |
| 4574 | The forms used for dates in diary entries and general display are no |
| 4575 | longer autoloaded, but set at load time; this means they will be set |
| 4576 | correctly based on values you assign to various variables. |
| 4577 | |
| 4578 | ** The functions x-rebind-key and x-rebind-keys have been deleted, |
| 4579 | because you can accomplish the same job by binding keys to keyboard |
| 4580 | macros. |
| 4581 | |
| 4582 | ** Emacs now distinguishes double and triple drag events and double and |
| 4583 | triple button-down events. These work analogously to double and |
| 4584 | triple click events. |
| 4585 | |
| 4586 | Double drag events, if not defined, convert to ordinary click events. |
| 4587 | Double down events, if not defined, convert first to ordinary down |
| 4588 | events, which are then discarded if not defined. Triple events that |
| 4589 | are not defined convert to the corresponding double event; if that is |
| 4590 | also not defined, it may convert further. |
| 4591 | |
| 4592 | ** The new function event-click-count returns the number of clicks, |
| 4593 | from an event which is a list. It is 1 for an ordinary click, drag, |
| 4594 | or button-down event, 2 for a double event, and 3 or more for a triple |
| 4595 | event. |
| 4596 | |
| 4597 | ** The new function previous-frame is like next-frame, but moves |
| 4598 | around through the set of existing frames in the opposite order. |
| 4599 | |
| 4600 | ** The post-command-hook now runs even after commands that get an error |
| 4601 | and return to top level. As a consequence of the same change, this |
| 4602 | hook also runs before Emacs reads the first command. That might sound |
| 4603 | paradoxical, as if this hook were the same as the pre-command-hook. |
| 4604 | Actually, they are not similar; the latter runs before *execution* of |
| 4605 | a command, but after it has been read. |
| 4606 | |
| 4607 | ** You can turn off the text property hooks that run when point moves |
| 4608 | to certain places in the buffer, by binding inhibit-point-motion-hooks |
| 4609 | to a non-nil value. |
| 4610 | |
| 4611 | ** Inserting a string with no text properties into the buffer normally |
| 4612 | inherits the properties of the preceding character. You can now |
| 4613 | control this inheritance by setting the front-sticky and |
| 4614 | rear-nonsticky properties of a character. |
| 4615 | |
| 4616 | If you make a character's front-sticky property t, then insertion |
| 4617 | before the character inherits its properties. If you make the |
| 4618 | rear-nonsticky property t, then insertion after the character does not |
| 4619 | inherit its properties. You can regard characters as normally being |
| 4620 | rear-sticky and not front-sticky, and this is why insertion normally |
| 4621 | inherits from the previous character. |
| 4622 | |
| 4623 | If neither side of an insertion is suitably sticky, then the inserted |
| 4624 | text gets no properties. If both sides are sticky, then the inserted |
| 4625 | text gets the properties of both sides, with the previous character's |
| 4626 | properties taking precedence when both sides have a property in |
| 4627 | common. |
| 4628 | |
| 4629 | You can also specify stickiness for individual properties. To do so, |
| 4630 | use a list of property names as the value of the front-sticky property |
| 4631 | or the rear-nonsticky property. For example, if a character has a |
| 4632 | rear-nonsticky property whose value is (face read-only), then |
| 4633 | insertion after the character will not inherit its face property or |
| 4634 | read-only property (if any), but will inherit any other properties. |
| 4635 | |
| 4636 | The merging of properties when both sides of the insertion are sticky |
| 4637 | takes place one property at a time. If the preceding character is |
| 4638 | rear-sticky for the property, and the property is non-nil, it |
| 4639 | dominates. Otherwise, the following character's property value is |
| 4640 | used if it is front-sticky for that property. |
| 4641 | |
| 4642 | ** If you give a character a non-nil `invisible' text property, the |
| 4643 | character does not appear on the screen. This works much like |
| 4644 | selective display. |
| 4645 | |
| 4646 | The details of this feature are likely to change in future Emacs |
| 4647 | versions. |
| 4648 | |
| 4649 | ** In Info, when you go to a node, it runs the normal hook |
| 4650 | Info-selection-hook. |
| 4651 | |
| 4652 | ** You can use the new function `invocation-directory' to get the name |
| 4653 | of the directory containing the Emacs executable that was run. |
| 4654 | |
| 4655 | ** Entry to the minibuffer runs the normal hook minibuffer-setup-hook. |
| 4656 | |
| 4657 | ** The new function minibuffer-window-active-p takes one argument, a |
| 4658 | minibuffer window, and returns t if the window is currently active. |
| 4659 | |
| 4660 | |
| 4661 | \f |
| 4662 | * Changes in version 19.17. |
| 4663 | |
| 4664 | ** When Emacs displays a list of completions in a buffer, |
| 4665 | you can select a completion by clicking mouse button 2 |
| 4666 | on that completion. |
| 4667 | |
| 4668 | ** Use the command `list-faces-display' to display a list of |
| 4669 | all the currently defined faces, showing what they look like. |
| 4670 | |
| 4671 | ** Menu bar items from local maps now come after the usual items. |
| 4672 | |
| 4673 | ** The Help menu bar item always comes last in the menu bar. |
| 4674 | |
| 4675 | ** If you enable Font-Lock mode on a buffer containing a program |
| 4676 | (certain languages such as C and Lisp are supported), everything you |
| 4677 | type is automatically given a face property appropriate to its |
| 4678 | syntactic role. For example, there are faces for comments, string |
| 4679 | constants, names of functions being defined, and so on. |
| 4680 | |
| 4681 | ** Dunnet, an adventure game, is now available. |
| 4682 | |
| 4683 | ** Several major modes now have their own menu bar items, |
| 4684 | including Dired, Rmail, and Sendmail. We would like to add |
| 4685 | suitable menu bar items to other major modes. |
| 4686 | |
| 4687 | ** The key binding C-x a C-h has been eliminated. |
| 4688 | This is because it got in the way of the general feature of typing |
| 4689 | C-h after a prefix character. If you want to run |
| 4690 | inverse-add-global-abbrev, you can use C-x a - or C-x a i g instead. |
| 4691 | |
| 4692 | ** If you set the variable `rmail-mail-new-frame' to a non-nil value, |
| 4693 | all the Rmail commands to send mail make a new frame to do it in. |
| 4694 | When you send the message, or use the menu bar command not to send it, |
| 4695 | that frame is deleted. |
| 4696 | |
| 4697 | ** In Rmail, the o and C-o commands are now almost interchangeable. |
| 4698 | Both commands check the format of the file you specify, and append |
| 4699 | the message to it in Rmail format if it is an Rmail file, and in |
| 4700 | inbox file format otherwise. C-o and o are different only when you |
| 4701 | specify a new file. |
| 4702 | |
| 4703 | ** The function `copy-face' now takes an optional fourth argument |
| 4704 | NEW-FRAME. If you specify this, it copies the definition of face |
| 4705 | OLD-FACE on frame FRAME to face NEW-NAME on frame NEW-FRAME. |
| 4706 | |
| 4707 | ** A local map can now cancel out one of the global map's menu items. |
| 4708 | Just define that subcommand of the menu item with `undefined' |
| 4709 | as the definition. For example, this cancels out the `Buffers' item |
| 4710 | for the current major mode: |
| 4711 | |
| 4712 | (local-set-key [menu-bar buffer] 'undefined) |
| 4713 | |
| 4714 | ** To put global items at the end of the menu bar, use the new variable |
| 4715 | `menu-bar-final-items'. It should be a list of symbols--event types |
| 4716 | bound in the menu bar. The menu bar items for these symbols are |
| 4717 | moved to the end. |
| 4718 | |
| 4719 | ** The list returned by `buffer-local-variables' now contains cons-cell |
| 4720 | elements of the form (SYMBOL . VALUE) only for buffer-local variables |
| 4721 | that have values. For unbound buffer-local variables, the variable |
| 4722 | name (symbol) appears directly as an element of the list. |
| 4723 | |
| 4724 | ** The `modification-hooks' property of a character no longer affects |
| 4725 | insertion; it runs only for deletion and modification of the character. |
| 4726 | |
| 4727 | To detect insertion, use `insert-in-front-hooks' and |
| 4728 | `insert-behind-hooks' properties. The former runs when text is |
| 4729 | inserted immediately preceding the character that has the property; |
| 4730 | the latter runs when text is inserted immediately following the |
| 4731 | character. |
| 4732 | |
| 4733 | ** Buffer modification now runs hooks belonging to overlays as well as |
| 4734 | hooks belonging to characters. If an overlay has a |
| 4735 | `modification-hooks' property, it applies to any change to text in the |
| 4736 | overlay, and any insertion within the overlay. If the overlay has a |
| 4737 | `insert-in-front-hooks' property, it runs for insertion at the |
| 4738 | beginning boundary of the overlay. If the overlay has an |
| 4739 | `insert-behind-hooks' property, it runs for insertion at the end |
| 4740 | boundary of the overlay. |
| 4741 | |
| 4742 | The values of these properties should be lists of functions. Each |
| 4743 | function is called, receiving as arguments the overlay in question, |
| 4744 | followed by the bounds of the range being modified. |
| 4745 | |
| 4746 | ** The new `-name NAME' option directs Emacs to search for its X |
| 4747 | resources using the name `NAME', and sets the title of the initial |
| 4748 | frame. This argument was added for consistency with other X clients. |
| 4749 | |
| 4750 | ** The new `-xrm DATABASE' option tells Emacs to treat the string |
| 4751 | DATABASE as the text of an X resource database. Emacs searches |
| 4752 | DATABASE for resource values, in addition to the usual places. This |
| 4753 | argument was added for consistency with other X clients. |
| 4754 | |
| 4755 | ** Emacs now searches for X resources in the files specified by the |
| 4756 | XFILESEARCHPATH, XUSERFILESEARCHPATH, and XAPPLRESDIR environment |
| 4757 | variables, emulating the functionality provided by programs written |
| 4758 | using Xt. Because of this change, Emacs will now notice system-wide |
| 4759 | application defaults files, as other X clients do. |
| 4760 | |
| 4761 | XFILESEARCHPATH and XUSERFILESEARCHPATH should be a list of file names |
| 4762 | separated by colons; XAPPLRESDIR should be a list of directory names |
| 4763 | separated by colons. |
| 4764 | |
| 4765 | Emacs searches for X resources |
| 4766 | + specified on the command line, with the `-xrm RESOURCESTRING' |
| 4767 | option, |
| 4768 | + then in the value of the XENVIRONMENT environment variable, |
| 4769 | - or if that is unset, in the file named ~/.Xdefaults-HOSTNAME if it exists |
| 4770 | (where HOSTNAME is the hostname of the machine Emacs is running on), |
| 4771 | + then in the screen-specific and server-wide resource properties |
| 4772 | provided by the server, |
| 4773 | - or if those properties are unset, in the file named ~/.Xdefaults |
| 4774 | if it exists, |
| 4775 | + then in the files listed in XUSERFILESEARCHPATH, |
| 4776 | - or in files named LANG/Emacs in directories listed in XAPPLRESDIR |
| 4777 | (where LANG is the value of the LANG environment variable), if |
| 4778 | the LANG environment variable is set, |
| 4779 | - or in files named Emacs in the directories listed in XAPPLRESDIR |
| 4780 | - or in ~/LANG/Emacs (if the LANG environment variable is set), |
| 4781 | - or in ~/Emacs, |
| 4782 | + then in the files listed in XFILESEARCHPATH. |
| 4783 | |
| 4784 | The paths in the variables XFILESEARCHPATH, XUSERFILESEARCHPATH, and |
| 4785 | XAPPLRESDIR may contain %-escapes (like the control strings passed to |
| 4786 | the Emacs lisp `format' function or C printf function), which Emacs expands. |
| 4787 | |
| 4788 | %N is replaced by the string "Emacs" wherever it occurs. |
| 4789 | %T is replaced by "app-defaults" wherever it occurs. |
| 4790 | %S is replaced by the empty string wherever it occurs. |
| 4791 | %L and %l are replaced by the value of the LANG environment variable; if LANG |
| 4792 | is not set, Emacs does not use that directory or file name at all. |
| 4793 | %C is replaced by the value of the resource named "customization" |
| 4794 | (class "Customization"), as retrieved from the server's resource |
| 4795 | properties or the user's ~/.Xdefaults file, or the empty string if |
| 4796 | that resource doesn't exist. |
| 4797 | |
| 4798 | So, for example, |
| 4799 | if XFILESEARCHPATH is set to the value |
| 4800 | "/usr/lib/X11/%L/%T/%N%C:/usr/lib/X11/%T/%N%C:/usr/lib/X11/%T/%N", |
| 4801 | and the LANG environment variable is set to |
| 4802 | "english", |
| 4803 | and the customization resource is the string |
| 4804 | "-color", |
| 4805 | then, in the last step of the process described above, Emacs checks |
| 4806 | for resources in the first of the following files that is present and |
| 4807 | readable: |
| 4808 | /usr/lib/X11/english/app-defaults/Emacs-color |
| 4809 | /usr/lib/X11/app-defaults/Emacs-color |
| 4810 | /usr/lib/X11/app-defaults/Emacs |
| 4811 | If the LANG environment variable is not set, then Emacs never uses the |
| 4812 | first element of the path, "/usr/lib/X11/%L/%T/%N%C", because it |
| 4813 | contains the %L escape. |
| 4814 | |
| 4815 | If XFILESEARCHPATH is unset, Emacs uses the default value |
| 4816 | "/usr/lib/X11/%L/app-defaults/Emacs%C:\ |
| 4817 | /usr/lib/X11/app-defaults/Emacs%C:\ |
| 4818 | /usr/lib/X11/%L/app-defaults/Emacs:\ |
| 4819 | /usr/lib/X11/app-defaults/Emacs" |
| 4820 | |
| 4821 | This feature was added for consistency with other X applications. |
| 4822 | |
| 4823 | ** The new function `text-property-any' scans the region of text from |
| 4824 | START to END to see if any character's property PROP is `eq' to |
| 4825 | VALUE. If so, it returns the position of the first such character. |
| 4826 | Otherwise, it returns nil. |
| 4827 | |
| 4828 | The optional fifth argument, OBJECT, specifies the string or buffer to |
| 4829 | be examined. |
| 4830 | |
| 4831 | ** The new function `text-property-not-all' scans the region of text from |
| 4832 | START to END to see if any character's property PROP is not `eq' to |
| 4833 | VALUE. If so, it returns the position of the first such character. |
| 4834 | Otherwise, it returns nil. |
| 4835 | |
| 4836 | The optional fifth argument, OBJECT, specifies the string or buffer to |
| 4837 | be examined. |
| 4838 | |
| 4839 | ** The function `delete-windows-on' now takes an optional second |
| 4840 | argument FRAME, which specifies which frames it should affect. |
| 4841 | + If FRAME is nil or omitted, then `delete-windows-on' deletes windows |
| 4842 | showing BUFFER (its first argument) on all frames. |
| 4843 | + If FRAME is t, then `delete-windows-on' only deletes windows on the |
| 4844 | selected frame; other frames are unaffected. |
| 4845 | + If FRAME is a frame, then `delete-windows-on' only deletes windows on |
| 4846 | the given frame; other frames are unaffected. |
| 4847 | |
| 4848 | |
| 4849 | \f |
| 4850 | * Changes in version 19.16. |
| 4851 | |
| 4852 | ** When dragging the mouse to select a region, Emacs now highlights the |
| 4853 | region as you drag (if Transient Mark mode is enabled). If you |
| 4854 | continue the drag beyond the boundaries of the window, Emacs scrolls |
| 4855 | the window at a steady rate until you either move the mouse back into |
| 4856 | the window or release the button. |
| 4857 | |
| 4858 | ** RET now exits `query-replace' and `query-replace-regexp'; this makes it |
| 4859 | more consistent with the incremental search facility, which uses RET |
| 4860 | to end the search. |
| 4861 | |
| 4862 | ** In C mode, C-c C-u now runs c-up-conditional. |
| 4863 | C-c C-n and C-c C-p now run new commands that move forward |
| 4864 | and back over balanced sets of C conditionals (c-forward-conditional |
| 4865 | and c-backward-conditional). |
| 4866 | |
| 4867 | ** The Edit entry in the menu bar has a new alternative: |
| 4868 | "Choose Next Paste". It gives you a menu showing the various |
| 4869 | strings in the kill ring; click on one to select it as the text |
| 4870 | to be yanked ("pasted") the next time you yank. |
| 4871 | |
| 4872 | ** If you enable Transient Mark mode and set `mark-even-if-inactive' to |
| 4873 | non-nil, then the region is highlighted in a transient fashion just as |
| 4874 | normally in Transient Mark mode, but the mark really remains active |
| 4875 | all the time; commands that use the region can be used even if the |
| 4876 | region highlighting turns off. |
| 4877 | |
| 4878 | ** If you type C-h after a prefix key, it displays the bindings |
| 4879 | that start with that prefix. |
| 4880 | |
| 4881 | ** The VC package now searches for version control commands in the |
| 4882 | directories named by the variable `vc-path'; its value should be a |
| 4883 | list of strings. |
| 4884 | |
| 4885 | ** If you are visiting a file that has locks registered under RCS, |
| 4886 | VC now displays each lock's owner and version number in the mode line |
| 4887 | after the string `RCS'. If there are no locks, VC displays the head |
| 4888 | version number. |
| 4889 | |
| 4890 | ** When using X, if you load the `paren' library, Emacs automatically |
| 4891 | underlines or highlights the matching paren whenever point is |
| 4892 | next to the outside of a paren. When point is before an open-paren, |
| 4893 | this shows the matching close; when point is after a close-paren, |
| 4894 | this shows the matching open. |
| 4895 | |
| 4896 | ** The new function `define-key-after' is like `define-key', |
| 4897 | but takes an extra argument AFTER. It places the newly defined |
| 4898 | binding after the binding for the event AFTER. |
| 4899 | |
| 4900 | ** `accessible-keymaps' now takes an optional second argument, PREFIX. |
| 4901 | If PREFIX is non-nil, it means the value should include only maps for |
| 4902 | keys that start with PREFIX. |
| 4903 | |
| 4904 | `describe-bindings' also accepts an optional argument PREFIX which |
| 4905 | means to describe only the keys that start with PREFIX. |
| 4906 | |
| 4907 | ** The variable `prefix-help-command' hold a command to run to display help |
| 4908 | whenever the character `help-char' follows a prefix key and does not have |
| 4909 | a key binding in that context. |
| 4910 | |
| 4911 | ** Emacs now detects double- and triple-mouse clicks. A single mouse |
| 4912 | click produces a pair events of the form: |
| 4913 | (down-mouse-N POSITION) |
| 4914 | (mouse-N POSITION) |
| 4915 | Clicking the same mouse button again, soon thereafter and at the same |
| 4916 | location, produces another pair of events of the form: |
| 4917 | (down-mouse-N POSITION) |
| 4918 | (double-mouse-N POSITION 2) |
| 4919 | Another click will produce an event pair of the form: |
| 4920 | (down-mouse-N POSITION) |
| 4921 | (triple-mouse-N POSITION 3) |
| 4922 | All the POSITIONs in such a sequence would be identical, except for |
| 4923 | their timestamps. |
| 4924 | |
| 4925 | To count as double- and triple-clicks, mouse clicks must be at the |
| 4926 | same location as the first click, and the number of milliseconds |
| 4927 | between the first release and the second must be less than the value |
| 4928 | of the lisp variable `double-click-time'. Setting `double-click-time' |
| 4929 | to nil disables multi-click detection. Setting it to t removes the |
| 4930 | time limit; Emacs then detects multi-clicks by position only. |
| 4931 | |
| 4932 | If `read-key-sequence' finds no binding for a double-click event, but |
| 4933 | the corresponding single-click event would be bound, |
| 4934 | `read-key-sequence' demotes it to a single-click. Similarly, it |
| 4935 | demotes unbound triple-clicks to double- or single-clicks. This means |
| 4936 | you don't have to distinguish between single- and multi-clicks if you |
| 4937 | don't want to. |
| 4938 | |
| 4939 | Emacs reports all clicks after the third as `triple-mouse-N' clicks, |
| 4940 | but increments the click count after POSITION. For example, a fourth |
| 4941 | click, soon after the third and at the same location, produces a pair |
| 4942 | of events of the form: |
| 4943 | (down-mouse-N POSITION) |
| 4944 | (triple-mouse-N POSITION 4) |
| 4945 | |
| 4946 | ** The way Emacs reports positions of mouse events has changed |
| 4947 | slightly. If a mouse event includes a position list of the form: |
| 4948 | (WINDOW (PLACE-SYMBOL) (COLUMN . ROW) TIMESTAMP) |
| 4949 | this denotes exactly the same position as the list: |
| 4950 | (WINDOW PLACE-SYMBOL (COLUMN . ROW) TIMESTAMP) |
| 4951 | That is, the event occurred over a non-textual area of the frame, |
| 4952 | specified by PLACE-SYMBOL, a symbol like `mode-line' or |
| 4953 | `vertical-scroll-bar'. |
| 4954 | |
| 4955 | Enclosing PLACE-SYMBOL in a singleton list does not change the |
| 4956 | position denoted, but the `read-key-sequence' function uses the |
| 4957 | presence or absence of the singleton list to tell whether or not it |
| 4958 | should prefix the event with its place symbol. |
| 4959 | |
| 4960 | Normally, `read-key-sequence' prefixes mouse events occurring over |
| 4961 | non-textual areas with their PLACE-SYMBOLs, to select the sub-keymap |
| 4962 | appropriate for the event; for example, clicking on the mode line |
| 4963 | produces a sequence like |
| 4964 | [mode-line (mouse-1 POSN)] |
| 4965 | However, if lisp code elects to unread the resulting key sequence by |
| 4966 | placing it in the `unread-command-events' variable, it is important |
| 4967 | that `read-key-sequence' not insert the prefix symbol again; that |
| 4968 | would produce a malformed key sequence like |
| 4969 | [mode-line mode-line (mouse-1 POSN)] |
| 4970 | For this reason, `read-key-sequence' encloses the event's PLACE-SYMBOL |
| 4971 | in a singleton list when it first inserts the prefix, but doesn't |
| 4972 | insert the prefix when processing events whose PLACE-SYMBOLs are |
| 4973 | already thus enclosed. |
| 4974 | |
| 4975 | |
| 4976 | \f |
| 4977 | * Changes in version 19.15. |
| 4978 | |
| 4979 | ** `make-frame-visible', which uniconified frames, is now a command, |
| 4980 | and thus may be bound to a key. This makes sense because frames |
| 4981 | respond to user input while iconified. |
| 4982 | |
| 4983 | ** You can now use Meta mouse clicks to set and use the "secondary |
| 4984 | selection". You can drag M-Mouse-1 across the region you want to |
| 4985 | select. Or you can press M-Mouse-1 at one end and M-Mouse-3 at the |
| 4986 | other (this also copies the text to the kill ring). Repeating M-Mouse-3 |
| 4987 | again at the same place kills that text. |
| 4988 | |
| 4989 | M-Mouse-2 kills the secondary selection. |
| 4990 | |
| 4991 | Setting the secondary selection does not move point or the mark. It |
| 4992 | is possible to make a secondary selection that does not all fit on the |
| 4993 | screen, by using M-Mouse-1 at one end, scrolling, then using M-Mouse-3 |
| 4994 | at the other end. |
| 4995 | |
| 4996 | Emacs has only one secondary selection at any time. Starting to set |
| 4997 | a new one cancels any previous one. The secondary selection displays |
| 4998 | using a face named `secondary-selection'. |
| 4999 | |
| 5000 | ** There's a new way to request use of Supercite (sc.el). Do this: |
| 5001 | |
| 5002 | (add-hook 'mail-citation-hook 'sc-cite-original) |
| 5003 | |
| 5004 | Currently this works with Rmail. In the future, other Emacs based |
| 5005 | mail-readers should be modified to understand this hook also. |
| 5006 | In the mean time, you should keep doing what you have done in the past |
| 5007 | for those other mail readers. |
| 5008 | |
| 5009 | ** When a regular expression contains `\(...\)' inside a repetition |
| 5010 | operator such as `*' or `+', and you ask about the range that was matched |
| 5011 | using `match-beginning' and `match-end', the range you get corresponds |
| 5012 | to the *last* repetition *only*. In Emacs 18, you would get a range |
| 5013 | corresponding to all the repetitions. |
| 5014 | |
| 5015 | If you want to get a range corresponding to all the repetitions, |
| 5016 | put a `\(...\)' grouping *outside* the repetition operator. This |
| 5017 | is the syntax that corresponds logically to the desired result, and |
| 5018 | it works the same in Emacs 18 and Emacs 19. |
| 5019 | |
| 5020 | (This change actually took place earlier, but we didn't know about it |
| 5021 | and thus didn't document it.) |
| 5022 | |
| 5023 | |
| 5024 | \f |
| 5025 | * Changes in version 19.14. |
| 5026 | |
| 5027 | ** To modify read-only text, bind the variable `inhibit-read-only' |
| 5028 | to a non-nil value. If the value is t, then all reasons that might |
| 5029 | make text read-only are inhibited (including `read-only' text properties). |
| 5030 | If the value is a list, then a `read-only' property is inhibited |
| 5031 | if it is `memq' in the list. |
| 5032 | |
| 5033 | ** If you call `get-buffer-window' passing t as its second argument, it |
| 5034 | will only search for windows on visible frames. Previously, passing t |
| 5035 | as the second argument caused `get-buffer-window' to search all |
| 5036 | frames, visible or not. |
| 5037 | |
| 5038 | ** If you call `other-buffer' with a nil or omitted second argument, it |
| 5039 | will ignore buffers displayed windows on any visible frame, not just |
| 5040 | the selected frame. |
| 5041 | |
| 5042 | ** You can specify a window or a frame for C-x # to use when |
| 5043 | selects a server buffer. Set the variable server-window |
| 5044 | to the window or frame that you want. |
| 5045 | |
| 5046 | ** The command M-( now inserts spaces outside the open-parentheses in |
| 5047 | some cases--depending on the syntax classes of the surrounding |
| 5048 | characters. If the variable `parens-dont-require-spaces' is non-nil, |
| 5049 | it inhibits insertion of these spaces. |
| 5050 | |
| 5051 | ** The GUD package now supports the debugger known as xdb on HP/UX |
| 5052 | systems. Use M-x xdb. The variable `gud-xdb-directories' lets you |
| 5053 | specify a list of directories to search for source code. |
| 5054 | |
| 5055 | ** If you are using the mailabbrev package, you should note that its |
| 5056 | function for defining an alias is now called `define-mail-abbrev'. |
| 5057 | This package no longer contains a definition for `define-mail-alias'; |
| 5058 | that name is used only in mailaliases. |
| 5059 | |
| 5060 | ** Inserted characters now inherit the properties of the text before |
| 5061 | them, by default, rather than those of the following text. |
| 5062 | |
| 5063 | ** The function `insert-file-contents' now takes optional arguments BEG |
| 5064 | and END that specify which part of the file to insert. BEG defaults to |
| 5065 | 0 (the beginning of the file), and END defaults to the end of the file. |
| 5066 | |
| 5067 | If you specify BEG or END, then the argument VISIT must be nil. |
| 5068 | |
| 5069 | |
| 5070 | \f |
| 5071 | * Changes in version 19.13. |
| 5072 | |
| 5073 | ** Magic file names can now handle the `load' operation. |
| 5074 | |
| 5075 | ** Bibtex mode now sets up special entries in the menu bar. |
| 5076 | |
| 5077 | ** The incremental search commands C-w and C-y, which copy text from |
| 5078 | the buffer into the search string, now convert it to lower case |
| 5079 | if you are in a case-insensitive search. This is to avoid making |
| 5080 | the search a case-sensitive one. |
| 5081 | |
| 5082 | ** GNUS now knows your time zone automatically if Emacs does. |
| 5083 | |
| 5084 | ** Hide-ifdef mode no longer defines keys of the form |
| 5085 | C-c LETTER, since those keys are reserved for users. |
| 5086 | Those commands have been moved to C-c M-LETTER. |
| 5087 | We may move them again for greater consistency with other modes. |
| 5088 | |
| 5089 | |
| 5090 | \f |
| 5091 | * Changes in version 19.12. |
| 5092 | |
| 5093 | ** You can now make many of the sort commands ignore case by setting |
| 5094 | `sort-fold-case' to a non-nil value. |
| 5095 | |
| 5096 | |
| 5097 | \f |
| 5098 | * Changes in version 19.11. |
| 5099 | |
| 5100 | ** Supercite is installed. |
| 5101 | |
| 5102 | ** `write-file-hooks' functions that return non-nil are responsible |
| 5103 | for making a backup file if you want that to be done. |
| 5104 | To do so, execute the following code: |
| 5105 | |
| 5106 | (or buffer-backed-up (backup-buffer)) |
| 5107 | |
| 5108 | You might wish to save the file modes value returned by |
| 5109 | `backup-buffer' and use that to set the mode bits of the file |
| 5110 | that you write. This is what `basic-save-buffer' does when |
| 5111 | it writes a file in the usual way. |
| 5112 | |
| 5113 | (This is not actually new, but wasn't documented before.) |
| 5114 | |
| 5115 | |
| 5116 | \f |
| 5117 | * Changes in version 19.10. |
| 5118 | |
| 5119 | ** The command `repeat-complex-command' is now on C-x ESC ESC. |
| 5120 | It used to be bound to C-x ESC. |
| 5121 | |
| 5122 | The reason for this change is to make function keys work after C-x. |
| 5123 | |
| 5124 | ** The variable `highlight-nonselected-windows' now controls whether |
| 5125 | the region is highlighted in windows other than the selected window |
| 5126 | (in Transient Mark mode only, of course, and currently only when |
| 5127 | using X). |
| 5128 | |
| 5129 | |
| 5130 | \f |
| 5131 | * Changes in version 19.8. |
| 5132 | |
| 5133 | ** It is now simpler to tell Emacs to display accented characters under |
| 5134 | X windows. M-x standard-display-european toggles the display of |
| 5135 | buffer text according to the ISO Latin-1 standard. With a prefix |
| 5136 | argument, this command enables European character display if and only |
| 5137 | if the argument is positive. |
| 5138 | |
| 5139 | ** The `-i' command-line argument tells Emacs to use a picture of the |
| 5140 | GNU gnu as its icon, instead of letting the window manager choose an |
| 5141 | icon for it. This option used to insert a file into the current |
| 5142 | buffer; use `-insert' to do that now. |
| 5143 | |
| 5144 | ** The `configure' script now supports `--prefix' and `--exec-prefix' |
| 5145 | options. |
| 5146 | |
| 5147 | The `--prefix=PREFIXDIR' option specifies where the installation process |
| 5148 | should put emacs and its data files. This defaults to `/usr/local'. |
| 5149 | - Emacs (and the other utilities users run) go in PREFIXDIR/bin |
| 5150 | (unless the `--exec-prefix' option says otherwise). |
| 5151 | - The architecture-independent files go in PREFIXDIR/lib/emacs/VERSION |
| 5152 | (where VERSION is the version number of Emacs, like `19.7'). |
| 5153 | - The architecture-dependent files go in |
| 5154 | PREFIXDIR/lib/emacs/VERSION/CONFIGURATION |
| 5155 | (where CONFIGURATION is the configuration name, like mips-dec-ultrix4.2), |
| 5156 | unless the `--exec-prefix' option says otherwise. |
| 5157 | |
| 5158 | The `--exec-prefix=EXECDIR' option allows you to specify a separate |
| 5159 | portion of the directory tree for installing architecture-specific |
| 5160 | files, like executables and utility programs. If specified, |
| 5161 | - Emacs (and the other utilities users run) go in EXECDIR/bin, and |
| 5162 | - The architecture-dependent files go in |
| 5163 | EXECDIR/lib/emacs/VERSION/CONFIGURATION. |
| 5164 | EXECDIR/bin should be a directory that is normally in users' PATHs. |
| 5165 | |
| 5166 | ** When running under X, the new lisp function `x-list-fonts' |
| 5167 | allows code to find out which fonts are available from the X server. |
| 5168 | The first argument PATTERN is a string, perhaps with wildcard characters; |
| 5169 | the * character matches any substring, and |
| 5170 | the ? character matches any single character. |
| 5171 | PATTERN is case-insensitive. |
| 5172 | If the optional arguments FACE and FRAME are specified, then |
| 5173 | `x-list-fonts' returns only fonts the same size as FACE on FRAME. |
| 5174 | |
| 5175 | |
| 5176 | \f |
| 5177 | * Changes in version 19. |
| 5178 | |
| 5179 | ** When you kill buffers, Emacs now returns memory to the operating system, |
| 5180 | thus reducing the size of the Emacs process. All the space that you free |
| 5181 | up by killing buffers can now be reused for other buffers no matter what |
| 5182 | their sizes, or reused by other processes if Emacs doesn't need it. |
| 5183 | |
| 5184 | ** Emacs now does garbage collection and auto saving while it is waiting |
| 5185 | for input, which often avoids the need to do these things while you |
| 5186 | are typing. |
| 5187 | |
| 5188 | The variable `auto-save-timeout' says how many seconds Emacs should |
| 5189 | wait, after you stop typing, before it does an auto save and a garbage |
| 5190 | collection. |
| 5191 | |
| 5192 | ** If auto saving detects that a buffer has shrunk greatly, it refrains |
| 5193 | from auto saving that buffer and displays a warning. Now it also turns |
| 5194 | off Auto Save mode in that buffer, so that you won't get the same |
| 5195 | warning again. |
| 5196 | |
| 5197 | If you reenable Auto Save mode in that buffer, Emacs will start saving |
| 5198 | it again with no further warnings. |
| 5199 | |
| 5200 | ** A new minor mode called Line Number mode displays the current line |
| 5201 | number in the mode line, updating it as necessary when you move |
| 5202 | point. |
| 5203 | |
| 5204 | However, if the buffer is very large (larger than the value of |
| 5205 | `line-number-display-limit'), then the line number doesn't appear. |
| 5206 | This is because computing the line number can be painfully slow if the |
| 5207 | buffer is very large. |
| 5208 | |
| 5209 | ** You can quit while Emacs is waiting to read or write files. |
| 5210 | |
| 5211 | ** The arrow keys now have default bindings to move in the appropriate |
| 5212 | directions. |
| 5213 | |
| 5214 | ** You can suppress next-line's habit of inserting a newline when |
| 5215 | called at the end of a buffer by setting next-line-add-newlines to nil |
| 5216 | (it defaults to t). |
| 5217 | |
| 5218 | ** You can now get back recent minibuffer inputs conveniently. While |
| 5219 | in the minibuffer, type M-p to fetch the next earlier minibuffer |
| 5220 | input, and use M-n to fetch the next later input. |
| 5221 | |
| 5222 | There are also commands to search forward or backward through the |
| 5223 | history for history elements that match a regular expression. M-r |
| 5224 | searches older elements in the history, while M-s searches newer |
| 5225 | elements. By special dispensation, these commands can always use the |
| 5226 | minibuffer to read their arguments even though you are already in the |
| 5227 | minibuffer when you issue them. |
| 5228 | |
| 5229 | The history feature is available for all uses of the minibuffer, but |
| 5230 | there are separate history lists for different kinds of input. For |
| 5231 | example, there is a list for file names, used by all the commands that |
| 5232 | read file names. There is a list for arguments of commands like |
| 5233 | `query-replace'. There are also very specific history lists, such |
| 5234 | as the one that `compile' uses for compilation commands. |
| 5235 | |
| 5236 | ** You can now display text in a mixture of fonts and colors, using the |
| 5237 | "face" feature, together with the overlay and text property features. |
| 5238 | See the Emacs Lisp manual for details. The Emacs Users Manual describes |
| 5239 | how to change the colors and font of standard predefined faces. |
| 5240 | |
| 5241 | ** You can refer to files on other machines using special file name syntax: |
| 5242 | |
| 5243 | /HOST:FILENAME |
| 5244 | /USER@HOST:FILENAME |
| 5245 | |
| 5246 | When you do this, Emacs uses the FTP program to read and write files on |
| 5247 | the specified host. It logs in through FTP using your user name or the |
| 5248 | name USER. It may ask you for a password from time to time; this |
| 5249 | is used for logging in on HOST. |
| 5250 | |
| 5251 | ** Some C-x key bindings have been moved onto new prefix keys. |
| 5252 | |
| 5253 | C-x r is a prefix for registers and rectangles. |
| 5254 | C-x n is a prefix for narrowing. |
| 5255 | C-x a is a prefix for abbrev commands. |
| 5256 | |
| 5257 | C-x r C-SPC |
| 5258 | C-x r SPC point-to-register (Was C-x /) |
| 5259 | C-x r j jump-to-register (Was C-x j) |
| 5260 | C-x r s copy-to-register (Was C-x x) |
| 5261 | C-x r i insert-register (Was C-x g) |
| 5262 | C-x r r copy-rectangle-to-register (Was C-x r) |
| 5263 | C-x r k kill-rectangle |
| 5264 | C-x r y yank-rectangle |
| 5265 | C-x r o open-rectangle |
| 5266 | C-x r f frame-configuration-to-register |
| 5267 | (This saves the state of all windows in all frames.) |
| 5268 | C-x r w window-configuration-to-register |
| 5269 | (This saves the state of all windows in the selected frame.) |
| 5270 | |
| 5271 | (Use C-x r j to restore a configuration saved with C-x r f or C-x r w.) |
| 5272 | |
| 5273 | C-x n n narrow-to-region (Was C-x n) |
| 5274 | C-x n p narrow-to-page (Was C-x p) |
| 5275 | C-x n w widen (Was C-x w) |
| 5276 | |
| 5277 | C-x a l add-mode-abbrev (Was C-x C-a) |
| 5278 | C-x a g add-global-abbrev (Was C-x +) |
| 5279 | C-x a i l inverse-add-mode-abbrev (Was C-x C-h) |
| 5280 | C-x a i g inverse-add-global-abbrev (Was C-x -) |
| 5281 | C-x a e expand-abbrev (Was C-x ') |
| 5282 | |
| 5283 | (The old key bindings C-x /, C-x j, C-x x and C-x g |
| 5284 | have not yet been removed.) |
| 5285 | |
| 5286 | ** You can put a file name in a register to be able to visit the file |
| 5287 | quickly. Do this: |
| 5288 | |
| 5289 | (set-register ?CHAR '(file . NAME)) |
| 5290 | |
| 5291 | where NAME is the file name as a string. Then C-x r j CHAR finds that |
| 5292 | file. |
| 5293 | |
| 5294 | This is useful for files that you need to visit frequently, |
| 5295 | but that you don't want to keep in buffers all the time. |
| 5296 | |
| 5297 | ** The keys M-g (fill-region) and C-x a (append-to-buffer) |
| 5298 | have been eliminated. |
| 5299 | |
| 5300 | ** The new command `string-rectangle' inserts a specified string on |
| 5301 | each line of the region-rectangle. |
| 5302 | |
| 5303 | ** C-x 4 r is now `find-file-read-only-other-window'. |
| 5304 | |
| 5305 | ** C-x 4 C-o is now `display-buffer', which displays a specified buffer |
| 5306 | in another window without selecting it. |
| 5307 | |
| 5308 | ** Picture mode has been substantially improved. The picture editing commands |
| 5309 | now arrange for automatic horizontal scrolling to keep point visible |
| 5310 | when editing a wide buffer with truncate-lines on. Picture-mode |
| 5311 | initialization now does a better job of rebinding standard commands; |
| 5312 | it finds not just their normal keybindings, but any function keys |
| 5313 | attached to them. |
| 5314 | |
| 5315 | ** If you enable Transient Mark mode, then the mark becomes "inactive" |
| 5316 | after every command that modifies the buffer. While the mark is |
| 5317 | active, the region is highlighted (under X, at least). Most commands |
| 5318 | that use the mark give an error if the mark is inactive, but you can |
| 5319 | use C-x C-x to make it active again. This feature is also sometimes |
| 5320 | known as "Zmacs mode". |
| 5321 | |
| 5322 | ** Outline mode is now available as a minor mode. This minor mode can |
| 5323 | combine with any major mode; it substitutes the C-c commands of |
| 5324 | Outline mode for those of the major mode. Use M-x outline-minor-mode |
| 5325 | to enable and disable the new mode. |
| 5326 | |
| 5327 | M-x outline-mode is unchanged; it still switches to Outline mode as a |
| 5328 | major mode. |
| 5329 | |
| 5330 | ** The default setting of `version-control' comes from the environment |
| 5331 | variable VERSION_CONTROL. |
| 5332 | |
| 5333 | ** The user option for controlling whether files can set local |
| 5334 | variables is now called `enable-local-variables'. A value of t means |
| 5335 | local-variables lists are obeyed; nil means they are ignored; anything |
| 5336 | else means query the user. |
| 5337 | |
| 5338 | The user option for controlling use of the `eval' local variable is |
| 5339 | now called is `enable-local-eval'; its values are interpreted like |
| 5340 | those of `enable-local-variables'. |
| 5341 | |
| 5342 | ** X Window System changes: |
| 5343 | |
| 5344 | C-x 5 C-f and C-x 5 b switch to a specified file or buffer in a new |
| 5345 | frame. Likewise, C-x 5 m starts outgoing mail in another frame, and |
| 5346 | C-x 5 . finds a tag in another frame. |
| 5347 | |
| 5348 | When you are using X, C-z now iconifies the selected frame. |
| 5349 | |
| 5350 | Emacs can now exchange text with other X applications. Killing or |
| 5351 | copying text in Emacs now makes that text available for pasting into |
| 5352 | other X applications. The Emacs yanking commands now insert the |
| 5353 | latest selection set by other applications, and add the text to the |
| 5354 | kill ring. The Emacs commands for selecting and inserting text with |
| 5355 | the mouse now use the kill ring in the same way the keyboard killing |
| 5356 | and yanking commands do. |
| 5357 | |
| 5358 | The option to specify the title for the initial frame is now `-name NAME'. |
| 5359 | There is currently no way to specify an icon title; perhaps we will add |
| 5360 | one in the future. |
| 5361 | |
| 5362 | ** Undoing a deletion now puts point back where it was before the |
| 5363 | deletion. |
| 5364 | |
| 5365 | ** The variables that control how much undo information to save have |
| 5366 | been renamed to `undo-limit' and `undo-strong-limit'. They used to be |
| 5367 | called `undo-threshold' and `undo-high-threshold'. |
| 5368 | |
| 5369 | ** You can now use kill commands in read-only buffers. They don't |
| 5370 | actually change the buffer, and Emacs will beep and warn you that the |
| 5371 | buffer is read-only, but they do copy the text you tried to kill into |
| 5372 | the kill ring, so you can yank it into other buffers. |
| 5373 | |
| 5374 | ** C-o inserts the fill-prefix on the newly created line. The command |
| 5375 | M-^ deletes the prefix (if it occurs) after the newline that it |
| 5376 | deletes. |
| 5377 | |
| 5378 | ** C-M-l now runs the command `reposition-window'. It scrolls the |
| 5379 | window heuristically in a way designed to get useful information onto |
| 5380 | the screen. |
| 5381 | |
| 5382 | ** C-M-r is now reverse incremental regexp search. |
| 5383 | |
| 5384 | ** M-z now kills through the target character. In version 18, it |
| 5385 | killed up to but not including the target character. |
| 5386 | |
| 5387 | ** M-! now runs the specified shell command asynchronously if it |
| 5388 | ends in `&' (just as the shell does). |
| 5389 | |
| 5390 | ** C-h C-f and C-h C-k are new help commands that display the Info |
| 5391 | node for a given Emacs function name or key sequence, respectively. |
| 5392 | |
| 5393 | ** The C-h p command system lets you find Emacs Lisp packages by |
| 5394 | topic keywords. Here is a partial list of package categories: |
| 5395 | |
| 5396 | abbrev abbreviation handling, typing shortcuts, macros |
| 5397 | bib code related to the bib bibliography processor |
| 5398 | c C and C++ language support |
| 5399 | calendar calendar and time management support |
| 5400 | comm communications, networking, remote access to files |
| 5401 | docs support for Emacs documentation |
| 5402 | emulations emulations of other editors |
| 5403 | extensions Emacs Lisp language extensions |
| 5404 | games games, jokes and amusements |
| 5405 | hardware support for interfacing with exotic hardware |
| 5406 | help support for on-line help systems |
| 5407 | i14n internationalization and alternate character-set support |
| 5408 | internal code for Emacs internals, build process, defaults |
| 5409 | languages specialized modes for editing programming languages |
| 5410 | lisp Lisp support, including Emacs Lisp |
| 5411 | local code local to your site |
| 5412 | maint maintenance aids for the Emacs development group |
| 5413 | mail modes for electronic-mail handling |
| 5414 | news support for netnews reading and posting |
| 5415 | processes process, subshell, compilation, and job control support |
| 5416 | terminals support for terminal types |
| 5417 | tex code related to the TeX formatter |
| 5418 | tools programming tools |
| 5419 | unix front-ends/assistants for, or emulators of, UNIX features |
| 5420 | vms support code for vms |
| 5421 | wp word processing |
| 5422 | |
| 5423 | More will be added soon. |
| 5424 | |
| 5425 | ** The command to split a window into two side-by-side windows is now |
| 5426 | C-x 3. It was C-x 5. |
| 5427 | |
| 5428 | ** M-. (find-tag) no longer has any effect on what M-, will do |
| 5429 | subsequently. You can no longer use M-, to find the next similar tag; |
| 5430 | you must use M-. with a prefix argument, instead. |
| 5431 | |
| 5432 | The motive for this change is so that you can more reliably use |
| 5433 | M-, to resume a suspended `tags-search' or `tags-query-replace'. |
| 5434 | |
| 5435 | ** C-x s (`save-some-buffers') now gives you more options when it asks |
| 5436 | whether to save a particular buffer. In addition to `y' or `n', you |
| 5437 | can answer `!' to save all the remaining buffers, `.' to save this |
| 5438 | buffer but not save any others, ESC to stop saving and exit the |
| 5439 | command, and C-h to get help. These options are analogous to those |
| 5440 | of `query-replace'. |
| 5441 | |
| 5442 | ** M-x make-symbolic-link does not expand its first argument. |
| 5443 | This lets you make a link with a target that is a relative file name. |
| 5444 | |
| 5445 | ** M-x add-change-log-entry and C-x 4 a now automatically insert the |
| 5446 | name of the file and often the name of the function that you changed. |
| 5447 | They also handle grouping of entries. |
| 5448 | |
| 5449 | There is now a special major mode for editing ChangeLog files. It |
| 5450 | makes filling work conveniently. Each bunch of grouped entries is one |
| 5451 | paragraph, and each collection of entries from one person on one day |
| 5452 | is considered a page. |
| 5453 | |
| 5454 | ** The `comment-region' command adds comment delimiters to the lines that |
| 5455 | start in the region, thus commenting them out. With a negative argument, |
| 5456 | it deletes comment delimiters from the lines in the region--this cancels |
| 5457 | the effect of `comment-region' without an argument. |
| 5458 | |
| 5459 | With a positive argument, `comment-region' adds comment delimiters |
| 5460 | but duplicates the last character of the comment start sequence as many |
| 5461 | times as the argument specifies. This is a way of calling attention to |
| 5462 | the comment. In Lisp, you should use an argument at least two, because |
| 5463 | the indentation convention for single semicolon comments does not leave |
| 5464 | them at the beginning of a line. |
| 5465 | |
| 5466 | ** If `split-window-keep-point' is non-nil, C-x 2 tries to avoid |
| 5467 | shifting any text on the screen by putting point in whichever window |
| 5468 | happens to contain the screen line the cursor is already on. |
| 5469 | The default is that `split-window-keep-point' is non-nil on slow |
| 5470 | terminals. |
| 5471 | |
| 5472 | ** M-x super-apropos is like M-x apropos except that it searches both |
| 5473 | Lisp symbol names and documentation strings for matches. It describes |
| 5474 | every symbol that has a match in either the symbol's name or its |
| 5475 | documentation. |
| 5476 | |
| 5477 | Both M-x apropos and M-x super-apropos take an optional second |
| 5478 | argument DO-ALL which controls the more expensive part of the job. |
| 5479 | This includes looking up and printing the key bindings of all |
| 5480 | commands. It also includes checking documentation strings in |
| 5481 | super-apropos. DO-ALL is nil by default; use a prefix arg to make it |
| 5482 | non-nil. |
| 5483 | |
| 5484 | ** M-x revert-buffer no longer offers to revert from a recent auto-save |
| 5485 | file unless you give it a prefix argument. Otherwise it always |
| 5486 | reverts from the real file regardless of whether there has been an |
| 5487 | auto-save since then. (Reverting from the auto-save file is no longer |
| 5488 | very useful now that the undo capacity is larger.) |
| 5489 | |
| 5490 | ** M-x recover-file no longer turns off Auto Save mode when it reads |
| 5491 | the last Auto Save file. |
| 5492 | |
| 5493 | ** M-x rename-buffer, if you give it a prefix argument, |
| 5494 | avoids errors by modifying the new name to make it unique. |
| 5495 | |
| 5496 | ** M-x rename-uniquely renames the current buffer to a similar name |
| 5497 | with a numeric suffix added to make it both different and unique. |
| 5498 | |
| 5499 | One use of this command is for creating multiple shell buffers. |
| 5500 | If you rename your shell buffer, and then do M-x shell again, it |
| 5501 | makes a new shell buffer. This method is also good for mail buffers, |
| 5502 | compilation buffers, and any Emacs feature which creates a special |
| 5503 | buffer with a particular name. |
| 5504 | |
| 5505 | ** M-x compare-windows with a prefix argument ignores changes in whitespace. |
| 5506 | If `compare-ignore-case' is non-nil, then differences in case are also |
| 5507 | ignored. |
| 5508 | |
| 5509 | ** `backward-paragraph' is now bound to M-{ by default, and `forward-paragraph' |
| 5510 | to M-}. Originally, these commands were bound to M-[ and M-], but they were |
| 5511 | running into conflicts with the use of function keys. On many terminals, |
| 5512 | function keys send a sequence beginning ESC-[, so many users have defined this |
| 5513 | as a prefix key. |
| 5514 | |
| 5515 | ** C-x C-u (upcase-region) and C-x C-l (downcase-region) are now disabled by |
| 5516 | default; these commands seem to be often hit by accident, and can be |
| 5517 | quite destructive if their effects are not noticed immediately. |
| 5518 | |
| 5519 | ** The function `erase-buffer' is now interactive, but disabled by default. |
| 5520 | |
| 5521 | ** When visiting a new file, Emacs attempts to abbreviate the file's |
| 5522 | path using the symlinks listed in `directory-abbrev-alist'. |
| 5523 | |
| 5524 | ** When you visit the same file in under two names that translate into |
| 5525 | the same name once symbolic links are handled, Emacs warns you that |
| 5526 | you have two buffers for the same file. |
| 5527 | |
| 5528 | ** If you wish to avoid visiting the same file in two buffers under |
| 5529 | different names, set the variable `find-file-existing-other-name' |
| 5530 | non-nil. Then `find-file' uses the existing buffer visiting the file, |
| 5531 | no matter which of the file's names you specify. |
| 5532 | |
| 5533 | ** If you set `find-file-visit-truename' non-nil, then the file name |
| 5534 | recorded for a buffer is the file's truename (in which all symbolic |
| 5535 | links have been removed), rather than the name you specify. Setting |
| 5536 | `find-file-visit-truename' also implies the effect of |
| 5537 | `find-file-existing-other-name'. |
| 5538 | |
| 5539 | ** C-x C-v now inserts the entire current file name in the minibuffer. |
| 5540 | This is convenient if you made a small mistake in typing it. Point |
| 5541 | goes after the last slash, before the last file name component, so if |
| 5542 | you want to replace it entirely, you can use C-k right away to delete |
| 5543 | it. |
| 5544 | |
| 5545 | ** Commands such as C-M-f in Lisp mode now ignore parentheses within comments. |
| 5546 | |
| 5547 | ** C-x q now uses ESC to terminate all iterations of the keyboard |
| 5548 | macro, rather than C-d as before. |
| 5549 | |
| 5550 | ** Use the command `setenv' to set an individual environment variable |
| 5551 | for Emacs subprocesses. Specify a variable name and a value, both as |
| 5552 | strings. This command applies only to subprocesses yet to be |
| 5553 | started. |
| 5554 | |
| 5555 | ** Use `rot13-other-window' to examine a buffer with rot13. |
| 5556 | |
| 5557 | This command does not change the text in the buffer. Instead, it |
| 5558 | creates a window with a funny display table that applies the code when |
| 5559 | displaying the text. |
| 5560 | |
| 5561 | ** The command `M-x version' now prints the current Emacs version; The |
| 5562 | `version' command is an alias for the `emacs-version' command. |
| 5563 | |
| 5564 | ** More complex changes in existing packages. |
| 5565 | |
| 5566 | *** `fill-nonuniform-paragraphs' is a new command, much like |
| 5567 | `fill-individual-paragraphs' except that only separator lines separate |
| 5568 | paragraphs. Since this means that the lines of one paragraph may have |
| 5569 | different amounts of indentation, the fill prefix used is the smallest |
| 5570 | amount of indentation of any of the lines of the paragraph. |
| 5571 | |
| 5572 | *** Filling is now partially controlled by a new minor mode, Adaptive |
| 5573 | Fill mode. When this mode is enabled (and it is enabled by default), |
| 5574 | if you use M-x fill-region-as-paragraph on an indented paragraph and |
| 5575 | you don't have a fill prefix, it uses the indentation of the second |
| 5576 | line of the paragraph as the fill prefix. |
| 5577 | |
| 5578 | Adaptive Fill mode doesn't have much effect on M-q in most major |
| 5579 | modes, because an indented line will probably count as a paragraph |
| 5580 | starter and thus each line of an indented paragraph will be considered |
| 5581 | a paragraph of its own. |
| 5582 | |
| 5583 | *** M-q in C mode now runs `c-fill-paragraph', which is designed |
| 5584 | for filling C comments. (We assume you don't want to fill |
| 5585 | the code in a C program.) |
| 5586 | |
| 5587 | *** M-$ now runs the Ispell program instead of the Unix spell program. |
| 5588 | |
| 5589 | M-$ starts an Ispell process the first time you use it. But the process |
| 5590 | stays alive, so that subsequent uses of M-$ run very fast. |
| 5591 | If you want to get rid of the process, use M-x kill-ispell. |
| 5592 | |
| 5593 | To check the entire current buffer, use M-x ispell-buffer. |
| 5594 | Use M-x ispell-region to check just the current region. |
| 5595 | |
| 5596 | Ispell commands often involve interactive replacement of words. |
| 5597 | You can interrupt the interactive replacement with C-g. |
| 5598 | You can restart it again afterward with C-u M-$. |
| 5599 | |
| 5600 | During interactive replacement, you can type the following characters: |
| 5601 | |
| 5602 | a Accept this word this time. |
| 5603 | DIGIT Replace the word (this time) with one of the displayed near-misses. |
| 5604 | The digit you use says which near-miss to use. |
| 5605 | i Insert this word in your private dictionary |
| 5606 | so that Ispell will consider it correct it from now on. |
| 5607 | r Replace the word this time with a string typed by you. |
| 5608 | |
| 5609 | When the Ispell process starts, it reads your private dictionary which |
| 5610 | is the file `~/ispell.words'. If you "insert" words with the `i' command, |
| 5611 | these words are added to that file, but not right away--only at the end |
| 5612 | of the interactive replacement process. |
| 5613 | |
| 5614 | Use M-x reload-ispell to reload your private dictionary from |
| 5615 | `~/ispell.words' if you edit it outside of Ispell. |
| 5616 | |
| 5617 | ** Changes in existing modes. |
| 5618 | |
| 5619 | *** gdb-mode has been replaced by gud-mode. |
| 5620 | |
| 5621 | The package gud.el (Grand Unified Debugger) replaces gdb.el in Emacs |
| 5622 | 19. It provides a gdb.el-like interface to any of three debuggers; |
| 5623 | gdb itself, the sdb debugger supported on some Unix systems, or the |
| 5624 | dbx debugger on Berkeley systems. |
| 5625 | |
| 5626 | You start it up with one of the commands M-x gdb, M-x sdb, or |
| 5627 | M-x dbx. Each entry point finishes by executing a hook; gdb-mode-hook, |
| 5628 | sdb-mode-hook or dbx-mode-hook respectively. |
| 5629 | |
| 5630 | These bindings have changed: |
| 5631 | C-x C-a > gud-down (was M-d) |
| 5632 | C-x C-a < gud-up (was M-u) |
| 5633 | C-x C-a C-r gud-cont (was M-c) |
| 5634 | C-x C-a C-n gud-next (was M-n) |
| 5635 | C-x C-a C-s gud-step (was M-s) |
| 5636 | C-x C-a C-i gud-stepi (was M-i) |
| 5637 | C-x C-a C-l gud-recenter (was C-l) |
| 5638 | C-d comint-delchar-or-maybe-eof (was C-c C-d) |
| 5639 | |
| 5640 | These bindings have been removed: |
| 5641 | C-c C-r (was comint-show-output; now gud-cont) |
| 5642 | |
| 5643 | Since GUD mode uses comint, it uses comint's input history commands, |
| 5644 | superseding C-c C-y (copy-last-shell-input): |
| 5645 | M-p comint-next-input |
| 5646 | M-n comint-previous-input |
| 5647 | M-r comint-previous-similar-input |
| 5648 | M-s comint-next-similar-input |
| 5649 | M-C-r comint-previous-input-matching |
| 5650 | |
| 5651 | The C-x C-a bindings are also active in source files. |
| 5652 | |
| 5653 | *** The old TeX mode bindings of M-{ and M-} have been moved to C-c { |
| 5654 | and C-c }. (These commands are `up-list' and `tex-insert-braces'; |
| 5655 | they are the TeX equivalents of M-( and M-).) This is because M-{ |
| 5656 | and M-} are now globally defined commands. |
| 5657 | |
| 5658 | *** Changes in Mail mode. |
| 5659 | |
| 5660 | `%' is now a word-separator character in Mail mode. |
| 5661 | |
| 5662 | `mail-signature', if non-nil, tells M-x mail to insert your |
| 5663 | `.signature' file automatically. If you don't want your signature in |
| 5664 | a particular message, just delete it before you send the message. |
| 5665 | |
| 5666 | You can specify the text to insert at the beginning of each line when |
| 5667 | you use C-c C-y to yank the message you are replying to. Set |
| 5668 | `mail-yank-prefix' to the desired string. A value of `nil' (the |
| 5669 | default) means to use indentation, as in Emacs 18. If you use just |
| 5670 | C-u as the prefix argument to C-c C-y, then it does not insert |
| 5671 | anything at the beginning of the lines, regardless of the value of |
| 5672 | `mail-yank-prefix'. |
| 5673 | |
| 5674 | If you like, you can expand mail aliases as abbrevs, as soon as you |
| 5675 | type them in. To enable this feature, execute the following: |
| 5676 | |
| 5677 | (add-hook 'mail-setup-hook 'mail-abbrevs-setup) |
| 5678 | |
| 5679 | This can go in your .emacs file. |
| 5680 | |
| 5681 | Word abbrevs don't expand unless you insert a word-separator character |
| 5682 | afterward. Any mail aliases that you didn't expand at insertion time |
| 5683 | are expanded subsequently when you send the message. |
| 5684 | |
| 5685 | *** Changes in Rmail. |
| 5686 | |
| 5687 | Rmail by default gets new mail only from the system inbox file, |
| 5688 | not from `~/mbox'. |
| 5689 | |
| 5690 | In Rmail, you can retry sending a message that failed |
| 5691 | by typing `M-m' on the failure message. |
| 5692 | |
| 5693 | By contrast, another new command M-x rmail-resend is used for |
| 5694 | forwarding a message and marking it as "resent from" you |
| 5695 | with header fields "Resent-From:" and "Resent-To:". |
| 5696 | |
| 5697 | `e' is now the command to edit a message. |
| 5698 | To expunge, type `x'. We know this will surprise people |
| 5699 | some of the time, but the surprise will not be disastrous--if |
| 5700 | you type `e' meaning to expunge, just turn off editing with C-c C-c |
| 5701 | and then type `x'. |
| 5702 | |
| 5703 | Another new Rmail command is `<', which moves to the first message. |
| 5704 | This is for symmetry with `>'. |
| 5705 | |
| 5706 | Use the `b' command to bury the Rmail buffer and its summary buffer, |
| 5707 | if any, removing both of them from display on the screen. |
| 5708 | |
| 5709 | The variable `rmail-output-file-alist' now controls the default |
| 5710 | for the file to output a message to. |
| 5711 | |
| 5712 | In the Rmail summary buffer, all cursor motion commands select |
| 5713 | the message you move to. It's really neat when you use |
| 5714 | incremental search. |
| 5715 | |
| 5716 | You can now issue most Rmail commands from an Rmail summary buffer. |
| 5717 | The commands do the same thing in that buffer that they do in the |
| 5718 | Rmail buffer. They apply to the message that is selected in the Rmail |
| 5719 | buffer, which is always the one described by the current summary |
| 5720 | line. |
| 5721 | |
| 5722 | Conversely, motion and deletion commands in the Rmail buffer also |
| 5723 | update the summary buffer. If you set the variable |
| 5724 | `rmail-redisplay-summary' to a non-nil value, then they bring the |
| 5725 | summary buffer (if one exists) back onto the screen. |
| 5726 | |
| 5727 | C-M-t is a new command to make a summary by topic. It uses regexp |
| 5728 | matching against just the subjects of the messages to decide which |
| 5729 | messages to show in the summary. |
| 5730 | |
| 5731 | You can easily convert an Rmail file to system mailbox format with the |
| 5732 | command `unrmail'. This command reads two arguments, the name of |
| 5733 | the Rmail file to convert, and the name of the new mailbox file. |
| 5734 | (This command does not change the Rmail file itself.) |
| 5735 | |
| 5736 | Rmail now handles Content Length fields in messages. |
| 5737 | |
| 5738 | *** `mail-extract-address-components' unpacks mail addresses. |
| 5739 | It takes an address as a string (the contents of the From field, for |
| 5740 | example) and returns a list of the form (FULL-NAME |
| 5741 | CANONICAL-ADDRESS). |
| 5742 | |
| 5743 | *** Changes in C mode and C-related commands. |
| 5744 | |
| 5745 | **** M-x c-up-conditional |
| 5746 | |
| 5747 | In C mode, `c-up-conditional' moves back to the containing |
| 5748 | preprocessor conditional, setting the mark where point was |
| 5749 | previously. |
| 5750 | |
| 5751 | A prefix argument acts as a repeat count. With a negative argument, |
| 5752 | this command moves forward to the end of the containing preprocessor |
| 5753 | conditional. When going backwards, `#elif' acts like `#else' followed |
| 5754 | by `#if'. When going forwards, `#elif' is ignored. |
| 5755 | |
| 5756 | **** In C mode, M-a and M-e are now defined as |
| 5757 | `c-beginning-of-statement' and `c-end-of-statement'. |
| 5758 | |
| 5759 | **** In C mode, M-x c-backslash-region is a new command to insert or |
| 5760 | align `\' characters at the ends of the lines of the region, except |
| 5761 | for the last such line. This is useful after writing or editing a C |
| 5762 | macro definition. |
| 5763 | |
| 5764 | If a line already ends in `\', this command adjusts the amount of |
| 5765 | whitespace before it. Otherwise, it inserts a new `\'. |
| 5766 | |
| 5767 | *** New features in info. |
| 5768 | |
| 5769 | When Info looks for an Info file, it searches the directories |
| 5770 | in `Info-directory-list'. This makes it easy to install the Info files |
| 5771 | that come with various packages. You can specify the path with |
| 5772 | the environment variable INFOPATH. |
| 5773 | |
| 5774 | There are new commands in Info mode. |
| 5775 | |
| 5776 | `]' now moves forward a node, going up and down levels as needed. |
| 5777 | `[' is similar but moves backward. These two commands try to traverse |
| 5778 | the entire Info tree, node by node. They are the equivalent of reading |
| 5779 | a printed manual sequentially. |
| 5780 | |
| 5781 | `<' moves to the top node of the current Info file. |
| 5782 | `>' moves to the last node of the file. |
| 5783 | |
| 5784 | SPC scrolls through the current node; at the end, it advances to the |
| 5785 | next node in depth-first order (like `]'). |
| 5786 | |
| 5787 | DEL scrolls backwards in the current node; at the end, it moves to the |
| 5788 | previous node in depth-first order (like `['). |
| 5789 | |
| 5790 | After a menu select, the info `up' command now restores point in the |
| 5791 | menu. The combination of this and the previous two changes means that |
| 5792 | repeated SPC keystrokes do the right (depth-first traverse forward) thing. |
| 5793 | |
| 5794 | `i STRING RET' moves to the node associated with STRING in the index |
| 5795 | or indices of this manual. If there is more than one match for |
| 5796 | STRING, the `i' command finds the first match. |
| 5797 | |
| 5798 | `,' finds the next match for the string in the previous `i' command |
| 5799 | |
| 5800 | If you click the middle mouse button near a cross-reference, |
| 5801 | menu item or node pointer while in Info, you will go to the node |
| 5802 | which is referenced. |
| 5803 | |
| 5804 | *** Changes in M-x compile. |
| 5805 | |
| 5806 | You can repeat any previous compilation command conveniently using the |
| 5807 | minibuffer history commands, while in the minibuffer entering the |
| 5808 | compilation command. |
| 5809 | |
| 5810 | While a compilation is going on, the string `Compiling' appears in |
| 5811 | the mode line. When this string disappears, that tells you the |
| 5812 | compilation is finished. |
| 5813 | |
| 5814 | The buffer of compiler messages is in Compilation mode. This mode |
| 5815 | provides the keys SPC and DEL to scroll by screenfuls, and M-n and M-p |
| 5816 | to move to the next or previous error message. You can also use C-c |
| 5817 | C-c on any error message to find the corresponding source code. |
| 5818 | |
| 5819 | Emacs 19 has a more general parser for compiler messages. For example, it |
| 5820 | can understand messages from lint, and from certain C compilers whose error |
| 5821 | message format is unusual. Also, it only parses until it sees the error |
| 5822 | message you want; you never have to wait a long time to see the first |
| 5823 | error, no matter how big the buffer is. |
| 5824 | |
| 5825 | *** M-x diff and M-x diff-backup. |
| 5826 | |
| 5827 | This new command compares two files, displaying the differences in an |
| 5828 | Emacs buffer. The options for the `diff' program come from the |
| 5829 | variable `diff-switches', whose value should be a string. |
| 5830 | |
| 5831 | The buffer of differences has Compilation mode as its major mode, so you |
| 5832 | can use C-x ` to visit successive changed locations in the two |
| 5833 | source files, or you can move to a particular hunk of changes and type |
| 5834 | C-c C-c to move to the corresponding source. You can also use the |
| 5835 | other special commands of Compilation mode: SPC and DEL for |
| 5836 | scrolling, and M-n and M-p for cursor motion. |
| 5837 | |
| 5838 | M-x diff-backup compares a file with its most recent backup. |
| 5839 | If you specify the name of a backup file, `diff-backup' compares it |
| 5840 | with the source file that it is a backup of. |
| 5841 | |
| 5842 | *** The View commands (such as M-x view-buffer and M-x view-file) no |
| 5843 | longer use recursive edits; instead, they switch temporarily to a |
| 5844 | different major mode (View mode) specifically designed for moving |
| 5845 | around through a buffer without editing it. |
| 5846 | |
| 5847 | *** Changes in incremental search. |
| 5848 | |
| 5849 | **** The character to terminate an incremental search is now RET. |
| 5850 | This is for compatibility with the way most other arguments are read. |
| 5851 | |
| 5852 | To search for a newline in an incremental search, type LFD (also known |
| 5853 | as C-j). |
| 5854 | |
| 5855 | **** Incremental search now maintains a ring of previous search |
| 5856 | strings. Use M-p and M-n to move through the ring to pick a search |
| 5857 | string to reuse. These commands leave the selected search ring |
| 5858 | element in the minibuffer, where you can edit it. Type C-s or C-r to |
| 5859 | finish editing and search for the chosen string. |
| 5860 | |
| 5861 | **** If you type an upper case letter in incremental search, that turns |
| 5862 | off case-folding, so that you get a case-sensitive search. |
| 5863 | |
| 5864 | **** If you type a space during regexp incremental search, it matches |
| 5865 | any sequence of whitespace characters. If you want to match just a space, |
| 5866 | type C-q SPC. |
| 5867 | |
| 5868 | **** Incremental search is now implemented as a major mode. When you |
| 5869 | type C-s, it switches temporarily to a different keymap which defines |
| 5870 | each key to do what it ought to do for incremental search. This has |
| 5871 | next to no effect on the user-visible behavior of searching, but makes |
| 5872 | it easier to customize that behavior. |
| 5873 | |
| 5874 | Emacs 19 eliminates the old variables `search-...-char' that used to |
| 5875 | be the way to specify the characters to use for various special |
| 5876 | purposes in incremental search. Instead, you can define the meaning |
| 5877 | of a character in incremental search by modifying `isearch-mode-map'. |
| 5878 | |
| 5879 | *** New commands in Buffer Menu mode. |
| 5880 | |
| 5881 | The command C-o now displays the current line's buffer in another |
| 5882 | window but does not select it. This is like the existing command `o' |
| 5883 | which selects the current line's buffer in another window. |
| 5884 | |
| 5885 | The command % toggles the read-only flag of the current line's buffer. |
| 5886 | |
| 5887 | The way to switch to a set of several buffers, including those marked |
| 5888 | with m, is now v. The q command simply quits, replacing the buffer |
| 5889 | menu buffer with the buffer that was displayed previously. |
| 5890 | |
| 5891 | ** New major modes and packages. |
| 5892 | |
| 5893 | *** The news reader GNUS is now installed. |
| 5894 | |
| 5895 | *** There is a new interface for version control systems, called VC. |
| 5896 | It works with both RCS and SCCS; in fact, you don't really have to |
| 5897 | know which one of them is being used, because it automatically deals |
| 5898 | with either one. |
| 5899 | |
| 5900 | Most of the time, the only command you have to know about is C-x C-q. |
| 5901 | This command normally toggles the read-only flag of the current |
| 5902 | buffer. If the buffer is visiting a file that is maintained with a |
| 5903 | version control system, the command still toggles read-only, but does |
| 5904 | so by checking the file in or checking it out. |
| 5905 | |
| 5906 | When you check a file in, VC asks you for a log entry by popping up a |
| 5907 | buffer. Edit the entry there, then type C-c C-c when it is ready. |
| 5908 | That's when the actual checkin happens. If you change your mind about |
| 5909 | the checkin, simply switch buffers and don't ever go back to the log |
| 5910 | buffer. |
| 5911 | |
| 5912 | To start using version control for a file, use the command C-x v v. |
| 5913 | This works like C-x C-q (performing the next logical version-control |
| 5914 | operation needed to change the file's writability) but it will also |
| 5915 | perform initial checkin on an unregistered file. |
| 5916 | |
| 5917 | By default, VC uses RCS if RCS is installed on your machine; |
| 5918 | otherwise, SCCS. If you want to make the choice explicitly, you can do |
| 5919 | it by setting `vc-default-back-end' to the symbol `RCS' or the symbol |
| 5920 | `SCCS'. |
| 5921 | |
| 5922 | You can tell when a file you visit is maintained with version control |
| 5923 | because either `RCS' or `SCCS' appears in the mode line. |
| 5924 | |
| 5925 | *** A new Calendar mode has been added, the work of Edward M. Reingold. |
| 5926 | The mode can display the Gregorian calendar and a variety of other |
| 5927 | calendars at any date, and interacts with a diary facility similar to |
| 5928 | the UNIX `calendar' utility. |
| 5929 | |
| 5930 | *** There is a new major mode for editing binary files: Hexl mode. |
| 5931 | To use it, use M-x hexl-find-file instead of C-x C-f to visit the file. |
| 5932 | This command converts the file's contents to hexadecimal and lets you |
| 5933 | edit the translation. When you save the file, it is converted |
| 5934 | automatically back to binary. |
| 5935 | |
| 5936 | You can also use M-x hexl-mode to translate an existing buffer into hex. |
| 5937 | Do this if you have already visited a binary file. |
| 5938 | |
| 5939 | Hexl mode has a few other commands: |
| 5940 | |
| 5941 | C-M-d insert a byte with a code typed in decimal. |
| 5942 | C-M-o insert a byte with a code typed in octal. |
| 5943 | C-M-x insert a byte with a code typed in hex. |
| 5944 | |
| 5945 | C-x [ move to the beginning of a 1k-byte "page". |
| 5946 | C-x ] move to the end of a 1k-byte "page". |
| 5947 | |
| 5948 | M-g go to an address specified in hex. |
| 5949 | M-j go to an address specified in decimal. |
| 5950 | |
| 5951 | C-c C-c leave hexl mode and go back to the previous major mode. |
| 5952 | |
| 5953 | *** Miscellaneous new major modes include Awk mode, Icon mode, Makefile |
| 5954 | mode, Perl mode and SGML mode. |
| 5955 | |
| 5956 | *** Edebug, a new source-level debugger for Emacs Lisp functions. |
| 5957 | |
| 5958 | To use Edebug, use the command M-x edebug-defun to "evaluate" a |
| 5959 | function definition in an Emacs Lisp file. We put "evaluate" in |
| 5960 | quotation marks because it doesn't just evaluate the function, it also |
| 5961 | inserts additional information to support source-level debugging. |
| 5962 | |
| 5963 | You must also do |
| 5964 | |
| 5965 | (setq debugger 'edebug-debug) |
| 5966 | |
| 5967 | to cause errors and single-stepping to use Edebug instead of the usual |
| 5968 | Emacs Lisp debugger. |
| 5969 | |
| 5970 | For more information, see the Edebug manual, which should be included |
| 5971 | in the Emacs distribution. |
| 5972 | |
| 5973 | *** C++ mode is like C mode, except that it understands C++ comment syntax |
| 5974 | and certain other differences between C and C++. It also has a command |
| 5975 | `fill-c++-comment' which fills a paragraph made of comment lines. |
| 5976 | |
| 5977 | The command `comment-region' is useful in C++ mode for commenting out |
| 5978 | several consecutive lines, or removing the commenting out of such lines. |
| 5979 | |
| 5980 | *** A new package for merging two variants of the same text. |
| 5981 | |
| 5982 | It's not unusual for programmers to get their signals crossed and |
| 5983 | modify the same program in two different directions. Then somebody |
| 5984 | has to merge the two versions. The command `emerge-files' makes this |
| 5985 | easier. |
| 5986 | |
| 5987 | `emerge-files' reads two file names and compares them. Then it |
| 5988 | displays three buffers: one for each file, and one for the |
| 5989 | differences. |
| 5990 | |
| 5991 | If the original version of the file is available, you can make things |
| 5992 | even easier using `emerge-files-with-ancestor'. It reads three file |
| 5993 | names--variant 1, variant 2, and the common ancestor--and uses diff3 |
| 5994 | to compare them. |
| 5995 | |
| 5996 | You control the merging interactively. The main loop of Emerge |
| 5997 | consists of showing you one set of differences, asking you what to do |
| 5998 | about them, and doing it. You have a choice of two modes for giving |
| 5999 | directions to Emerge: "fast" mode and "edit" mode. |
| 6000 | |
| 6001 | In Fast mode, Emerge commands are single characters, and ordinary |
| 6002 | Emacs commands are disabled. This makes Emerge operations fast, but |
| 6003 | prevents you from doing more than selecting the A or the B version of |
| 6004 | differences. In Edit mode, all emerge commands use the C-c prefix, |
| 6005 | and the usual Emacs commands are available. This allows editing the |
| 6006 | merge buffer, but slows down Emerge operations. Edit and fast modes |
| 6007 | are indicated by `F' and `E' in the minor modes in the mode line. |
| 6008 | |
| 6009 | The Emerge commands are: |
| 6010 | |
| 6011 | p go to the previous difference |
| 6012 | n go to the next difference |
| 6013 | a select the A version of this difference |
| 6014 | b select the B version of this difference |
| 6015 | j go to a particular difference (prefix argument |
| 6016 | specifies which difference) (0j suppresses display of |
| 6017 | the flags) |
| 6018 | q quit - finish the merge* |
| 6019 | f go into fast mode |
| 6020 | e go into edit mode |
| 6021 | l recenter (C-l) all three windows* |
| 6022 | - and 0 through 9 |
| 6023 | prefix numeric arguments |
| 6024 | d a select the A version as the default from here down in |
| 6025 | the merge buffer* |
| 6026 | d b select the B version as the default from here down in |
| 6027 | the merge buffer* |
| 6028 | c a copy the A version of the difference into the kill |
| 6029 | ring |
| 6030 | c b copy the B version of the difference into the kill |
| 6031 | ring |
| 6032 | i a insert the A version of the difference at the point |
| 6033 | i b insert the B version of the difference at the point |
| 6034 | m put the point and mark around the difference region |
| 6035 | ^ scroll-down (like M-v) the three windows* |
| 6036 | v scroll-up (like C-v) the three windows* |
| 6037 | < scroll-left (like C-x <) the three windows* |
| 6038 | > scroll-right (like C-x >) the three windows* |
| 6039 | | reset horizontal scroll on the three windows* |
| 6040 | x 1 shrink the merge window to one line (use C-u l to restore it |
| 6041 | to full size) |
| 6042 | x a find the difference containing a location in the A buffer* |
| 6043 | x b find the difference containing a location in the B buffer* |
| 6044 | x c combine the two versions of this difference* |
| 6045 | x C combine the two versions of this difference, using a |
| 6046 | register's value as the template* |
| 6047 | x d find the difference containing a location in the merge buffer* |
| 6048 | x f show the files/buffers Emerge is operating on in Help window |
| 6049 | (use C-u l to restore windows) |
| 6050 | x j join this difference with the following one |
| 6051 | (C-u x j joins this difference with the previous one) |
| 6052 | x l show line numbers of points in A, B, and merge buffers |
| 6053 | x m change major mode of merge buffer* |
| 6054 | x s split this difference into two differences |
| 6055 | (first position the point in all three buffers to the places |
| 6056 | to split the difference) |
| 6057 | x t trim identical lines off top and bottom of difference |
| 6058 | (such lines occur when the A and B versions are |
| 6059 | identical but differ from the ancestor version) |
| 6060 | x x set the template for the x c command* |
| 6061 | |
| 6062 | Normally, the merged output goes back in the first file specified. |
| 6063 | If you use a prefix argument, Emerge reads another file name to use |
| 6064 | for the output file. |
| 6065 | |
| 6066 | Once Emerge has prepared the buffer of differences, it runs the hooks |
| 6067 | in `emerge-startup-hooks'. |
| 6068 | |
| 6069 | *** Asm mode is a new major mode for editing files of assembler code. |
| 6070 | It defines these commands: |
| 6071 | |
| 6072 | TAB tab-to-tab-stop. |
| 6073 | LFD Insert a newline and then indent using tab-to-tab-stop. |
| 6074 | : Insert a colon and then remove the indentation |
| 6075 | from before the label preceding colon. Then tab-to-tab-stop. |
| 6076 | ; Insert or align a comment. |
| 6077 | |
| 6078 | *** Two-column mode lets you conveniently edit two side-by-side columns |
| 6079 | of text. It works using two side-by-side windows, each showing its |
| 6080 | own buffer. |
| 6081 | |
| 6082 | Here are three ways to enter two-column mode: |
| 6083 | |
| 6084 | C-x 6 2 makes the current buffer into the left-hand buffer. In the |
| 6085 | right-hand window it puts a buffer whose name is based on the current |
| 6086 | buffer's name. |
| 6087 | |
| 6088 | C-x 6 b BUFFER RET makes the current buffer into the left-hand buffer, |
| 6089 | and uses buffer BUFFER as the right-hand buffer. |
| 6090 | |
| 6091 | C-x 6 s splits the current buffer, which contains two-column text, |
| 6092 | into two side-by-side buffers. The old current buffer becomes the |
| 6093 | left-hand buffer, but the text in the right column is moved into the |
| 6094 | right-hand buffer. The current column specifies the split point. |
| 6095 | Splitting starts with the current line and continues to the end of the |
| 6096 | buffer. |
| 6097 | |
| 6098 | C-x 6 s takes a prefix argument which specifies how many characters |
| 6099 | before point constitute the column separator. (The default argument |
| 6100 | is 1, as usual, so by default the column separator is the character |
| 6101 | before point.) Lines that don't have the column separator at the |
| 6102 | proper place remain unsplit; they stay in the left-hand buffer, and |
| 6103 | the right-hand buffer gets an empty line to correspond. |
| 6104 | |
| 6105 | You can scroll both buffers together using C-x 6 SPC (scroll up), C-x |
| 6106 | 6 DEL (scroll down), and C-x 6 RET (scroll up one line). C-x 6 C-l |
| 6107 | recenters both buffers together. |
| 6108 | |
| 6109 | If you want to make a line which will span both columns, put it in |
| 6110 | the left-hand buffer, with an empty line in the corresponding place in |
| 6111 | the right-hand buffer. |
| 6112 | |
| 6113 | When you have edited both buffers as you wish, merge them with C-x 6 |
| 6114 | 1. This copies the text from the right-hand buffer as a second column |
| 6115 | in the other buffer. To go back to two-column editing, use C-x 6 s. |
| 6116 | |
| 6117 | Use C-x 6 d to dissociate the two buffers, leaving each as it |
| 6118 | stands. (If the other buffer, the one that was not current when you |
| 6119 | type C-x 6 d, is empty, C-x 6 d kills it.) |
| 6120 | |
| 6121 | *** You can supply command arguments such as files to visit to an Emacs |
| 6122 | that is already running. To do this, you must do this in your .emacs |
| 6123 | file: |
| 6124 | (add-hook 'suspend-hook 'resume-suspend-hook) |
| 6125 | Also you must use the shellscript emacs.csh or emacs.sh, found in the |
| 6126 | etc subdirectory. |
| 6127 | |
| 6128 | *** Shell mode has been completely replaced. |
| 6129 | The basic idea is the same, but there are new commands available in |
| 6130 | this mode. |
| 6131 | |
| 6132 | TAB now completes the file name before point in the shell buffer. |
| 6133 | To get a list of all possible completions, type M-?. |
| 6134 | |
| 6135 | There is a new convenient history mechanism for repeating previous |
| 6136 | commands. Use the command M-p to recall the last command; it copies |
| 6137 | the text of that command to the place where you are editing. If you |
| 6138 | repeat M-p, it replaces the copied command with the previous command. |
| 6139 | M-n is similar but goes in the opposite direction towards the present. |
| 6140 | When you find the command you wanted, you can edit it, or just |
| 6141 | resubmit it by typing RET. |
| 6142 | |
| 6143 | You can also use M-r and M-s to search for (respectively) earlier or |
| 6144 | later inputs starting with a given string. First type the string, |
| 6145 | then type M-r to yank a previous input from the history which starts |
| 6146 | with that string. You can repeat M-r to find successively earlier |
| 6147 | inputs starting with the same string. You can start moving in the |
| 6148 | opposite direction (toward more recent inputs) by typing M-s instead |
| 6149 | of M-r. As long as you don't use any commands except M-r and M-s, |
| 6150 | they keep using the same string that you had entered initially. |
| 6151 | |
| 6152 | C-c C-o kills the last batch of output from a shell command. This is |
| 6153 | useful if a shell command spews out lots of output that just gets in |
| 6154 | the way. |
| 6155 | |
| 6156 | C-c C-r scrolls to display the beginning of the last batch of output |
| 6157 | at the top of the window; it also moves the cursor there. |
| 6158 | |
| 6159 | C-a on a line that starts with a shell prompt moves to the end of the |
| 6160 | prompt, not to the very beginning of the line. |
| 6161 | |
| 6162 | C-d typed at the end of the shell buffer sends EOF to the subshell. |
| 6163 | At any other position in the buffer, it deletes a character as usual. |
| 6164 | |
| 6165 | If Emacs gets confused while trying to track changes in the shell's |
| 6166 | current directory, type M-x dirs to re-synchronize. |
| 6167 | |
| 6168 | M-x send-invisible reads a line of text without echoing it, and |
| 6169 | sends it to the shell. |
| 6170 | |
| 6171 | If you accidentally suspend your process, use M-x comint-continue-subjob |
| 6172 | to continue it. |
| 6173 | |
| 6174 | *** There is now a convenient way to enable flow control on terminals |
| 6175 | where you can't win without it. Suppose you want to do this on |
| 6176 | VT-100 and H19 terminals; put the following in your `.emacs' file: |
| 6177 | |
| 6178 | (enable-flow-control-on "vt100" "h19") |
| 6179 | |
| 6180 | When flow control is enabled, you must type C-\ to get the effect of a |
| 6181 | C-s, and type C-^ to get the effect of a C-q. |
| 6182 | |
| 6183 | The function `enable-flow-control' enables flow control unconditionally. |
| 6184 | \f |
| 6185 | ** Changes in Dired |
| 6186 | |
| 6187 | Dired has many new features which allow you to do these things: |
| 6188 | |
| 6189 | - Rename, copy, or make links to many files at once. |
| 6190 | |
| 6191 | - Make distinguishable types of marks for different operations. |
| 6192 | |
| 6193 | - Display contents of subdirectories in the same Dired buffer as the |
| 6194 | parent directory. |
| 6195 | |
| 6196 | *** Setting and Clearing Marks |
| 6197 | |
| 6198 | There are now two kinds of marker that you can put on a file in Dired: |
| 6199 | `D' for deletion, and `*' for any other kind of operation. |
| 6200 | The `x' command deletes only files marked with `D', and most |
| 6201 | other Dired commands operate only on the files marked with `*'. |
| 6202 | |
| 6203 | To mark files with `D' (also called "flagging" the files), you |
| 6204 | can use `d' as usual. Here are some commands for marking with |
| 6205 | `*' (and also for unmarking): |
| 6206 | |
| 6207 | **** `m' marks the current file with `*', for an operation other than |
| 6208 | deletion. |
| 6209 | |
| 6210 | **** `*' marks all executable files. With a prefix argument, it |
| 6211 | unmarks all those files. |
| 6212 | |
| 6213 | **** `@' marks all symbolic links. With a prefix argument, it unmarks |
| 6214 | all those files. |
| 6215 | |
| 6216 | **** `/' marks all directory files except `.' and `..'. With a prefix |
| 6217 | argument, it unmarks all those files. |
| 6218 | |
| 6219 | **** M-DEL removes a specific or all marks from every file. With an |
| 6220 | argument, queries for each marked file. Type your help character, |
| 6221 | usually C-h, at that time for help. |
| 6222 | |
| 6223 | **** `c' replaces all marks that use the character OLD with marks that |
| 6224 | use the character NEW. You can use almost any character as a mark |
| 6225 | character by means of this command, to distinguish various classes of |
| 6226 | files. If OLD is ` ', then the command operates on all unmarked |
| 6227 | files; if NEW is ` ', then the command unmarks the files it acts on. |
| 6228 | |
| 6229 | *** Operating on Multiple Files |
| 6230 | |
| 6231 | The Dired commands to operate directly on files (rename them, copy |
| 6232 | them, and so on) have been generalized to work on multiple files. |
| 6233 | There are also some additional commands in this series. |
| 6234 | |
| 6235 | All of these commands use the same convention to decide which files to |
| 6236 | manipulate: |
| 6237 | |
| 6238 | - If you give the command a numeric prefix argument @var{n}, it operates |
| 6239 | on the next @var{n} files, starting with the current file. |
| 6240 | |
| 6241 | - Otherwise, if there are marked files, the commands operate on all the |
| 6242 | marked files. |
| 6243 | |
| 6244 | - Otherwise, the command operates on the current file only. |
| 6245 | |
| 6246 | These are the commands: |
| 6247 | |
| 6248 | **** `C' copies the specified files. You must specify a directory to |
| 6249 | copy into, or (if copying a single file) a new name. |
| 6250 | |
| 6251 | If `dired-copy-preserve-time' is non-`nil', then copying sets |
| 6252 | the modification time of the new file to be the same as that of the old |
| 6253 | file. |
| 6254 | |
| 6255 | **** `R' renames the specified files. You must specify a directory to |
| 6256 | rename into, or (if renaming a single file) a new name. |
| 6257 | |
| 6258 | Dired automatically changes the visited file name of buffers associated |
| 6259 | with renamed files so that they refer to the new names. |
| 6260 | |
| 6261 | **** `H' makes hard links to the specified files. You must specify a |
| 6262 | directory to make the links in, or (if making just one link) the name |
| 6263 | to give the link. |
| 6264 | |
| 6265 | **** `S' makes symbolic links to the specified files. You must specify |
| 6266 | a directory to make the links in, or (if making just one link) the |
| 6267 | name to give the link. |
| 6268 | |
| 6269 | **** `M' changes the mode of the specified files. This calls the |
| 6270 | `chmod' program, so you can describe the desired mode change with any |
| 6271 | argument that `chmod' would handle. |
| 6272 | |
| 6273 | **** `G' changes the group of the specified files. |
| 6274 | |
| 6275 | **** `O' changes the owner of the specified files. (On normal systems, |
| 6276 | only the superuser can do this.) |
| 6277 | |
| 6278 | The variable `dired-chown-program' specifies the name of the |
| 6279 | program to use to do the work (different systems put `chown' in |
| 6280 | different places. |
| 6281 | |
| 6282 | **** `Z' compresses or uncompresses the specified files. |
| 6283 | |
| 6284 | **** `L' loads the specified Emacs Lisp files. |
| 6285 | |
| 6286 | **** `B' byte compiles the specified Emacs Lisp files. |
| 6287 | |
| 6288 | **** `P' prints the specified files. It uses the variables |
| 6289 | `lpr-command' and `lpr-switches' just as `lpr-file' does. |
| 6290 | |
| 6291 | *** Shell Commands in Dired |
| 6292 | |
| 6293 | `!' reads a shell command string in the minibuffer and runs the shell |
| 6294 | command on all the specified files. There are two ways of applying a |
| 6295 | shell command to multiple files: |
| 6296 | |
| 6297 | - If you use `*' in the command, then the shell command runs just |
| 6298 | once, with the list of file names substituted for the `*'. |
| 6299 | |
| 6300 | Thus, `! tar cf foo.tar * RET' runs `tar' on the entire list of file |
| 6301 | names, putting them into one tar file `foo.tar'. The file names are |
| 6302 | inserted in the order that they appear in the Dired buffer. |
| 6303 | |
| 6304 | - If the command string doesn't contain `*', then it runs once for |
| 6305 | each file, with the file name attached at the end. For example, `! |
| 6306 | uudecode RET' runs `uudecode' on each file. |
| 6307 | |
| 6308 | To run the shell command once for each file but without being limited |
| 6309 | to putting the file name inserted in the middle, use a shell loop. |
| 6310 | For example, this shell command would run `uuencode' on each of the |
| 6311 | specified files, writing the output into a corresponding `.uu' file: |
| 6312 | |
| 6313 | for file in *; uuencode $file $file >$file.uu; done |
| 6314 | |
| 6315 | The working directory for the shell command is the top level directory |
| 6316 | of the Dired buffer. |
| 6317 | |
| 6318 | *** Regular Expression File Name Substitution |
| 6319 | |
| 6320 | **** `% m REGEXP RET' marks all files whose names match the regular |
| 6321 | expression REGEXP. |
| 6322 | |
| 6323 | Only the non-directory part of the file name is used in matching. Use |
| 6324 | `^' and `$' to anchor matches. Exclude subdirs by hiding them. |
| 6325 | |
| 6326 | **** `% d REGEXP RET' flags for deletion all files whose names match |
| 6327 | the regular expression REGEXP. |
| 6328 | |
| 6329 | **** `% R', `% C', `% H', `% S' |
| 6330 | |
| 6331 | These four commands rename, copy, make hard links and make soft links, |
| 6332 | in each case computing the new name by regular expression substitution |
| 6333 | from the name of the old file. They effectively perform |
| 6334 | `query-replace-regexp' on the selected file names in the Dired buffer. |
| 6335 | |
| 6336 | The commands read two arguments: a regular expression, and a |
| 6337 | substitution pattern. Each selected file name is matched against the |
| 6338 | regular expression, and then the part which matched is replaced with |
| 6339 | the substitution pattern. You can use `\&' and `\DIGIT' in the |
| 6340 | substitution pattern to refer to all or part of the old file name. |
| 6341 | |
| 6342 | If the regular expression matches more than once in a file name, |
| 6343 | only the first match is replaced. |
| 6344 | |
| 6345 | Normally, the replacement process does not consider the directory names; |
| 6346 | it operates on the file name within the directory. If you specify a |
| 6347 | prefix argument of zero, then replacement affects entire file name. |
| 6348 | |
| 6349 | To apply the command to all files matching the same regexp that you |
| 6350 | use in the command, mark those files with `% m REGEXP RET', then use |
| 6351 | the same regular expression in `% R'. To make this easier, `% R' uses |
| 6352 | as a default the last regular expression specified in a `%' command. |
| 6353 | |
| 6354 | *** Dired Case Conversion |
| 6355 | |
| 6356 | **** `% u' renames each of the selected files to an upper case name. |
| 6357 | |
| 6358 | **** `% l' renames each of the selected files to a lower case name. |
| 6359 | |
| 6360 | *** File Comparison with Dired |
| 6361 | |
| 6362 | **** `=' compares the current file with another file (the file at the |
| 6363 | mark), by running the `diff' program. The file at the mark is given |
| 6364 | to `diff' first. |
| 6365 | |
| 6366 | **** `M-=' compares the current file with its backup file. If there |
| 6367 | are several numerical backups, it uses the most recent one. If this |
| 6368 | file is a backup, it is compared with its original. |
| 6369 | |
| 6370 | The backup file is the first file given to `diff'. |
| 6371 | |
| 6372 | *** Subdirectories in Dired |
| 6373 | |
| 6374 | You can display more than one directory in one Dired buffer. |
| 6375 | The simplest way to do this is to specify the options `-lR' for |
| 6376 | running `ls'. That produces a recursive directory listing showing |
| 6377 | all subdirectories, all within the same Dired buffer. |
| 6378 | |
| 6379 | You can also insert the contents of a particular subdirectory with the |
| 6380 | `i' command. Use this command on the line that describes a file which |
| 6381 | is a directory. Inserted subdirectory contents follow the top-level |
| 6382 | directory of the Dired buffer, just as they do in `ls -lR' output. |
| 6383 | |
| 6384 | If the subdirectory's contents are already present in the buffer, the |
| 6385 | `i' command just moves to it (type `l' to refresh it). It sets the |
| 6386 | Emacs mark before moving, so C-x C-x takes you back to the old |
| 6387 | position in the buffer. |
| 6388 | |
| 6389 | When you have subdirectories in the Dired buffer, you can use the page |
| 6390 | motion commands C-x [ and C-x ] to move by entire directories. |
| 6391 | |
| 6392 | The following commands move up and down in the tree of directories |
| 6393 | in one Dired buffer: |
| 6394 | |
| 6395 | **** C-M-u Go up to the parent directory's headerline. |
| 6396 | |
| 6397 | **** C-M-d Go down in the tree, to the first subdirectory's |
| 6398 | headerline. |
| 6399 | |
| 6400 | **** C-M-n Go to next subdirectory headerline, regardless of level. |
| 6401 | |
| 6402 | **** C-M-p Go to previous subdirectory headerline, regardless of |
| 6403 | level. |
| 6404 | |
| 6405 | *** Hiding Subdirectories |
| 6406 | |
| 6407 | "Hiding" a subdirectory means to make it invisible, except for its |
| 6408 | headerline. Files inside a hidden subdirectory are never considered |
| 6409 | by Dired. For example, the commands to operate on marked files ignore |
| 6410 | files in hidden directories even if they are marked. |
| 6411 | |
| 6412 | **** `$' hides or unhides the current subdirectory and move to next |
| 6413 | subdirectory. A prefix argument serves as a repeat count. |
| 6414 | |
| 6415 | **** `M-$' hides all subdirectories, leaving only their header lines. |
| 6416 | Or, if at least one subdirectory is currently hidden, it makes |
| 6417 | everything visible again. You can use this command to get an overview |
| 6418 | in very deep directory trees or to move quickly to subdirectories far |
| 6419 | away. |
| 6420 | |
| 6421 | *** Editing the Dired Buffer |
| 6422 | |
| 6423 | **** `l' updates the specified files in a Dired buffer. This means |
| 6424 | reading their current status from the file system and changing the |
| 6425 | buffer to reflect it properly. |
| 6426 | |
| 6427 | If you use this command on a subdirectory header line, it updates the |
| 6428 | contents of the subdirectory. |
| 6429 | |
| 6430 | **** `g' updates the entire contents of the Dired buffer. It preserves |
| 6431 | all marks except for those on files that have vanished. Hidden |
| 6432 | subdirectories are updated but remain hidden. |
| 6433 | |
| 6434 | **** `k' kills all marked lines (not the files). With a prefix |
| 6435 | argument, it kills that many lines starting with the current line. |
| 6436 | |
| 6437 | This command does not delete files; it just deletes text from the Dired |
| 6438 | buffer. |
| 6439 | |
| 6440 | If you kill the line for a file that is a directory, then its contents |
| 6441 | are also deleted from the buffer. Typing `C-u k' on the header line |
| 6442 | for a subdirectory is another way to delete a subdirectory from the |
| 6443 | Dired buffer. |
| 6444 | |
| 6445 | *** `find' and Dired. |
| 6446 | |
| 6447 | To search for files with names matching a wildcard pattern use |
| 6448 | `find-name-dired'. Its arguments are DIRECTORY and |
| 6449 | PATTERN. It selects all the files in DIRECTORY or its |
| 6450 | subdirectories whose own names match PATTERN. |
| 6451 | |
| 6452 | The files thus selected are displayed in a Dired buffer in which the |
| 6453 | ordinary Dired commands are available. |
| 6454 | |
| 6455 | If you want to test the contents of files, rather than their names, use |
| 6456 | `find-grep-dired'. This command takes two minibuffer arguments, |
| 6457 | DIRECTORY and REGEXP; it selects all the files in |
| 6458 | DIRECTORY or its subdirectories that contain a match for |
| 6459 | REGEXP. It works by running `find' and `grep'. |
| 6460 | |
| 6461 | The most general command in this series is `find-dired', which lets |
| 6462 | you specify any condition that `find' can test. It takes two |
| 6463 | minibuffer arguments, DIRECTORY and FIND-ARGS; it runs `find' in |
| 6464 | DIRECTORY with using FIND-ARGS as the arguments to `find' specifying |
| 6465 | which files to accept. To use this command, you need to know how to |
| 6466 | use `find'. |
| 6467 | \f |
| 6468 | ** New amusements and novelties. |
| 6469 | |
| 6470 | *** `M-x mpuz' displays a multiplication puzzle, in which each letter |
| 6471 | stands for a digit, and you must determine which digit. The puzzles |
| 6472 | are determined randomly, so they are always different. |
| 6473 | |
| 6474 | *** `M-x gomoku' plays the game Gomoku with you. It needs more work. |
| 6475 | |
| 6476 | *** `M-x spook' adds a line of randomly chosen keywords to an outgoing |
| 6477 | mail message. The keywords are chosen from a list of words that |
| 6478 | suggest you are discussing something subversive. |
| 6479 | |
| 6480 | The idea is that the NSA reads all messages that contain keywords |
| 6481 | suggesting they might be interested, and that adding these lines could |
| 6482 | help to overload them. I would guess that they have modified their |
| 6483 | program by now to ignore these lines of keywords; perhaps the program |
| 6484 | can be updated if some clever hacker can determine what criterion they |
| 6485 | actually use now. |
| 6486 | \f |
| 6487 | ** Installation changes |
| 6488 | |
| 6489 | *** The configure script has been provided to help with the |
| 6490 | installation process. It takes the place of editing the Makefiles and |
| 6491 | src/config.h, and can often guess the appropriate operating system to |
| 6492 | use for a particular machine type. See INSTALL for a more detailed |
| 6493 | description of the steps required for installation. |
| 6494 | |
| 6495 | *** If you create a Lisp file named `site-start.el', Emacs loads the file |
| 6496 | whenever it starts up. |
| 6497 | |
| 6498 | *** A new Lisp variable, `data-directory', indicates the directory |
| 6499 | containing the DOC file, tutorial, copying agreement, and other |
| 6500 | familiar `etc' files. The value of `data-directory' is a simple string. |
| 6501 | The default should be set at build time, and the person installing |
| 6502 | Emacs should place all the data files in this directory. The `help.el' |
| 6503 | functions that look for docstrings and information files check this |
| 6504 | variable. All Emacs Lisp packages should also be coded so that they |
| 6505 | refer to `data-directory' to find data files. |
| 6506 | |
| 6507 | *** The PURESIZE definition has been moved from config.h to its own |
| 6508 | file, puresize.h. Since almost every file of C source in the |
| 6509 | distribution depends on config.h, but only alloc.c and data.c depend |
| 6510 | on puresize.h, this means that changing the value of PURESIZE causes |
| 6511 | only those two files to be recompiled. |
| 6512 | |
| 6513 | *** The makefile at the top of the Emacs source tree now supports a |
| 6514 | `dist' target, which creates a compressed tar file suitable for |
| 6515 | distribution, using the contents of the source tree. Object files, |
| 6516 | old file versions, executables, DOC files, and other |
| 6517 | architecture-specific or easy-to-recreate files are not included in |
| 6518 | the tar file. |
| 6519 | |
| 6520 | |
| 6521 | \f |
| 6522 | ---------------------------------------------------------------------- |
| 6523 | This file is part of GNU Emacs. |
| 6524 | |
| 6525 | GNU Emacs is free software: you can redistribute it and/or modify |
| 6526 | it under the terms of the GNU General Public License as published by |
| 6527 | the Free Software Foundation, either version 3 of the License, or |
| 6528 | (at your option) any later version. |
| 6529 | |
| 6530 | GNU Emacs is distributed in the hope that it will be useful, |
| 6531 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 6532 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 6533 | GNU General Public License for more details. |
| 6534 | |
| 6535 | You should have received a copy of the GNU General Public License |
| 6536 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
| 6537 | |
| 6538 | \f |
| 6539 | Local variables: |
| 6540 | mode: outline |
| 6541 | paragraph-separate: "[ \f]*$" |
| 6542 | end: |