1GNU Emacs NEWS -- history of user-visible changes. 26-Mar-1986 2 3Copyright (C) 1985, 1986, 2006, 2007 Free Software Foundation, Inc. 4See the end of the file for license conditions. 5 6 7This file is about changes in emacs versions 1 through 17. 8 9 10 11Changes in Emacs 17 12 13* Frustrated? 14 15Try M-x doctor. 16 17* Bored? 18 19Try M-x hanoi. 20 21* Brain-damaged? 22 23Try M-x yow. 24 25* Sun3, Tahoe, Apollo, HP9000s300, Celerity, NCR Tower 32, 26 Sequent, Stride, Encore, Plexus and AT&T 7300 machines supported. 27 28The Tahoe, Sun3, Sequent and Celerity use 4.2. In regard to the 29Apollo, see the file APOLLO in this directory. NCR Tower32, 30HP9000s300, Stride and Nu run forms of System V. System V rel 2 also 31works on Vaxes now. See etc/MACHINES. 32 33* System V Unix supported, including subprocesses. 34 35It should be possible now to bring up Emacs on a machine running 36mere unameliorated system V Unix with no major work; just possible bug 37fixes. But you can expect to find a handful of those on any machine 38that Emacs has not been run on before. 39 40* Berkeley 4.1 Unix supported. 41 42See etc/MACHINES. 43 44* Portable `alloca' provided. 45 46Emacs can now run on machines that do not and cannot support the library 47subroutine `alloca' in the canonical fashion, using an `alloca' emulation 48written in C. 49 50* On-line manual. 51 52Info now contains an Emacs manual, with essentially the same text 53as in the printed manual. 54 55The manual can now be printed with a standard TeX. 56 57Nicely typeset and printed copies of the manual are available 58from the Free Software Foundation. 59 60* Backup file version numbers. 61 62Emacs now supports version numbers in backup files. 63 64The first time you save a particular file in one editing session, 65the old file is copied or renamed to serve as a backup file. 66In the past, the name for the backup file was made by appending `~' 67to the end of the original file name. 68 69Now the backup file name can instead be made by appending ".~NN~" to 70the original file name, where NN stands for a numeric version. Each 71time this is done, the new version number is one higher than the 72highest previously used. 73 74Thus, the active, current file does not have a version number. 75Only the backups have them. 76 77This feature is controlled by the variable `version-control'. If it 78is `nil', as normally, then numbered backups are made only for files 79that already have numbered backups. Backup names with just `~' are 80used for files that have no numbered backups. 81 82If `version-control' is `never', then the backup file's name is 83made with just `~' in any case. 84 85If `version-control' is not `nil' or `never', numbered backups are 86made unconditionally. 87 88To prevent unlimited consumption of disk space, Emacs can delete 89old backup versions automatically. Generally Emacs keeps the first 90few backups and the latest few backups, deleting any in between. 91This happens every time a new backup is made. The two variables that 92control the deletion are `kept-old-versions' and `kept-new-versions'. 93Their values are, respectively, the number of oldest backups to keep 94and the number of newest ones to keep, each time a new backup is made. 95The value of `kept-new-versions' includes the backup just created. 96By default, both values are 2. 97 98If `trim-versions-without-asking' is non-`nil', the excess middle versions 99are deleted without a murmur. If it is `nil', the default, then you 100are asked whether the excess middle versions should really be deleted. 101 102Dired has a new command `.' which marks for deletion all but the latest 103and oldest few of every numeric series of backups. `kept-old-versions' 104controls the number of oldest versions to keep, and `dired-kept-versions' 105controls the number of latest versions to keep. A numeric argument to 106the `.' command, if positive, specifies the number of latest versions 107to keep, overriding `dired-kept-versions'. A negative argument specifies 108the number of oldest versions to keep, using minus the argument to override 109`kept-old-versions'. 110 111* Immediate conflict detection. 112 113Emacs now locks the files it is modifying, so that if 114you start to modify within Emacs a file that is being 115modified in another Emacs, you get an immediate warning. 116 117The warning gives you three choices: 1181. Give up, and do not make any changes. 1192. Make changes anyway at your own risk. 1203. Make changes anyway, and record yourself as 121 the person locking the file (instead of whoever 122 was previously recorded.) 123 124Just visiting a file does not lock it. It is locked 125when you try to change the buffer that is visiting the file. 126Saving the file unlocks it until you make another change. 127 128Locking is done by writing a lock file in a special designated 129directory. If such a directory is not provided and told to 130Emacs as part of configuring it for your machine, the lock feature 131is turned off. 132 133* M-x recover-file. 134 135This command is used to get a file back from an auto-save 136(after a system crash, for example). It takes a file name 137as argument and visits that file, but gets the data from the 138file's last auto save rather than from the file itself. 139 140* M-x normal-mode. 141 142This command resets the current buffer's major mode and local 143variables to be as specified by the visit filename, the -*- line 144and/or the Local Variables: block at the end of the buffer. 145It is the same thing normally done when a file is first visited. 146 147* Echo area messages disappear shortly if minibuffer is in use. 148 149Any message in the echo area disappears after 2 seconds 150if the minibuffer is active. This allows the minibuffer 151to become visible again. 152 153* C-z on System V runs a subshell. 154 155On systems which do not allow programs to be suspended, the C-z command 156forks a subshell that talks directly to the terminal, and then waits 157for the subshell to exit. This gets almost the effect of suspending 158in that you can run other programs and then return to Emacs. However, 159you cannot log out from the subshell. 160 161* C-c is always a prefix character. 162 163Also, subcommands of C-c which are letters are always 164reserved for the user. No standard Emacs major mode 165defines any of them. 166 167* Picture mode C-c commands changed. 168 169The old C-c k command is now C-c C-w. 170The old C-c y command is now C-c C-x. 171 172* Shell mode commands changed. 173 174All the special commands of Shell mode are now moved onto 175the C-c prefix. Most are not changed aside from that. 176Thus, the old Shell mode C-c command (kill current job) 177is now C-c C-c; the old C-z (suspend current job) is now C-c C-z, 178etc. 179 180The old C-x commands are now C-c commands. C-x C-k (kill output) 181is now C-c C-o, and C-x C-v (show output) is now C-c C-r. 182 183The old M-= (copy previous input) command is now C-c C-y. 184 185* Shell mode recognizes aliases for `pushd', `popd' and `cd'. 186 187Shell mode now uses the variable `shell-pushd-regexp' as a 188regular expression to recognize any command name that is 189equivalent to a `pushd' command. By default it is set up 190to recognize just `pushd' itself. If you use aliases for 191`pushd', change the regexp to recognize them as well. 192 193There are also `shell-popd-regexp' to recognize commands 194with the effect of a `popd', and `shell-cd-regexp' to recognize 195commands with the effect of a `cd'. 196 197* "Exit" command in certain modes now C-c C-c. 198 199These include electric buffer menu mode, electric command history 200mode, Info node edit mode, and Rmail edit mode. In all these 201modes, the command to exit used to be just C-c. 202 203* Outline mode changes. 204 205Lines that are not heading lines are now called "body" lines. 206The command `hide-text' is renamed to `hide-body'. 207The key M-H is renamed to C-c C-h. 208The key M-S is renamed to C-c C-s. 209The key M-s is renamed to C-c C-i. 210 211Changes of line visibility are no longer undoable. As a result, 212they no longer use up undo memory and no longer interfere with 213undoing earlier commands. 214 215* Rmail changes. 216 217The s and q commands now both expunge deleted messages before saving; 218use C-x C-s to save without expunging. 219 220The u command now undeletes the current message if it is deleted; 221otherwise, it backs up as far as necessary to reach a deleted message, 222and undeletes that one. The u command in the summary behaves likewise, 223but considers only messages listed in the summary. The M-u command 224has been eliminated. 225 226The o and C-o keys' meanings are interchanged. 227o now outputs to an Rmail file, and C-o to a Unix mail file. 228 229The F command (rmail-find) is renamed to M-s (rmail-search). 230Various new commands and features exist; see the Emacs manual. 231 232* Local bindings described first in describe-bindings. 233 234* [...], {...} now balance in Fundamental mode. 235 236* Nroff mode and TeX mode. 237 238The are two new major modes for editing nroff input and TeX input. 239See the Emacs manual for full information. 240 241* New C indentation style variable `c-brace-imaginary-offset'. 242 243The value of `c-brace-imaginary-offset', normally zero, controls the 244indentation of a statement inside a brace-group where the open-brace 245is not the first thing on a line. The value says where the open-brace 246is imagined to be, relative to the first nonblank character on the line. 247 248* Dired improvements. 249 250Dired now normally keeps the cursor at the beginning of the file name, 251not at the beginning of the line. The most used motion commands are 252redefined in Dired to position the cursor this way. 253 254`n' and `p' are now equivalent in dired to `C-n' and `C-p'. 255 256If any files to be deleted cannot be deleted, their names are 257printed in an error message. 258 259If the `v' command is invoked on a file which is a directory, 260dired is run on that directory. 261 262* `visit-tag-table' renamed `visit-tags-table'. 263 264This is so apropos of `tags' finds everything you need to 265know about in connection with Tags. 266 267* `mh-e' library uses C-c as prefix. 268 269All the special commands of `mh-rmail' now are placed on a 270C-c prefix rather than on the C-x prefix. This is for 271consistency with other special modes with their own commands. 272 273* M-$ or `spell-word' checks word before point. 274 275It used to check the word after point. 276 277* Quitting during autoloading no longer causes trouble. 278 279Now, when a file is autoloaded, all function redefinitions 280and `provide' calls are recorded and are undone if you quit 281before the file is finished loading. 282 283As a result, it no longer happens that some of the entry points 284which are normally autoloading have been defined already, but the 285entire file is not really present to support them. 286 287* `else' can now be indented correctly in C mode. 288 289TAB in C mode now knows which `if' statement an `else' matches 290up with, and can indent the `else' correctly under the `if', 291even if the `if' contained such things as another `if' statement, 292or a `while' or `for' statement, with no braces around it. 293 294* `batch-byte-compile' 295 296Runs byte-compile-file on the files specified on the command line. 297All the rest of the command line arguments are taken as files to 298compile (or, if directories, to do byte-recompile-directory on). 299Must be used only with -batch, and kills emacs on completion. 300Each file will be processed even if an error occurred previously. 301For example, invoke `emacs -batch -f batch-byte-compile *.el'. 302 303* `-batch' changes. 304 305`-batch' now implies `-q': no init file is loaded by Emacs when 306`-batch' is used. Also, no `term/TERMTYPE.el' file is loaded. Auto 307saving is not done except in buffers in which it is explicitly 308requested. Also, many echo-area printouts describing what is going on 309are inhibited in batch mode, so that the only output you get is the 310output you program specifically. 311 312One echo-area message that is not suppressed is the one that says 313that a file is being loaded. That is because you can prevent this 314message by passing `t' as the third argument to `load'. 315 316* Display of search string in incremental search. 317 318Now, when you type C-s or C-r to reuse the previous search 319string, that search string is displayed immediately in the echo area. 320 321Three dots are displayed after the search string while search 322is actually going on. 323 324* View commands. 325 326The commands C-x ], C-x [, C-x /, C-x j and C-x o are now 327available inside `view-buffer' and `view-file', with their 328normal meanings. 329 330* Full-width windows preferred. 331 332The ``other-window'' commands prefer other full width windows, 333and will split only full width windows. 334 335* M-x rename-file can copy if necessary. 336 337When used between different file systems, since actual renaming does 338not work, the old file will be copied and deleted. 339 340* Within C-x ESC, you can pick the command to repeat. 341 342While editing a previous command to be repeated, inside C-x ESC, 343you can now use the commands M-p and M-n to pick an earlier or 344later command to repeat. M-n picks the next earlier command 345and M-p picks the next later one. The new command appears in 346the minibuffer, and you can go ahead and edit it, and repeat it 347when you exit the minibuffer. 348 349Using M-n or M-p within C-x ESC is like having used a different 350numeric argument when you ran C-x ESC in the first place. 351 352The command you finally execute using C-x ESC is added to the 353front of the command history, unless it is identical with the 354first thing in the command history. 355 356* Use C-c C-c to exit from editing within Info. 357 358It used to be C-z for this. Somehow this use of C-z was 359left out when all the others were moved. The intention is that 360C-z should always suspend Emacs. 361 362* Default arg to C-x < and C-x > now window width minus 2. 363 364These commands, which scroll the current window horizontally 365by a specified number of columns, now scroll a considerable 366distance rather than a single column if used with no argument. 367 368* Auto Save Files Deleted. 369 370The default value of `delete-auto-save-files' is now `t', so that 371when you save a file for real, its auto save file is deleted. 372 373* Rnews changes. 374 375The N, P and J keys in Rnews are renamed to M-n, M-p and M-j. 376These keys move among newsgroups. 377 378The n and p keys for moving sequentially between news articles now 379accept repeat count arguments, and the + and - keys, made redundant by 380this change, are eliminated. 381 382The s command for outputting the current article to a file 383is renamed as o, to be compatible with Rmail. 384 385* Sendmail changes. 386 387If you have a ~/.mailrc file, Emacs searches it for mailing address 388aliases, and these aliases are expanded when you send mail in Emacs. 389 390Fcc fields can now be used in the headers in the *mail* buffer 391to specify files in which copies of the message should be put. 392The message is written into those files in Unix mail file format. 393The message as sent does not contain any Fcc fields in its header. 394You can use any number of Fcc fields, but only one file name in each one. 395The variable `mail-archive-file-name', if non-`nil', can be a string 396which is a file name; an Fcc to that file will be inserted in every 397message when you begin to compose it. 398 399A new command C-c q now exists in Mail mode. It fills the 400paragraphs of an old message that had been inserted with C-c y. 401 402When the *mail* buffer is put in Mail mode, text-mode-hook 403is now run in addition to mail-mode-hook. text-mode-hook 404is run first. 405 406The new variable `mail-header-separator' now specifies the string 407to use on the line that goes between the headers and the message text. 408By default it is still "--text follows this line--". 409 410* Command history truncated automatically. 411 412Just before each garbage collection, all but the last 30 elements 413of the command history are discarded. 414 415 416Incompatible Lisp Programming Changes in Emacs 17 417 418* `"e' no longer supported. 419 420This feature, which allowed Lisp functions to take arguments 421that were not evaluated, has been eliminated, because it is 422inescapably hard to make the compiler work properly with such 423functions. 424 425You should use macros instead. A simple way to change any 426code that uses `"e' is to replace 427 428 (defun foo ("e x y z) ... 429 430with 431 432 (defmacro foo (x y z) 433 (list 'foo-1 (list 'quote x) (list 'quote y) (list 'quote z))) 434 435 (defun foo-1 (x y z) ... 436 437* Functions `region-to-string' and `region-around-match' removed. 438 439These functions were made for compatibility with Gosling Emacs, but it 440turns out to be undesirable to use them in GNU Emacs because they use 441the mark. They have been eliminated from Emacs proper, but are 442present in mlsupport.el for the sake of converted mocklisp programs. 443 444If you were using `region-to-string', you should instead use 445`buffer-substring'; then you can pass the bounds as arguments and 446can avoid setting the mark. 447 448If you were using `region-around-match', you can use instead 449the two functions `match-beginning' and `match-end'. These give 450you one bound at a time, as a numeric value, without changing 451point or the mark. 452 453* Function `function-type' removed. 454 455This just appeared not to be very useful. It can easily be written in 456Lisp if you happen to want it. Just use `symbol-function' to get the 457function definition of a symbol, and look at its data type or its car 458if it is a list. 459 460* Variable `buffer-number' removed. 461 462You can still use the function `buffer-number' to find out 463a buffer's unique number (assigned in order of creation). 464 465* Variable `executing-macro' renamed `executing-kbd-macro'. 466 467This variable is the currently executing keyboard macro, as 468a string, or `nil' when no keyboard macro is being executed. 469 470* Loading term/$TERM. 471 472The library term/$TERM (where $TERM get replaced by your terminal 473type), which is done by Emacs automatically when it starts up, now 474happens after the user's .emacs file is loaded. 475 476In previous versions of Emacs, these files had names of the form 477term-$TERM; thus, for example, term-vt100.el, but now they live 478in a special subdirectory named term, and have names like 479term/vt100.el. 480 481* `command-history' format changed. 482 483The elements of this list are now Lisp expressions which can 484be evaluated directly to repeat a command. 485 486* Unused editing commands removed. 487 488The functions `forward-to-word', `backward-to-word', 489`upcase-char', `mark-beginning-of-buffer' and `mark-end-of-buffer' 490have been removed. Their definitions can be found in file 491lisp/unused.el if you need them. 492 493 494Upward Compatible Lisp Programming Changes in Emacs 17 495 496* You can now continue after errors and quits. 497 498When the debugger is entered because of a C-g, due to 499a non-`nil' value of `debug-on-quit', the `c' command in the debugger 500resumes execution of the code that was running when the quit happened. 501Use the `q' command to go ahead and quit. 502 503The same applies to some kinds of errors, but not all. Errors 504signaled with the Lisp function `signal' can be continued; the `c' 505command causes `signal' to return. The `r' command causes `signal' to 506return the value you specify. The `c' command is equivalent to `r' 507with the value `nil'. 508 509For a `wrong-type-argument' error, the value returned with the `r' 510command is used in place of the invalid argument. If this new value 511is not valid, another error occurs. 512 513Errors signaled with the function `error' cannot be continued. 514If you try to continue, the error just happens again. 515 516* `dot' renamed `point'. 517 518The word `dot' has been replaced with `point' in all 519function and variable names, including: 520 521 point, point-min, point-max, 522 point-marker, point-min-marker, point-max-marker, 523 window-point, set-window-point, 524 point-to-register, register-to-point, 525 exchange-point-and-mark. 526 527The old names are still supported, for now. 528 529* `string-match' records position of end of match. 530 531After a successful call to `string-match', `(match-end 0)' will 532return the index in the string of the first character after the match. 533Also, `match-begin' and `match-end' with nonzero arguments can be 534used to find the indices of beginnings and ends of substrings matched 535by subpatterns surrounded by parentheses. 536 537* New function `insert-before-markers'. 538 539This function is just like `insert' except in the handling of any 540relocatable markers that are located at the point of insertion. 541With `insert', such markers end up pointing before the inserted text. 542With `insert-before-markers', they end up pointing after the inserted 543text. 544 545* New function `copy-alist'. 546 547This function takes one argument, a list, and makes a disjoint copy 548of the alist structure. The list itself is copied, and each element 549that is a cons cell is copied, but the cars and cdrs of elements 550remain shared with the original argument. 551 552This is what it takes to get two alists disjoint enough that changes 553in one do not change the result of `assq' on the other. 554 555* New function `copy-keymap'. 556 557This function takes a keymap as argument and returns a new keymap 558containing initially the same bindings. Rebindings in either one of 559them will not alter the bindings in the other. 560 561* New function `copy-syntax-table'. 562 563This function takes a syntax table as argument and returns a new 564syntax table containing initially the same syntax settings. Changes 565in either one of them will not alter the other. 566 567* Randomizing the random numbers. 568 569`(random t)' causes the random number generator's seed to be set 570based on the current time and Emacs's process id. 571 572* Third argument to `modify-syntax-entry'. 573 574The optional third argument to `modify-syntax-entry', if specified 575should be a syntax table. The modification is made in that syntax table 576rather than in the current syntax table. 577 578* New function `run-hooks'. 579 580This function takes any number of symbols as arguments. 581It processes the symbols in order. For each symbol which 582has a value (as a variable) that is non-nil, the value is 583called as a function, with no arguments. 584 585This is useful in major mode commands. 586 587* Second arg to `switch-to-buffer'. 588 589If this function is given a non-`nil' second argument, then the 590selection being done is not recorded on the selection history. 591The buffer's position in the history remains unchanged. This 592feature is used by the view commands, so that the selection history 593after exiting from viewing is the same as it was before. 594 595* Second arg to `display-buffer' and `pop-to-buffer'. 596 597These two functions both accept an optional second argument which 598defaults to `nil'. If the argument is not `nil', it means that 599another window (not the selected one) must be found or created to 600display the specified buffer in, even if it is already shown in 601the selected window. 602 603This feature is used by `switch-to-buffer-other-window'. 604 605* New variable `completion-ignore-case'. 606 607If this variable is non-`nil', completion allows strings 608in different cases to be considered matching. The global value 609is `nil' 610 611This variable exists for the sake of commands that are completing 612an argument in which case is not significant. It is possible 613to change the value globally, but you might not like the consequences 614in the many situations (buffer names, command names, file names) 615where case makes a difference. 616 617* Major modes related to Text mode call text-mode-hook, then their own hooks. 618 619For example, turning on Outline mode first calls the value of 620`text-mode-hook' as a function, if it exists and is non-`nil', 621and then does likewise for the variable `outline-mode-hook'. 622 623* Defining new command line switches. 624 625You can define a new command line switch in your .emacs file 626by putting elements on the value of `command-switch-alist'. 627Each element of this list should look like 628 (SWITCHSTRING . FUNCTION) 629where SWITCHSTRING is a string containing the switch to be 630defined, such as "-foo", and FUNCTION is a function to be called 631if such an argument is found in the command line. FUNCTION 632receives the command line argument, a string, as its argument. 633 634To implement a switch that uses up one or more following arguments, 635use the fact that the remaining command line arguments are kept 636as a list in the variable `command-line-args'. FUNCTION can 637examine this variable, and do 638 (setq command-line-args (cdr command-line-args) 639to "use up" an argument. 640 641* New variable `load-in-progress'. 642 643This variable is non-`nil' when a file of Lisp code is being read 644and executed by `load'. 645 646* New variable `print-length'. 647 648The value of this variable is normally `nil'. It may instead be 649a number; in that case, when a list is printed by `prin1' or 650`princ' only that many initial elements are printed; the rest are 651replaced by `...'. 652 653* New variable `find-file-not-found-hook'. 654 655If `find-file' or any of its variants is used on a nonexistent file, 656the value of `find-file-not-found-hook' is called (if it is not `nil') 657with no arguments, after creating an empty buffer. The file's name 658can be found as the value of `buffer-file-name'. 659 660* Processes without buffers. 661 662In the function `start-process', you can now specify `nil' as 663the process's buffer. You can also set a process's buffer to `nil' 664using `set-process-buffer'. 665 666The reason you might want to do this is to prevent the process 667from being killed because any particular buffer is killed. 668When a process has a buffer, killing that buffer kills the 669process too. 670 671When a process has no buffer, its output is lost unless it has a 672filter, and no indication of its being stopped or killed is given 673unless it has a sentinel. 674 675* New function `user-variable-p'. `v' arg prompting changed. 676 677This function takes a symbol as argument and returns `t' if 678the symbol is defined as a user option variable. This means 679that it has a `variable-documentation' property whose value is 680a string starting with `*'. 681 682Code `v' in an interactive arg reading string now accepts 683user variables only, and completion is limited to the space of 684user variables. 685 686The function `read-variable' also now accepts and completes 687over user variables only. 688 689* CBREAK mode input is the default in Unix 4.3 bsd. 690 691In Berkeley 4.3 Unix, there are sufficient features for Emacs to 692work fully correctly using CBREAK mode and not using SIGIO. 693Therefore, this mode is the default when running under 4.3. 694This mode corresponds to `nil' as the first argument to 695`set-input-mode'. You can still select either mode by calling 696that function. 697 698* Information on memory usage. 699 700The new variable `data-bytes-used' contains the number 701of bytes of impure space allocated in Emacs. 702`data-bytes-free' contains the number of additional bytes 703Emacs could allocate. Note that space formerly allocated 704and freed again still counts as `used', since it is still 705in Emacs's address space. 706 707* No limit on size of output from `format'. 708 709The string output from `format' used to be truncated to 710100 characters in length. Now it can have any length. 711 712* New errors `void-variable' and `void-function' replace `void-symbol'. 713 714This change makes it possible to have error messages that 715clearly distinguish undefined variables from undefined functions. 716It also allows `condition-case' to handle one case without the other. 717 718* `replace-match' handling of `\'. 719 720In `replace-match', when the replacement is not literal, 721`\' in the replacement string is always treated as an 722escape marker. The only two special `\' constructs 723are `\&' and `\DIGIT', so `\' followed by anything other than 724`&' or a digit has no effect. `\\' is necessary to include 725a `\' in the replacement text. 726 727This level of escaping is comparable with what goes on in 728a regular expression. It is over and above the level of `\' 729escaping that goes on when strings are read in Lisp syntax. 730 731* New error `invalid-regexp'. 732 733A regexp search signals this type of error if the argument does 734not meet the rules for regexp syntax. 735 736* `kill-emacs' with argument. 737 738If the argument is a number, it is returned as the exit status code 739of the Emacs process. If the argument is a string, its contents 740are stuffed as pending terminal input, to be read by another program 741after Emacs is dead. 742 743* New fifth argument to `subst-char-in-region'. 744 745This argument is optional and defaults to `nil'. If it is not `nil', 746then the substitutions made by this function are not recorded 747in the Undo mechanism. 748 749This feature should be used with great care. It is now used 750by Outline mode to make lines visible or invisible. 751 752* ` *Backtrace*' buffer renamed to `*Backtrace*'. 753 754As a result, you can now reselect this buffer easily if you switch to 755another while in the debugger. 756 757Exiting from the debugger kills the `*Backtrace*' buffer, so you will 758not try to give commands in it when no longer really in the debugger. 759 760* New function `switch-to-buffer-other-window'. 761 762This is the new primitive to select a specified buffer (the 763argument) in another window. It is not quite the same as 764`pop-to-buffer', because it is guaranteed to create another 765window (assuming there is room on the screen) so that it can 766leave the current window's old buffer displayed as well. 767 768All functions to select a buffer in another window should 769do so by calling this new function. 770 771* New variable `minibuffer-help-form'. 772 773At entry to the minibuffer, the variable `help-form' is bound 774to the value of `minibuffer-help-form'. 775 776`help-form' is expected at all times to contain either `nil' 777or an expression to be executed when C-h is typed (overriding 778teh definition of C-h as a command). `minibuffer-help-form' 779can be used to provide a different default way of handling 780C-h while in the minibuffer. 781 782* New \{...} documentation construct. 783 784It is now possible to set up the documentation string for 785a major mode in such a way that it always describes the contents 786of the major mode's keymap, as it has been customized. 787To do this, include in the documentation string the characters `\{' 788followed by the name of the variable containing the keymap, 789terminated with `}'. (The `\' at the beginning probably needs to 790be quoted with a second `\', to include it in the doc string.) 791This construct is normally used on a line by itself, with no blank 792lines before or after. 793 794For example, the documentation string for the function `c-mode' contains 795 ... 796 Paragraphs are separated by blank lines only. 797 Delete converts tabs to spaces as it moves back. 798 \\{c-mode-map} 799 Variables controlling indentation style: 800 ... 801 802* New character syntax class "punctuation". 803 804Punctuation characters behave like whitespace in word and 805list parsing, but can be distinguished in regexps and in the 806function `char-syntax'. Punctuation syntax is represented by 807a period in `modify-syntax-entry'. 808 809* `auto-mode-alist' no longer needs entries for backup-file names, 810 811Backup suffixes of all kinds are now stripped from a file's name 812before searching `auto-mode-alist'. 813 814 815 816Changes in Emacs 16 817 818* No special code for Ambassadors, VT-100's and Concept-100's. 819 820Emacs now controls these terminals based on the termcap entry, like 821all other terminals. Formerly it did not refer to the termcap entries 822for those terminal types, and often the termcap entries for those 823terminals are wrong or inadequate. If you experience worse behavior 824on these terminals than in version 15, you can probably correct it by 825fixing up the termcap entry. See ./TERMS for more info. 826 827See ./TERMS in any case if you find that some terminal does not work 828right with Emacs now. 829 830* Minibuffer default completion character is TAB (and not ESC). 831 832So that ESC can be used in minibuffer for more useful prefix commands. 833 834* C-z suspends Emacs in all modes. 835 836Formerly, C-z was redefined for other purposes by certain modes, 837such as Buffer Menu mode. Now other keys are used for those purposes, 838to keep the meaning of C-z uniform. 839 840* C-x ESC (repeat-complex-command) allows editing the command it repeats. 841 842Instead of asking for confirmation to re-execute a command from the 843command history, the command is placed, in its Lisp form, into the 844minibuffer for editing. You can confirm by typing RETURN, change some 845arguments and then confirm, or abort with C-g. 846 847* Incremental search does less redisplay on slow terminals. 848 849If the terminal baud rate is <= the value of `isearch-slow-speed', 850incremental searching outside the text on the screen creates 851a single-line window and uses that to display the line on which 852a match has been found. Exiting or quitting the search restores 853the previous window configuration and redisplays the window you 854were searching in. 855 856The initial value of `isearch-slow-speed' is 1200. 857 858This feature is courtesy of crl@purdue. 859 860* Recursive minibuffers not allowed. 861 862If the minibuffer window is selected, most commands that would 863use the minibuffer gets an error instead. (Specific commands 864may override this feature and therefore still be allowed.) 865 866Strictly speaking, recursive entry to the minibuffer is still 867possible, because you can switch to another window after 868entering the minibuffer, and then minibuffer-using commands 869are allowed. This is still allowed by a deliberate decision: 870if you know enough to switch windows while in the minibuffer, 871you can probably understand recursive minibuffers. 872 873This may be overridden by binding the variable 874`enable-recursive-minibuffers' to t. 875 876* New major mode Emacs-Lisp mode, for editing Lisp code to run in Emacs. 877 878The mode in which emacs lisp files is edited is now called emacs-lisp-mode 879and is distinct from lisp-mode. The latter is intended for use with 880lisps external to emacs. 881 882The hook which is funcalled (if non-nil) on entry to elisp-mode is now 883called emacs-lisp-mode-hook. A consequence of this changes is that 884.emacs init files which set the value of lisp-mode-hook may need to be 885changed to use the new names. 886 887* Correct matching of parentheses is checked on insertion. 888 889When you insert a close-paren, the matching open-paren 890is checked for validity. The close paren must be the kind 891of close-paren that the open-paren says it should match. 892Otherwise, a warning message is printed. close-paren immediately 893preceded by quoting backslash syntax character is not matched. 894 895This feature was originally written by shane@mit-ajax. 896 897* M-x list-command-history 898* M-x command-history-mode 899* M-x electric-command-history 900 901`list-command-history' displays forms from the command history subject 902to user controlled filtering and limit on number of forms. It leaves 903the buffer in `command-history-mode'. M-x command-history-mode 904recomputes the command history each time it is invoked via 905`list-command-history'. It is like Emacs-Lisp mode except that characters 906don't insert themselves and provision is made for re-evaluating an 907expression from the list. `electric-command-history' pops up a type 908out window with the command history displayed. If the very next 909character is Space, the window goes away and the previous window 910configuration is restored. Otherwise you can move around in the 911history and select an expression for evaluation *inside* the buffer 912which invoked `electric-command-history'. The original window 913configuration is restored on exit unless the command selected changes 914it. 915 916* M-x edit-picture 917 918Enters a temporary major mode (the previous major mode is remembered 919and can is restored on exit) designed for editing pictures and tables. 920Printing characters replace rather than insert themselves with motion 921afterwards that is user controlled (you can specify any of the 8 922compass directions). Special commands for movement are provided. 923Special commands for hacking tabs and tab stops are provided. Special 924commands for killing rectangles and overlaying them are provided. See 925the documentation of function edit-picture for more details. 926 927Calls value of `edit-picture-hook' on entry if non-nil. 928 929* Stupid C-s/C-q `flow control' supported. 930 931Do (set-input-mode nil t) to tell Emacs to use CBREAK mode and interpret 932C-s and C-q as flow control commands. (set-input-mode t nil) switches 933back to interrupt-driven input. (set-input-mode nil nil) uses CBREAK 934mode but no `flow control'; this may make it easier to run Emacs under 935certain debuggers that have trouble dealing with inferiors that use SIGIO. 936 937CBREAK mode has certain inherent disadvantages, which are why it is 938not the default: 939 940 Meta-keys are ignored; CBREAK mode discards the 8th bit of 941 input characters. 942 943 Control-G as keyboard input discards buffered output, 944 and therefore can cause incorrect screen updating. 945 946The use of `flow control' has its own additional disadvantage: the 947characters C-s and C-q are not available as editing commands. You can 948partially compensate for this by setting up a keyboard-translate-table 949(see file ONEWS) that maps two other characters (such as C-^ and C-\) into 950C-s and C-q. Of course, C-^ and C-\ are commonly used as escape 951characters in remote-terminal programs. You really can't win except 952by getting rid of this sort of `flow control.' 953 954The configuration switch CBREAK_INPUT is now eliminated. 955INTERRUPT_INPUT exists only to specify the default mode of operation; 956#define it to make interrupt-driven input the default. 957 958* Completion of directory names provides a slash. 959 960If file name completion yields the name of a directory, 961a slash is appended to it. 962 963* Undo can clear modified-flag. 964 965If you undo changes in a buffer back to a state in which the 966buffer was not considered "modified", then it is labelled as 967once again "unmodified". 968 969* M-x run-lisp. 970 971This command creates an inferior Lisp process whose input and output 972appear in the Emacs buffer named `*lisp*'. That buffer uses a major mode 973called inferior-lisp-mode, which has many of the commands of lisp-mode 974and those of shell-mode. Calls the value of shell-mode-hook and 975lisp-mode-hook, in that order, if non-nil. 976 977Meanwhile, in lisp-mode, the command C-M-x is defined to 978send the current defun as input to the `*lisp*' subprocess. 979 980* Mode line says `Narrow' when buffer is clipped. 981 982If a buffer has a clipping restriction (made by `narrow-to-region') 983then its mode line contains the word `Narrow' after the major and 984minor modes. 985 986* Mode line says `Abbrev' when abbrev mode is on. 987 988* add-change-log-entry takes prefix argument 989 990Giving a prefix argument makes it prompt for login name, full name, 991and site name, with defaults. Otherwise the defaults are used 992with no confirmation. 993 994* M-x view-buffer and M-x view-file 995 996view-buffer selects the named buffer, view-file finds the named file; the 997resulting buffer is placed into view-mode (a recursive edit). The normal 998emacs commands are not available. Instead a set of special commands is 999provided which faclitate moving around in the buffer, searching and 1000scrolling by screenfuls. Exiting view-mode returns to the buffer in which 1001the view-file or view-buffer command was given. 1002Type ? or h when viewing for a complete list of view commands. 1003Each calls value of `view-hook' if non-nil on entry. 1004 1005written by shane@mit-ajax. 1006 1007* New key commands in dired. 1008 1009`v' views (like more) the file on the current line. 1010`#' marks auto-save files for deletion. 1011`~' marks backup files for deletion. 1012`r' renames a file and updates the directory listing if the 1013file is renamed to same directory. 1014`c' copies a file and updates the directory listing if the file is 1015copied to the same directory. 1016 1017* New function `electric-buffer-list'. 1018 1019This pops up a buffer describing the set of emacs buffers. 1020Immediately typing space makes the buffer list go away and returns 1021to the buffer and window which were previously selected. 1022 1023Otherwise one may use the c-p and c-n commands to move around in the 1024buffer-list buffer and type Space or C-z to select the buffer on the 1025cursor's line. There are a number of other commands which are the same 1026as those of buffer-menu-mode. 1027 1028This is a useful thing to bind to c-x c-b in your `.emacs' file if the 1029rather non-standard `electric' behaviour of the buffer list suits your taste. 1030Type C-h after invoking electric-buffer-list for more information. 1031 1032Calls value of `electric-buffer-menu-mode-hook' if non-nil on entry. 1033Calls value of `after-electric-buffer-menu' on exit (select) if non-nil. 1034 1035Changes in version 16 for mail reading and sending 1036 1037* sendmail prefix character is C-c (and not C-z). New command C-c w. 1038 1039For instance C-c C-c (or C-c C-s) sends mail now rather than C-z C-z. 1040C-c w inserts your `signature' (contents of ~/.signature) at the end 1041of mail. 1042 1043* New feature in C-c y command in sending mail. 1044 1045C-c y is the command to insert the message being replied to. 1046Normally it deletes most header fields and indents everything 1047by three spaces. 1048 1049Now, C-c y does not delete header fields or indent. 1050C-c y with any other numeric argument does delete most header 1051fields, but indents by the amount specified in the argument. 1052 1053* C-r command in Rmail edits current message. 1054 1055It does this by switching to a different major mode 1056which is nearly the same as Text mode. The only difference 1057between it and text mode are the two command C-c and C-]. 1058C-c is defined to switch back to Rmail mode, and C-] 1059is defined to restore the original contents of the message 1060and then switch back to Rmail mode. 1061 1062C-c and C-] are the only ways "back into Rmail", but you 1063can switch to other buffers and edit them as usual. 1064C-r in Rmail changes only the handling of the Rmail buffer. 1065 1066* Rmail command `t' toggles header display. 1067 1068Normally Rmail reformats messages to hide most header fields. 1069`t' switches to display of all the header fields of the 1070current message, as long as it remains current. 1071Another `t' switches back to the usual display. 1072 1073* Rmail command '>' goes to the last message. 1074 1075* Rmail commands `a' and `k' set message attributes. 1076`a' adds an attribute and `k' removes one. You specify 1077the attrbute by name. You can specify either a built-in 1078flag such as "deleted" or "filed", or a user-defined keyword 1079(anything not recognized as built-in). 1080 1081* Rmail commands `l' and `L' summarize by attributes. 1082 1083These commands create a summary with one line per message, 1084like `h', but they list only some of the messages. You 1085specify which attribute (for `l') or attributes (for `L') 1086the messages should have. 1087 1088* Rmail can parse mmdf mail files. 1089 1090* Interface to MH mail system. 1091 1092mh-e is a front end for GNU emacs and the MH mail system. It 1093provides a friendly and convient interface to the MH commands. 1094 1095To read mail, invoke mh-rmail. This will inc new mail and display the 1096scan listing on the screen. To see a summary of the mh-e commands, 1097type ?. Help is available through the usual facilities. 1098 1099To send mail, invoke mh-smail. 1100 1101mh-e requires a copy of MH.5 that has been compiled with the MHE 1102compiler switch. 1103 1104From larus@berkeley. 1105 1106New hooks and parameters in version 16 1107 1108* New variable `blink-matching-paren-distance'. 1109 1110This is the maximum number of characters to search for 1111an open-paren to match an inserted close-paren. 1112The matching open-paren is shown and checked if it is found 1113within this distance. 1114 1115`nil' means search all the way to the beginning of the buffer. 1116In this case, a warning message is printed if no matching 1117open-paren is found. 1118 1119This feature was originally written by shane@mit-ajax. 1120 1121* New variable `find-file-run-dired' 1122 1123If nil, find-file will report an error if an attempt to visit a 1124directory is detected; otherwise, it runs dired on that directory. 1125The default is t. 1126 1127* Variable `dired-listing-switches' holds switches given to `ls' by dired. 1128 1129The value should be a string containing `-' followed by letters. 1130The letter `l' had better be included and letter 'F' had better be excluded! 1131The default is "-al". 1132 1133This feature was originally written by shane@mit-ajax. 1134 1135* New variable `display-time-day-and-date'. 1136 1137If this variable is set non-`nil', the function M-x display-time 1138displays the day and date, as well as the time. 1139 1140* New parameter `c-continued-statement-indent'. 1141 1142This controls the extra indentation given to a line 1143that continues a C statement started on the previous line. 1144By default it is 2, which is why you would see 1145 1146 if (foo) 1147 bar (); 1148 1149 1150* Changed meaning of `c-indent-level'. 1151 1152The value of `c-brace-offset' used to be 1153subtracted from the value of `c-indent-level' whenever 1154that value was used. Now it is not. 1155 1156As a result, `c-indent-level' is now the offset of 1157statements within a block, relative to the line containing 1158the open-brace that starts the block. 1159 1160* turn-on-auto-fill is useful value for text-mode-hook. 1161 1162(setq text-mode-hook 'turn-on-auto-fill) 1163is all you have to do to make sure Auto Fill mode is turned 1164on whenever you enter Text mode. 1165 1166* Parameter explicit-shell-file-name for M-x shell. 1167 1168This variable, if non-nil, specifies the file name to use 1169for the shell to run if you do M-x shell. 1170 1171Changes in version 16 affecting Lisp programming: 1172 1173* Documentation strings adapt to customization. 1174 1175Often the documentation string for a command wants to mention 1176another command. Simply stating the other command as a 1177character sequence has a disadvantage: if the user customizes 1178Emacs by moving that function to a different command, the 1179cross reference in the documentation becomes wrong. 1180 1181A new feature allows you to write the documentation string 1182using a function name, and the command to run that function 1183is looked up when the documentation is printed. 1184 1185If a documentation string contains `\[' (two characters) then 1186the following text, up to the next `]', is taken as a function name. 1187Instead of printing that function name, the command that runs it is printed. 1188(M-x is used to construct a command if no shorter one exists.) 1189 1190For example, instead of putting `C-n' in a documentation string 1191to refer to the C-n command, put in `\[next-line]'. (In practice 1192you will need to quote the backslash with another backslash, 1193due to the syntax for strings in Lisp and C.) 1194 1195To include the literal characters `\[' in a documentation string, 1196precede them with `\='. To include the characters `\=', precede 1197them with `\='. For example, "\\=\\= is the way to quote \\=\\[" 1198will come out as `\= is the way to quote \['. 1199 1200The new function `substitute-command-keys' takes a string possibly 1201contaning \[...] constructs and replaces those constructs with 1202the key sequences they currently stand for. 1203 1204* Primitives `find-line-comment' and `find-line-comment-body' flushed. 1205 1206Search for the value of `comment-start-skip' if you want to find 1207whether and where a line has a comment. 1208 1209* New function `auto-save-file-name-p' 1210 1211Should return non-`nil' iff given a string which is the name of an 1212auto-save file (sans directory name). If you redefine 1213`make-auto-save-file-name', you should redefine this accordingly. By 1214default, this function returns `t' for filenames beginning with 1215character `#'. 1216 1217* The value of `exec-directory' now ends in a slash. 1218 1219This is to be compatible with most directory names in GNU Emacs. 1220 1221* Dribble files and termscript files. 1222 1223(open-dribble-file FILE) opens a dribble file named FILE. When a 1224dribble file is open, every character Emacs reads from the terminal is 1225written to the dribble file. 1226 1227(open-termscript FILE) opens a termscript file named FILE. When a 1228termscript file is open, all characters sent to the terminal by Emacs 1229are also written in the termscript file. 1230 1231The two of these together are very useful for debugging Emacs problems 1232in redisplay. 1233 1234* Upper case command characters by default are same as lower case. 1235 1236If a character in a command is an upper case letter, and is not defined, 1237Emacs uses the definition of the corresponding lower case letter. 1238For example, if C-x U is not directly undefined, it is treated as 1239a synonym for C-x u (undo). 1240 1241* Undefined function errors versus undefined variable errors. 1242 1243Void-symbol errors now say "boundp" if the symbol's value was void 1244or "fboundp" if the function definition was void. 1245 1246* New function `bury-buffer'. 1247 1248The new function `bury-buffer' takes one argument, a buffer object, 1249and puts that buffer at the end of the internal list of buffers. 1250So it is the least preferred candidate for use as the default value 1251of C-x b, or for other-buffer to return. 1252 1253* Already-displayed buffers have low priority for display. 1254 1255When a buffer is chosen automatically for display, or to be the 1256default in C-x b, buffers already displayed in windows have lower 1257priority than buffers not currently visible. 1258 1259* `set-window-start' accepts a third argument NOFORCE. 1260 1261This argument, if non-nil, prevents the window's force_start flag 1262from being set. Setting the force_start flag causes the next 1263redisplay to insist on starting display at the specified starting 1264point, even if dot must be moved to get it onto the screen. 1265 1266* New function `send-string-to-terminal'. 1267 1268This function takes one argument, a string, and outputs its contents 1269to the terminal exactly as specified: control characters, escape 1270sequences, and all. 1271 1272* Keypad put in command mode. 1273 1274The terminal's keypad is now put into command mode, as opposed to 1275numeric mode, while Emacs is running. This is done by means of the 1276termcap `ks' and `ke' strings. 1277 1278* New function `generate-new-buffer' 1279 1280This function takes a string as an argument NAME and looks for a 1281creates and returns a buffer called NAME if one did not already exist. 1282Otherwise, it successively tries appending suffixes of the form "<1>", 1283"<2>" etc to NAME until it creates a string which does not name an 1284existing buffer. A new buffer with that name is the created and returned. 1285 1286* New function `prin1-to-string' 1287This function takes one argument, a lisp object, and returns a string 1288containing that object's printed representation, such as `prin1' 1289would output. 1290 1291* New function `read-from-minibuffer' 1292Lets you supply a prompt, initial-contents, a keymap, and specify 1293whether the result should be interpreted as a string or a lisp object. 1294 1295Old functions `read-minibuffer', `eval-minibuffer', `read-string' all 1296take second optional string argument which is initial contents of 1297minibuffer. 1298 1299* minibuffer variable names changed (names of keymaps) 1300 1301minibuf-local-map -> minibuffer-local-map 1302minibuf-local-ns-map -> minibuffer-local-ns-map 1303minibuf-local-completion-map -> minibuffer-local-completion-map 1304minibuf-local-must-match-map -> minibuffer-local-must-match-map 1305 1306Changes in version 16 affecting configuring and building Emacs 1307 1308* Configuration switch VT100_INVERSE eliminated. 1309 1310You can control the use of inverse video on any terminal by setting 1311the variable `inverse-video', or by changing the termcap entry. If 1312you like, set `inverse-video' in your `.emacs' file based on 1313examination of (getenv "TERM"). 1314 1315* New switch `-batch' makes Emacs run noninteractively. 1316 1317If the switch `-batch' is used, Emacs treats its standard output 1318and input like ordinary files (even if they are a terminal). 1319It does not display buffers or windows; the only output to standard output 1320is what would appear as messages in the echo area, and each 1321message is followed by a newline. 1322 1323The terminal modes are not changed, so that C-z and C-c retain 1324their normal Unix meanings. Emacs does still read commands from 1325the terminal, but the idea of `-batch' is that you use it with 1326other command line arguments that tell Emacs a complete task to perform, 1327including killing itself. `-kill' used as the last argument is a good 1328way to accomplish this. 1329 1330The Lisp variable `noninteractive' is now defined, to be `nil' 1331except when `-batch' has been specified. 1332 1333* Emacs can be built with output redirected to a file. 1334 1335This is because -batch (see above) is now used in building Emacs. 1336 1337 1338 1339Changes in Emacs 15 1340 1341* Emacs now runs on Sun and Megatest 68000 systems; 1342 also on at least one 16000 system running 4.2. 1343 1344* Emacs now alters the output-start and output-stop characters 1345 to prevent C-s and C-q from being considered as flow control 1346 by cretinous rlogin software in 4.2. 1347 1348* It is now possible convert Mocklisp code (for Gosling Emacs) to Lisp code 1349 that can run in GNU Emacs. M-x convert-mocklisp-buffer 1350 converts the contents of the current buffer from Mocklisp to 1351 GNU Emacs Lisp. You should then save the converted buffer with C-x C-w 1352 under a name ending in ".el" 1353 1354 There are probably some Mocklisp constructs that are not handled. 1355 If you encounter one, feel free to report the failure as a bug. 1356 The construct will be handled in a future Emacs release, if that is not 1357 not too hard to do. 1358 1359 Note that lisp code converted from Mocklisp code will not necessarily 1360 run as fast as code specifically written for GNU Emacs, nor will it use 1361 the many features of GNU Emacs which are not present in Gosling's emacs. 1362 (In particular, the byte-compiler (m-x byte-compile-file) knows little 1363 about compilation of code directly converted from mocklisp.) 1364 It is envisaged that old mocklisp code will be incrementally converted 1365 to GNU lisp code, with M-x convert-mocklisp-buffer being the first 1366 step in this process. 1367 1368* Control-x n (narrow-to-region) is now by default a disabled command. 1369 1370 This means that, if you issue this command, it will ask whether 1371 you really mean it. You have the opportunity to enable the 1372 command permanently at that time, so you will not be asked again. 1373 This will place the form "(put 'narrow-to-region 'disabled nil)" in your 1374 .emacs file. 1375 1376* Tags now prompts for the tag table file name to use. 1377 1378 All the tags commands ask for the tag table file name 1379 if you have not yet specified one. 1380 1381 Also, the command M-x visit-tag-table can now be used to 1382 specify the tag table file name initially, or to switch 1383 to a new tag table. 1384 1385* If truncate-partial-width-windows is non-nil (as it intially is), 1386 all windows less than the full screen width (that is, 1387 made by side-by-side splitting) truncate lines rather than continuing 1388 them. 1389 1390* Emacs now checks for Lisp stack overflow to avoid fatal errors. 1391 The depth in eval, apply and funcall may not exceed max-lisp-eval-depth. 1392 The depth in variable bindings and unwind-protects may not exceed 1393 max-specpdl-size. If either limit is exceeded, an error occurs. 1394 You can set the limits to larger values if you wish, but if you make them 1395 too large, you are vulnerable to a fatal error if you invoke 1396 Lisp code that does infinite recursion. 1397 1398* New hooks find-file-hook and write-file-hook. 1399 Both of these variables if non-nil should be functions of no arguments. 1400 At the time they are called (current-buffer) will be the buffer being 1401 read or written respectively. 1402 1403 find-file-hook is called whenever a file is read into its own buffer, 1404 such as by calling find-file, revert-buffer, etc. It is not called by 1405 functions such as insert-file which do not read the file into a buffer of 1406 its own. 1407 find-file-hook is called after the file has been read in and its 1408 local variables (if any) have been processed. 1409 1410 write-file-hook is called just before writing out a file from a buffer. 1411 1412* The initial value of shell-prompt-pattern is now "^[^#$%>]*[#$%>] *" 1413 1414* If the .emacs file sets inhibit-startup-message to non-nil, 1415 the messages normally printed by Emacs at startup time 1416 are inhibited. 1417 1418* Facility for run-time conditionalization on the basis of emacs features. 1419 1420 The new variable features is a list of symbols which represent "features" 1421 of the executing emacs, for use in run-time conditionalization. 1422 1423 The function featurep of one argument may be used to test for the 1424 presence of a feature. It is just the same as 1425 (not (null (memq FEATURE features))) where FEATURE is its argument. 1426 For example, (if (featurep 'magic-window-hack) 1427 (transmogrify-window 'vertical) 1428 (split-window-vertically)) 1429 1430 The function provide of one argument "announces" that FEATURE is present. 1431 It is much the same as (if (not (featurep FEATURE)) 1432 (setq features (cons FEATURE features))) 1433 1434 The function require with arguments FEATURE and FILE-NAME loads FILE-NAME 1435 (which should contain the form (provide FEATURE)) unless FEATURE is present. 1436 It is much the same as (if (not (featurep FEATURE)) 1437 (progn (load FILE-NAME) 1438 (if (not featurep FEATURE) (error ...)))) 1439 FILE-NAME is optional and defaults to FEATURE. 1440 1441* New function load-average. 1442 1443 This returns a list of three integers, which are 1444 the current 1 minute, 5 minute and 15 minute load averages, 1445 each multiplied by a hundred (since normally they are floating 1446 point numbers). 1447 1448* Per-terminal libraries loaded automatically. 1449 1450 Emacs when starting up on terminal type T automatically loads 1451 a library named term-T. T is the value of the TERM environment variable. 1452 Thus, on terminal type vt100, Emacs would do (load "term-vt100" t t). 1453 Such libraries are good places to set the character translation table. 1454 1455 It is a bad idea to redefine lots of commands in a per-terminal library, 1456 since this affects all users. Instead, define a command to do the 1457 redefinitions and let the user's init file, which is loaded later, 1458 call that command or not, as the user prefers. 1459 1460* Programmer's note: detecting killed buffers. 1461 1462 Buffers are eliminated by explicitly killing them, using 1463 the function kill-buffer. This does not eliminate or affect 1464 the pointers to the buffer which may exist in list structure. 1465 If you have a pointer to a buffer and wish to tell whether 1466 the buffer has been killed, use the function buffer-name. 1467 It returns nil on a killed buffer, and a string on a live buffer. 1468 1469* New ways to access the last command input character. 1470 1471 The function last-key-struck, which used to return the last 1472 input character that was read by command input, is eliminated. 1473 Instead, you can find this information as the value of the 1474 variable last-command-char. (This variable used to be called 1475 last-key). 1476 1477 Another new variable, last-input-char, holds the last character 1478 read from the command input stream regardless of what it was 1479 read for. last-input-char and last-command-char are different 1480 only inside a command that has called read-char to read input. 1481 1482* The new switch -kill causes Emacs to exit after processing the 1483 preceding command line arguments. Thus, 1484 emacs -l lib data -e do-it -kill 1485 means to load lib, find file data, call do-it on no arguments, 1486 and then exit. 1487 1488* The config.h file has been modularized. 1489 1490 Options that depend on the machine you are running on are defined 1491 in a file whose name starts with "m-", such as m-vax.h. 1492 Options that depend on the operating system software version you are 1493 running on are defined in a file whose name starts with "s-", 1494 such as s-bsd4.2.h. 1495 1496 config.h includes one m- file and one s- file. It also defines a 1497 few other options whose values do not follow from the machine type 1498 and system type being used. Installers normally will have to 1499 select the correct m- and s- files but will never have to change their 1500 contents. 1501 1502* Termcap AL and DL strings are understood. 1503 1504 If the termcap entry defines AL and DL strings, for insertion 1505 and deletion of multiple lines in one blow, Emacs now uses them. 1506 This matters most on certain bit map display terminals for which 1507 scrolling is comparatively slow. 1508 1509* Bias against scrolling screen far on fast terminals. 1510 1511 Emacs now prefers to redraw a few lines rather than 1512 shift them a long distance on the screen, when the terminal is fast. 1513 1514* New major mode, mim-mode. 1515 1516 This major mode is for editing MDL code. Perhaps a MDL 1517 user can explain why it is not called mdl-mode. 1518 You must load the library mim-mode explicitly to use this. 1519 1520* GNU documentation formatter `texinfo'. 1521 1522 The `texinfo' library defines a format for documentation 1523 files which can be passed through Tex to make a printed manual 1524 or passed through texinfo to make an Info file. Texinfo is 1525 documented fully by its own Info file; compare this file 1526 with its source, texinfo.texinfo, for additional guidance. 1527 1528 All documentation files for GNU utilities should be written 1529 in texinfo input format. 1530 1531 Tex processing of texinfo files requires the Botex macro package. 1532 This is not ready for distribution yet, but will appear at 1533 a later time. 1534 1535* New function read-from-string (emacs 15.29) 1536 1537 read-from-string takes three arguments: a string to read from, 1538 and optionally start and end indices which delimit a substring 1539 from which to read. (They default to 0 and the length of the string, 1540 respectively.) 1541 1542 This function returns a cons cell whose car is the object produced 1543 by reading from the string and whose cdr is a number giving the 1544 index in the string of the first character not read. That index may 1545 be passed as the second argument to a later call to read-from-string 1546 to read the next form represented by the string. 1547 1548 In addition, the function read now accepts a string as its argument. 1549 In this case, it calls read-from-string on the whole string, and 1550 returns the car of the result. (ie the actual object read.) 1551 1552 1553 1554Changes in Emacs 14 1555 1556* Completion now prints various messages such as [Sole Completion] 1557 or [Next Character Not Unique] to describe the results obtained. 1558 These messages appear after the text in the minibuffer, and remain 1559 on the screen until a few seconds go by or you type a key. 1560 1561* The buffer-read-only flag is implemented. 1562 Setting or binding this per-buffer variable to a non-nil value 1563 makes illegal any operation which would modify the textual content of 1564 the buffer. (Such operations signal a buffer-read-only error) 1565 The read-only state of a buffer may be altered using toggle-read-only 1566 (C-x C-q) 1567 The buffers used by Rmail, Dired, Rnews, and Info are now read-only 1568 by default to prevent accidental damage to the information in those 1569 buffers. 1570 1571* Functions car-safe and cdr-safe. 1572 These functions are like car and cdr when the argument is a cons. 1573 Given an argument not a cons, car-safe always returns nil, with 1574 no error; the same for cdr-safe. 1575 1576* The new function user-real-login-name returns the name corresponding 1577 to the real uid of the Emacs process. This is usually the same 1578 as what user-login-name returns; however, when Emacs is invoked 1579 from su, user-real-login-name returns "root" but user-login-name 1580 returns the name of the user who invoked su. 1581 1582 1583 1584Changes in Emacs 13 1585 1586* There is a new version numbering scheme. 1587 1588 What used to be the first version number, which was 1, 1589 has been discarded since it does not seem that I need three 1590 levels of version number. 1591 1592 However, a new third version number has been added to represent 1593 changes by user sites. This number will always be zero in 1594 Emacs when I distribute it; it will be incremented each time 1595 Emacs is built at another site. 1596 1597* There is now a reader syntax for Meta characters: 1598 \M-CHAR means CHAR or'ed with the Meta bit. For example: 1599 1600 ?\M-x is (+ ?x 128) 1601 ?\M-\n is (+ ?\n 128) 1602 ?\M-\^f is (+ ?\^f 128) 1603 1604 This syntax can be used in strings too. Note, however, that 1605 Meta characters are not meaningful in key sequences being passed 1606 to define-key or lookup-key; you must use ESC characters (\e) 1607 in them instead. 1608 1609 ?\C- can be used likewise for control characters. (13.9) 1610 1611* Installation change 1612 The string "../lisp" now adds to the front of the load-path 1613 used for searching for Lisp files during Emacs initialization. 1614 It used to replace the path specified in paths.h entirely. 1615 Now the directory ../lisp is searched first and the directoris 1616 specified in paths.h are searched afterward. 1617 1618 1619 1620Changes in Emacs 1.12 1621 1622* There is a new installation procedure. 1623 See the file INSTALL that comes in the top level 1624 directory in the tar file or tape. 1625 1626* The Meta key is now supported on terminals that have it. 1627 This is a shift key which causes the high bit to be turned on 1628 in all input characters typed while it is held down. 1629 1630 read-char now returns a value in the range 128-255 if 1631 a Meta character is typed. When interpreted as command 1632 input, a Meta character is equivalent to a two character 1633 sequence, the meta prefix character followed by the un-metized 1634 character (Meta-G unmetized is G). 1635 1636 The meta prefix character 1637 is specified by the value of the variable meta-prefix-char. 1638 If this character (normally Escape) has been redefined locally 1639 with a non-prefix definition (such as happens in completing 1640 minibuffers) then the local redefinition is suppressed when 1641 the character is not the last one in a key sequence. 1642 So the local redefinition is effective if you type the character 1643 explicitly, but not effective if the character comes from 1644 the use of the Meta key. 1645 1646* `-' is no longer a completion command in the minibuffer. 1647 It is an ordinary self-inserting character. 1648 1649* The list load-path of directories load to search for Lisp files 1650 is now controlled by the EMACSLOADPATH environment variable 1651[[ Note this was originally EMACS-LOAD-PATH and has been changed 1652 again; sh does not deal properly with hyphens in env variable names]] 1653 rather than the EPATH environment variable. This is to avoid 1654 conflicts with other Emacses. 1655 1656 While Emacs is being built initially, the load-path 1657 is now just ("../lisp"), ignoring paths.h. It does not 1658 ignore EMACSLOADPATH, however; you should avoid having 1659 this variable set while building Emacs. 1660 1661* You can now specify a translation table for keyboard 1662 input characters, as a way of exchanging or substituting 1663 keys on the keyboard. 1664 1665 If the value of keyboard-translate-table is a string, 1666 every character received from the keyboard is used as an 1667 index in that string, and the character at that index in 1668 the string is used as input instead of what was actually 1669 typed. If the actual input character is >= the length of 1670 the string, it is used unchanged. 1671 1672 One way this feature can be used is to fix bad keyboard 1673 designes. For example, on some terminals, Delete is 1674 Shift-Underscore. Since Delete is a more useful character 1675 than Underscore, it is an improvement to make the unshifted 1676 character Delete and the shifted one Underscore. This can 1677 be done with 1678 1679 ;; First make a translate table that does the identity translation. 1680 (setq keyboard-translate-table (make-string 128 0)) 1681 (let ((i 0)) 1682 (while (< i 128) 1683 (aset keyboard-translate-table i i) 1684 (setq i (1+ i)))) 1685 1686 ;; Now alter translations of some characters. 1687 (aset keyboard-translate-table ?\_ ?\^?) 1688 (aset keyboard-translate-table ?\^? ?\_) 1689 1690 If your terminal has a Meta key and can therefore send 1691 codes up to 255, Meta characters are translated through 1692 elements 128 through 255 of the translate table, and therefore 1693 are translated independently of the corresponding non-Meta 1694 characters. You must therefore establish translations 1695 independently for the Meta characters if you want them too: 1696 1697 ;; First make a translate table that does the identity translation. 1698 (setq keyboard-translate-table (make-string 256 0)) 1699 (let ((i 0)) 1700 (while (< i 256) 1701 (aset keyboard-translate-table i i) 1702 (setq i (1+ i)))) 1703 1704 ;; Now alter translations of some characters. 1705 (aset keyboard-translate-table ?\_ ?\^?) 1706 (aset keyboard-translate-table ?\^? ?\_) 1707 1708 ;; Now alter translations of some Meta characters. 1709 (aset keyboard-translate-table (+ 128 ?\_) (+ 128 ?\^?)) 1710 (aset keyboard-translate-table (+ 128 ?\^?) (+ 128 ?\_)) 1711 1712* (process-kill-without-query PROCESS) 1713 1714This marks the process so that, when you kill Emacs, 1715you will not on its account be queried about active subprocesses. 1716 1717 1718 1719Changes in Emacs 1.11 1720 1721* The commands C-c and C-z have been interchanged, 1722 for greater compatibility with normal Unix usage. 1723 C-z now runs suspend-emacs and C-c runs exit-recursive-edit. 1724 1725* The value returned by file-name-directory now ends 1726 with a slash. (file-name-directory "foo/bar") => "foo/". 1727 This avoids confusing results when dealing with files 1728 in the root directory. 1729 1730 The value of the per-buffer variable default-directory 1731 is also supposed to have a final slash now. 1732 1733* There are now variables to control the switches passed to 1734 `ls' by the C-x C-d command (list-directory). 1735 list-directory-brief-switches is a string, initially "-CF", 1736 used for brief listings, and list-directory-verbose-switches 1737 is a string, initially "-l", used for verbose ones. 1738 1739* For Ann Arbor Ambassador terminals, the termcap "ti" string 1740 is now used to initialize the screen geometry on entry to Emacs, 1741 and the "te" string is used to set it back on exit. 1742 If the termcap entry does not define the "ti" or "te" string, 1743 Emacs does what it used to do. 1744 1745 1746 1747Changes in Emacs 1.10 1748 1749* GNU Emacs has been made almost 1/3 smaller. 1750 It now dumps out as only 530kbytes on Vax 4.2bsd. 1751 1752* The term "checkpoint" has been replaced by "auto save" 1753 throughout the function names, variable names and documentation 1754 of GNU Emacs. 1755 1756* The function load now tries appending ".elc" and ".el" 1757 to the specified filename BEFORE it tries the filename 1758 without change. 1759 1760* rmail now makes the mode line display the total number 1761 of messages and the current message number. 1762 The "f" command now means forward a message to another user. 1763 The command to search through all messages for a string is now "F". 1764 The "u" command now means to move back to the previous 1765 message and undelete it. To undelete the selected message, use Meta-u. 1766 1767* The hyphen character is now equivalent to a Space while 1768 in completing minibuffers. Both mean to complete an additional word. 1769 1770* The Lisp function error now takes args like format 1771 which are used to construct the error message. 1772 1773* Redisplay will refuse to start its display at the end of the buffer. 1774 It will pick a new place to display from, rather than use that. 1775 1776* The value returned by garbage-collect has been changed. 1777 Its first element is no longer a number but a cons, 1778 whose car is the number of cons cells now in use, 1779 and whose cdr is the number of cons cells that have been 1780 made but are now free. 1781 The second element is similar but describes symbols rather than cons cells. 1782 The third element is similar but describes markers. 1783 1784* The variable buffer-name has been eliminated. 1785 The function buffer-name still exists. This is to prevent 1786 user programs from changing buffer names without going 1787 through the rename-buffer function. 1788 1789 1790 1791Changes in Emacs 1.9 1792 1793* When a fill prefix is in effect, paragraphs are started 1794 or separated by lines that do not start with the fill prefix. 1795 Also, a line which consists of the fill prefix followed by 1796 white space separates paragraphs. 1797 1798* C-x C-v runs the new function find-alternate-file. 1799 It finds the specified file, switches to that buffer, 1800 and kills the previous current buffer. (It requires 1801 confirmation if that buffer had changes.) This is 1802 most useful after you find the wrong file due to a typo. 1803 1804* Exiting the minibuffer moves the cursor to column 0, 1805 to show you that it has really been exited. 1806 1807* Meta-g (fill-region) now fills each paragraph in the 1808 region individually. To fill the region as if it were 1809 a single paragraph (for when the paragraph-delimiting mechanism 1810 does the wrong thing), use fill-region-as-paragraph. 1811 1812* Tab in text mode now runs the function tab-to-tab-stop. 1813 A new mode called indented-text-mode is like text-mode 1814 except that in it Tab runs the function indent-relative, 1815 which indents the line under the previous line. 1816 If auto fill is enabled while in indented-text-mode, 1817 the new lines that it makes are indented. 1818 1819* Functions kill-rectangle and yank-rectangle. 1820 kill-rectangle deletes the rectangle specified by dot and mark 1821 (or by two arguments) and saves it in the variable killed-rectangle. 1822 yank-rectangle inserts the rectangle in that variable. 1823 1824 Tab characters in a rectangle being saved are replaced 1825 by spaces in such a way that their appearance will 1826 not be changed if the rectangle is later reinserted 1827 at a different column position. 1828 1829* `+' in a regular expression now means 1830 to repeat the previous expression one or more times. 1831 `?' means to repeat it zero or one time. 1832 They are in all regards like `*' except for the 1833 number of repetitions they match. 1834 1835 \< in a regular expression now matches the null string 1836 when it is at the beginning of a word; \> matches 1837 the null string at the end of a word. 1838 1839* C-x p narrows the buffer so that only the current page 1840 is visible. 1841 1842* C-x ) with argument repeats the kbd macro just 1843 defined that many times, counting the definition 1844 as one repetition. 1845 1846* C-x ( with argument begins defining a kbd macro 1847 starting with the last one defined. It executes that 1848 previous kbd macro initially, just as if you began 1849 by typing it over again. 1850 1851* C-x q command queries the user during kbd macro execution. 1852 With prefix argument, enters recursive edit, 1853 reading keyboard commands even within a kbd macro. 1854 You can give different commands each time the macro executes. 1855 Without prefix argument, reads a character. Your options are: 1856 Space -- execute the rest of the macro. 1857 Delete -- skip the rest of the macro; start next repetition. 1858 C-d -- skip rest of the macro and don't repeat it any more. 1859 C-r -- enter a recursive edit, then on exit ask again for a character 1860 C-l -- redisplay screen and ask again." 1861 1862* write-kbd-macro and append-kbd-macro are used to save 1863 a kbd macro definition in a file (as Lisp code to 1864 redefine the macro when the file is loaded). 1865 These commands differ in that write-kbd-macro 1866 discards the previous contents of the file. 1867 If given a prefix argument, both commands 1868 record the keys which invoke the macro as well as the 1869 macro's definition. 1870 1871* The variable global-minor-modes is used to display 1872 strings in the mode line of all buffers. It should be 1873 a list of elements thaht are conses whose cdrs are strings 1874 to be displayed. This complements the variable 1875 minor-modes, which has the same effect but has a separate 1876 value in each buffer. 1877 1878* C-x = describes horizontal scrolling in effect, if any. 1879 1880* Return now auto-fills the line it is ending, in auto fill mode. 1881 Space with zero as argument auto-fills the line before it 1882 just like Space without an argument. 1883 1884 1885 1886Changes in Emacs 1.8 1887 1888This release mostly fixes bugs. There are a few new features: 1889 1890* apropos now sorts the symbols before displaying them. 1891 Also, it returns a list of the symbols found. 1892 1893 apropos now accepts a second arg PRED which should be a function 1894 of one argument; if PRED is non-nil, each symbol is tested 1895 with PRED and only symbols for which PRED returns non-nil 1896 appear in the output or the returned list. 1897 1898 If the third argument to apropos is non-nil, apropos does not 1899 display anything; it merely returns the list of symbols found. 1900 1901 C-h a now runs the new function command-apropos rather than 1902 apropos, and shows only symbols with definitions as commands. 1903 1904* M-x shell sends the command 1905 if (-f ~/.emacs_NAME)source ~/.emacs_NAME 1906 invisibly to the shell when it starts. Here NAME 1907 is replaced by the name of shell used, 1908 as it came from your ESHELL or SHELL environment variable 1909 but with directory name, if any, removed. 1910 1911* M-, now runs the command tags-loop-continue, which is used 1912 to resume a terminated tags-search or tags-query-replace. 1913 1914 1915 1916Changes in Emacs 1.7 1917 1918It's Beat CCA Week. 1919 1920* The initial buffer is now called "*scratch*" instead of "scratch", 1921 so that all buffer names used automatically by Emacs now have *'s. 1922 1923* Undo information is now stored separately for each buffer. 1924 The Undo command (C-x u) always applies to the current 1925 buffer only. 1926 1927 C-_ is now a synonym for C-x u. 1928 1929 (buffer-flush-undo BUFFER) causes undo information not to 1930 be kept for BUFFER, and frees the space that would have 1931 been used to hold it. In any case, no undo information is 1932 kept for buffers whose names start with spaces. (These 1933 buffers also do not appear in the C-x C-b display.) 1934 1935* Rectangle operations are now implemented. 1936 C-x r stores the rectangle described by dot and mark 1937 into a register; it reads the register name from the keyboard. 1938 C-x g, the command to insert the contents of a register, 1939 can be used to reinsert the rectangle elsewhere. 1940 1941 Other rectangle commands include 1942 open-rectangle: 1943 insert a blank rectangle in the position and size 1944 described by dot and mark, at its corners; 1945 the existing text is pushed to the right. 1946 clear-rectangle: 1947 replace the rectangle described by dot ane mark 1948 with blanks. The previous text is deleted. 1949 delete-rectangle: 1950 delete the text of the specified rectangle, 1951 moving the text beyond it on each line leftward. 1952 1953* Side-by-side windows are allowed. Use C-x 5 to split the 1954 current window into two windows side by side. 1955 C-x } makes the selected window ARG columns wider at the 1956 expense of the windows at its sides. C-x { makes the selected 1957 window ARG columns narrower. An argument to C-x 5 specifies 1958 how many columns to give to the leftmost of the two windows made. 1959 1960 C-x 2 now accepts a numeric argument to specify the number of 1961 lines to give to the uppermost of the two windows it makes. 1962 1963* Horizontal scrolling of the lines in a window is now implemented. 1964 C-x < (scroll-left) scrolls all displayed lines left, 1965 with the numeric argument (default 1) saying how far to scroll. 1966 When the window is scrolled left, some amount of the beginning 1967 of each nonempty line is replaced by an "$". 1968 C-x > scrolls right. If a window has no text hidden at the left 1969 margin, it cannot be scrolled any farther right than that. 1970 When nonzero leftwards scrolling is in effect in a window. 1971 lines are automatically truncated at the window's right margin 1972 regardless of the value of the variable truncate-lines in the 1973 buffer being displayed. 1974 1975* C-x C-d now uses the default output format of `ls', 1976 which gives just file names in multiple columns. 1977 C-u C-x C-d passes the -l switch to `ls'. 1978 1979* C-t at the end of a line now exchanges the two preceding characters. 1980 1981 All the transpose commands now interpret zero as an argument 1982 to mean to transpose the textual unit after or around dot 1983 with the one after or around the mark. 1984 1985* M-! executes a shell command in an inferior shell 1986 and displays the output from it. With a prefix argument, 1987 it inserts the output in the current buffer after dot 1988 and sets the mark after the output. The shell command 1989 gets /dev/null as its standard input. 1990 1991 M-| is like M-! but passes the contents of the region 1992 as input to the shell command. A prefix argument makes 1993 the output from the command replace the contents of the region. 1994 1995* The mode line will now say "Def" after the major mode 1996 while a keyboard macro is being defined. 1997 1998* The variable fill-prefix is now used by Meta-q. 1999 Meta-q removes the fill prefix from lines that start with it 2000 before filling, and inserts the fill prefix on each line 2001 after filling. 2002 2003 The command C-x . sets the fill prefix equal to the text 2004 on the current line before dot. 2005 2006* The new command Meta-j (indent-new-comment-line), 2007 is like Linefeed (indent-new-line) except when dot is inside a comment; 2008 in that case, Meta-j inserts a comment starter on the new line, 2009 indented under the comment starter above. It also inserts 2010 a comment terminator at the end of the line above, 2011 if the language being edited calls for one. 2012 2013* Rmail should work correctly now, and has some C-h m documentation. 2014 2015 2016 2017Changes in Emacs 1.6 2018 2019* save-buffers-kill-emacs is now on C-x C-c 2020 while C-x C-z does suspend-emacs. This is to make 2021 C-x C-c like the normal Unix meaning of C-c 2022 and C-x C-z linke the normal Unix meaning of C-z. 2023 2024* M-ESC (eval-expression) is now a disabled command by default. 2025 This prevents users who type ESC ESC accidentally from 2026 getting confusing results. Put 2027 (put 'eval-expression 'disabled nil) 2028 in your ~/.emacs file to enable the command. 2029 2030* Self-inserting text is grouped into bunches for undoing. 2031 Each C-x u command undoes up to 20 consecutive self-inserting 2032 characters. 2033 2034* Help f now uses as a default the function being called 2035 in the innermost Lisp expression that dot is in. 2036 This makes it more convenient to use while writing 2037 Lisp code to run in Emacs. 2038 (If the text around dot does not appear to be a call 2039 to a Lisp function, there is no default.) 2040 2041 Likewise, Help v uses the symbol around or before dot 2042 as a default, if that is a variable name. 2043 2044* Commands that read filenames now insert the default 2045 directory in the minibuffer, to become part of your input. 2046 This allows you to see what the default is. 2047 You may type a filename which goes at the end of the 2048 default directory, or you may edit the default directory 2049 as you like to create the input you want to give. 2050 You may also type an absolute pathname (starting with /) 2051 or refer to a home directory (input starting with ~) 2052 after the default; the presence of // or /~ causes 2053 everything up through the slash that precedes your 2054 type-in to be ignored. 2055 2056 Returning the default directory without change, 2057 including the terminating slash, requests the use 2058 of the default file name (usually the visited file's name). 2059 2060 Set the variable insert-default-directory to nil 2061 to turn off this feature. 2062 2063* M-x shell now uses the environment variable ESHELL, 2064 if it exists, as the file name of the shell to run. 2065 If there is no ESHELL variable, the SHELL variable is used. 2066 This is because some shells do not work properly as inferiors 2067 of Emacs (or anything like Emacs). 2068 2069* A new variable minor-modes now exists, with a separate value 2070 in each buffer. Its value should be an alist of elements 2071 (MODE-FUNCTION-SYMBOL . PRETTY-NAME-STRING), one for each 2072 minor mode that is turned on in the buffer. The pretty 2073 name strings are displayed in the mode line after the name of the 2074 major mode (with spaces between them). The mode function 2075 symbols should be symbols whose function definitions will 2076 turn on the minor mode if given 1 as an argument; they are present 2077 so that Help m can find their documentation strings. 2078 2079* The format of tag table files has been changed. 2080 The new format enables Emacs to find tags much faster. 2081 2082 A new program, etags, exists to make the kind of 2083 tag table that Emacs wants. etags is invoked just 2084 like ctags; in fact, if you give it any switches, 2085 it does exactly what ctags would do. Give it the 2086 empty switch ("-") to make it act like ctags with no switches. 2087 2088 etags names the tag table file "TAGS" rather than "tags", 2089 so that these tag tables and the standard Unix ones 2090 can coexist. 2091 2092 The tags library can no longer use standard ctags-style 2093 tag tables files. 2094 2095* The file of Lisp code Emacs reads on startup is now 2096 called ~/.emacs rather than ~/.emacs_pro. 2097 2098* copy-file now gives the copied file the same mode bits 2099 as the original file. 2100 2101* Output from a process inserted into the process's buffer 2102 no longer sets the buffer's mark. Instead it sets a 2103 marker associated with the process to point to the end 2104 of the inserted text. You can access this marker with 2105 (process-mark PROCESS) 2106 and then either examine its position with marker-position 2107 or set its position with set-marker. 2108 2109* completing-read takes a new optional fifth argument which, 2110 if non-nil, should be a string of text to insert into 2111 the minibuffer before reading user commands. 2112 2113* The Lisp function elt now exists: 2114 (elt ARRAY N) is like (aref ARRAY N), 2115 (elt LIST N) is like (nth N LIST). 2116 2117* rplaca is now a synonym for setcar, and rplacd for setcdr. 2118 eql is now a synonym for eq; it turns out that the Common Lisp 2119 distinction between eq and eql is insignificant in Emacs. 2120 numberp is a new synonym for integerp. 2121 2122* auto-save has been renamed to auto-save-mode. 2123 2124* Auto save file names for buffers are now created by the 2125 function make-auto-save-file-name. This is so you can 2126 redefine that function to change the way auto save file names 2127 are chosen. 2128 2129* expand-file-name no longer discards a final slash. 2130 (expand-file-name "foo" "/lose") => "/lose/foo" 2131 (expand-file-name "foo/" "/lose") => "/lose/foo/" 2132 2133 Also, expand-file-name no longer substitutes $ constructs. 2134 A new function substitute-in-file-name does this. Reading 2135 a file name with read-file-name or the `f' or`F' option 2136 of interactive calling uses substitute-in-file-name 2137 on the file name that was read and returns the result. 2138 2139 All I/O primitives including insert-file-contents and 2140 delete-file call expand-file-name on the file name supplied. 2141 This change makes them considerably faster in the usual case. 2142 2143* Interactive calling spec strings allow the new code letter 'D' 2144 which means to read a directory name. It is like 'f' except 2145 that the default if the user makes no change in the minibuffer 2146 is to return the current default directory rather than the 2147 current visited file name. 2148 2149 2150 2151Changes in Emacs 1.5 2152 2153* suspend-emacs now accepts an optional argument 2154 which is a string to be stuffed as terminal input 2155 to be read by Emacs's superior shell after Emacs exits. 2156 2157 A library called ledit exists which uses this feature 2158 to transmit text to a Lisp job running as a sibling of 2159 Emacs. 2160 2161* If find-file is given the name of a directory, 2162 it automatically invokes dired on that directory 2163 rather than reading in the binary data that make up 2164 the actual contents of the directory according to Unix. 2165 2166* Saving an Emacs buffer now preserves the file modes 2167 of any previously existing file with the same name. 2168 This works using new Lisp functions file-modes and 2169 set-file-modes, which can be used to read or set the mode 2170 bits of any file. 2171 2172* The Lisp function cond now exists, with its traditional meaning. 2173 2174* defvar and defconst now permit the documentation string 2175 to be omitted. defvar also permits the initial value 2176 to be omitted; then it acts only as a comment. 2177 2178 2179 2180Changes in Emacs 1.4 2181 2182* Auto-filling now normally indents the new line it creates 2183 by calling indent-according-to-mode. This function, meanwhile, 2184 has in Fundamental and Text modes the effect of making the line 2185 have an indentation of the value of left-margin, a per-buffer variable. 2186 2187 Tab no longer precisely does indent-according-to-mode; 2188 it does that in all modes that supply their own indentation routine, 2189 but in Fundamental, Text and allied modes it inserts a tab character. 2190 2191* The command M-x grep now invokes grep (on arguments 2192 supplied by the user) and reads the output from grep 2193 asynchronously into a buffer. The command C-x ` can 2194 be used to move to the lines that grep has found. 2195 This is an adaptation of the mechanism used for 2196 running compilations and finding the loci of error messages. 2197 2198 You can now use C-x ` even while grep or compilation 2199 is proceeding; as more matches or error messages arrive, 2200 C-x ` will parse them and be able to find them. 2201 2202* M-x mail now provides a command to send the message 2203 and "exit"--that is, return to the previously selected 2204 buffer. It is C-z C-z. 2205 2206* Tab in C mode now tries harder to adapt to all indentation styles. 2207 If the line being indented is a statement that is not the first 2208 one in the containing compound-statement, it is aligned under 2209 the beginning of the first statement. 2210 2211* The functions screen-width and screen-height return the 2212 total width and height of the screen as it is now being used. 2213 set-screen-width and set-screen-height tell Emacs how big 2214 to assume the screen is; they each take one argument, 2215 an integer. 2216 2217* The Lisp function 'function' now exists. function is the 2218 same as quote, except that it serves as a signal to the 2219 Lisp compiler that the argument should be compiled as 2220 a function. Example: 2221 (mapcar (function (lambda (x) (+ x 5))) list) 2222 2223* The function set-key has been renamed to global-set-key. 2224 undefine-key and local-undefine-key has been renamed to 2225 global-unset-key and local-unset-key. 2226 2227* Emacs now collects input from asynchronous subprocesses 2228 while waiting in the functions sleep-for and sit-for. 2229 2230* Shell mode's Newline command attempts to distinguish subshell 2231 prompts from user input when issued in the middle of the buffer. 2232 It no longer reexecutes from dot to the end of the line; 2233 it reeexecutes the entire line minus any prompt. 2234 The prompt is recognized by searching for the value of 2235 shell-prompt-pattern, starting from the beginning of the line. 2236 Anything thus skipped is not reexecuted. 2237 2238 2239 2240Changes in Emacs 1.3 2241 2242* An undo facility exists now. Type C-x u to undo a batch of 2243 changes (usually one command's changes, but some commands 2244 such as query-replace divide their changes into multiple 2245 batches. You can repeat C-x u to undo further. As long 2246 as no commands other than C-x u intervene, each one undoes 2247 another batch. A numeric argument to C-x u acts as a repeat 2248 count. 2249 2250 If you keep on undoing, eventually you may be told that 2251 you have used up all the recorded undo information. 2252 Some actions, such as reading in files, discard all 2253 undo information. 2254 2255 The undo information is not currently stored separately 2256 for each buffer, so it is mainly good if you do something 2257 totally spastic. [This has since been fixed.] 2258 2259* A learn-by-doing tutorial introduction to Emacs now exists. 2260 Type C-h t to enter it. 2261 2262* An Info documentation browser exists. Do M-x info to enter it. 2263 It contains a tutorial introduction so that no more documentation 2264 is needed here. As of now, the only documentation in it 2265 is that of Info itself. 2266 2267* Help k and Help c are now different. Help c prints just the 2268 name of the function which the specified key invokes. Help k 2269 prints the documentation of the function as well. 2270 2271* A document of the differences between GNU Emacs and Twenex Emacs 2272 now exists. It is called DIFF, in the same directory as this file. 2273 2274* C mode can now indent comments better, including multi-line ones. 2275 Meta-Control-q now reindents comment lines within the expression 2276 being aligned. 2277 2278* Insertion of a close-parenthesis now shows the matching open-parenthesis 2279 even if it is off screen, by printing the text following it on its line 2280 in the minibuffer. 2281 2282* A file can now contain a list of local variable values 2283 to be in effect when the file is edited. See the file DIFF 2284 in the same directory as this file for full details. 2285 2286* A function nth is defined. It means the same thing as in Common Lisp. 2287 2288* The function install-command has been renamed to set-key. 2289 It now takes the key sequence as the first argument 2290 and the definition for it as the second argument. 2291 Likewise, local-install-command has been renamed to local-set-key. 2292 2293 2294 2295Changes in Emacs 1.2 2296 2297* A Lisp single-stepping and debugging facility exists. 2298 To cause the debugger to be entered when an error 2299 occurs, set the variable debug-on-error non-nil. 2300 2301 To cause the debugger to be entered whenever function foo 2302 is called, do (debug-on-entry 'foo). To cancel this, 2303 do (cancel-debug-on-entry 'foo). debug-on-entry does 2304 not work for primitives (written in C), only functions 2305 written in Lisp. Most standard Emacs commands are in Lisp. 2306 2307 When the debugger is entered, the selected window shows 2308 a buffer called " *Backtrace" which displays a series 2309 of stack frames, most recently entered first. For each 2310 frame, the function name called is shown, usually followed 2311 by the argument values unless arguments are still being 2312 calculated. At the beginning of the buffer is a description 2313 of why the debugger was entered: function entry, function exit, 2314 error, or simply that the user called the function `debug'. 2315 2316 To exit the debugger and return to top level, type `q'. 2317 2318 In the debugger, you can evaluate Lisp expressions by 2319 typing `e'. This is equivalent to `M-ESC'. 2320 2321 When the debugger is entered due to an error, that is 2322 all you can do. When it is entered due to function entry 2323 (such as, requested by debug-on-entry), you have two 2324 options: 2325 Continue execution and reenter debugger after the 2326 completion of the function being entered. Type `c'. 2327 Continue execution but enter the debugger before 2328 the next subexpression. Type `d'. 2329 2330 You will see that some stack frames are marked with *. 2331 This means the debugger will be entered when those 2332 frames exit. You will see the value being returned 2333 in the first line of the backtrace buffer. Your options: 2334 Continue execution, and return that value. Type `c'. 2335 Continue execution, and return a specified value. Type `r'. 2336 2337 You can mark a frame to enter the debugger on exit 2338 with the `b' command, or clear such a mark with `u'. 2339 2340* Lisp macros now exist. 2341 For example, you can write 2342 (defmacro cadr (arg) (list 'car (list 'cdr arg))) 2343 and then the expression 2344 (cadr foo) 2345 will expand into 2346 (car (cdr foo)) 2347 2348 2349 2350Changes in Emacs 1.1 2351 2352* The initial buffer is now called "scratch" and is in a 2353 new major mode, Lisp Interaction mode. This mode is 2354 intended for typing Lisp expressions, evaluating them, 2355 and having the values printed into the buffer. 2356 2357 Type Linefeed after a Lisp expression, to evaluate the 2358 expression and have its value printed into the buffer, 2359 advancing dot. 2360 2361 The other commands of Lisp mode are available. 2362 2363* The C-x C-e command for evaluating the Lisp expression 2364 before dot has been changed to print the value in the 2365 minibuffer line rather than insert it in the buffer. 2366 A numeric argument causes the printed value to appear 2367 in the buffer instead. 2368 2369* In Lisp mode, the command M-C-x evaluates the defun 2370 containing or following dot. The value is printed in 2371 the minibuffer. 2372 2373* The value of a Lisp expression evaluated using M-ESC 2374 is now printed in the minibuffer. 2375 2376* M-q now runs fill-paragraph, independent of major mode. 2377 2378* C-h m now prints documentation on the current buffer's 2379 major mode. What it prints is the documentation of the 2380 major mode name as a function. All major modes have been 2381 equipped with documentation that describes all commands 2382 peculiar to the major mode, for this purpose. 2383 2384* You can display a Unix manual entry with 2385 the M-x manual-entry command. 2386 2387* You can run a shell, displaying its output in a buffer, 2388 with the M-x shell command. The Return key sends input 2389 to the subshell. Output is printed inserted automatically 2390 in the buffer. Commands C-c, C-d, C-u, C-w and C-z are redefined 2391 for controlling the subshell and its subjobs. 2392 "cd", "pushd" and "popd" commands are recognized as you 2393 enter them, so that the default directory of the Emacs buffer 2394 always remains the same as that of the subshell. 2395 2396* C-x $ (that's a real dollar sign) controls line-hiding based 2397 on indentation. With a numeric arg N > 0, it causes all lines 2398 indented by N or more columns to become invisible. 2399 They are, effectively, tacked onto the preceding line, where 2400 they are represented by " ..." on the screen. 2401 (The end of the preceding visible line corresponds to a 2402 screen cursor position before the "...". Anywhere in the 2403 invisible lines that follow appears on the screen as a cursor 2404 position after the "...".) 2405 Currently, all editing commands treat invisible lines just 2406 like visible ones, except for C-n and C-p, which have special 2407 code to count visible lines only. 2408 C-x $ with no argument turns off this mode, which in any case 2409 is remembered separately for each buffer. 2410 2411* Outline mode is another form of selective display. 2412 It is a major mode invoked with M-x outline-mode. 2413 It is intended for editing files that are structured as 2414 outlines, with heading lines (lines that begin with one 2415 or more asterisks) and text lines (all other lines). 2416 The number of asterisks in a heading line are its level; 2417 the subheadings of a heading line are all following heading 2418 lines at higher levels, until but not including the next 2419 heading line at the same or a lower level, regardless 2420 of intervening text lines. 2421 2422 In outline mode, you have commands to hide (remove from display) 2423 or show the text or subheadings under each heading line 2424 independently. Hidden text or subheadings are invisibly 2425 attached to the end of the preceding heading line, so that 2426 if you kill the hading line and yank it back elsewhere 2427 all the invisible lines accompany it. 2428 2429 All editing commands treat hidden outline-mode lines 2430 as part of the preceding visible line. 2431 2432* C-x C-z runs save-buffers-kill-emacs 2433 offers to save each file buffer, then exits. 2434 2435* C-c's function is now called suspend-emacs. 2436 2437* The command C-x m runs mail, which switches to a buffer *mail* 2438 and lets you compose a message to send. C-x 4 m runs mail in 2439 another window. Type C-z C-s in the mail buffer to send the 2440 message according to what you have entered in the buffer. 2441 2442 You must separate the headers from the message text with 2443 an empty line. 2444 2445* You can now dired partial directories (specified with names 2446 containing *'s, etc, all processed by the shell). Also, you 2447 can dired more than one directory; dired names the buffer 2448 according to the filespec or directory name. Reinvoking 2449 dired on a directory already direded just switches back to 2450 the same directory used last time; do M-x revert if you want 2451 to read in the current contents of the directory. 2452 2453 C-x d runs dired, and C-x 4 d runs dired in another window. 2454 2455 C-x C-d (list-directory) also allows partial directories now. 2456 2457 2458Lisp programming changes 2459 2460* t as an output stream now means "print to the minibuffer". 2461 If there is already text in the minibuffer printed via t 2462 as an output stream, the new text is appended to the old 2463 (or is truncated and lost at the margin). If the minibuffer 2464 contains text put there for some other reason, it is cleared 2465 first. 2466 2467 t is now the top-level value of standard-output. 2468 2469 t as an input stream now means "read via the minibuffer". 2470 The minibuffer is used to read a line of input, with editing, 2471 and this line is then parsed. Any excess not used by `read' 2472 is ignored; each `read' from t reads fresh input. 2473 t is now the top-level value of standard-input. 2474 2475* A marker may be used as an input stream or an output stream. 2476 The effect is to grab input from where the marker points, 2477 advancing it over the characters read, or to insert output 2478 at the marker and advance it. 2479 2480* Output from an asynchronous subprocess is now inserted at 2481 the end of the associated buffer, not at the buffer's dot, 2482 and the buffer's mark is set to the end of the inserted output 2483 each time output is inserted. 2484 2485* (pos-visible-in-window-p POS WINDOW) 2486 returns t if position POS in WINDOW's buffer is in the range 2487 that is being displayed in WINDOW; nil if it is scrolled 2488 vertically out of visibility. 2489 2490 If display in WINDOW is not currently up to date, this function 2491 calculates carefully whether POS would appear if display were 2492 done immediately based on the current (window-start WINDOW). 2493 2494 POS defaults to (dot), and WINDOW to (selected-window). 2495 2496* Variable buffer-alist replaced by function (buffer-list). 2497 The actual alist of buffers used internally by Emacs is now 2498 no longer accessible, to prevent the user from crashing Emacs 2499 by modifying it. The function buffer-list returns a list 2500 of all existing buffers. Modifying this list cannot hurt anything 2501 as a new list is constructed by each call to buffer-list. 2502 2503* load now takes an optional third argument NOMSG which, if non-nil, 2504 prevents load from printing a message when it starts and when 2505 it is done. 2506 2507* byte-recompile-directory is a new function which finds all 2508 the .elc files in a directory, and regenerates each one which 2509 is older than the corresponding .el (Lisp source) file. 2510 2511 2512 2513---------------------------------------------------------------------- 2514This file is part of GNU Emacs. 2515 2516GNU Emacs is free software; you can redistribute it and/or modify 2517it under the terms of the GNU General Public License as published by 2518the Free Software Foundation; either version 2, or (at your option) 2519any later version. 2520 2521GNU Emacs is distributed in the hope that it will be useful, 2522but WITHOUT ANY WARRANTY; without even the implied warranty of 2523MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 2524GNU General Public License for more details. 2525 2526You should have received a copy of the GNU General Public License 2527along with GNU Emacs; see the file COPYING. If not, write to the 2528Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 2529Boston, MA 02110-1301, USA. 2530 2531 2532Local variables: 2533mode: text 2534end: 2535 2536arch-tag: 33dc900d-9c58-473b-87c9-b6d7222323ea 2537