1Old GNU Emacs NEWS -- history of user-visible changes thru version 15. 2Copyright (C) 1985 Richard M. Stallman. 3See the end for copying conditions. 4 5Changes in Emacs 15 6 7* Emacs now runs on Sun and Megatest 68000 systems; 8 also on at least one 16000 system running 4.2. 9 10* Emacs now alters the output-start and output-stop characters 11 to prevent C-s and C-q from being considered as flow control 12 by cretinous rlogin software in 4.2. 13 14* It is now possible convert Mocklisp code (for Gosling Emacs) to Lisp code 15 that can run in GNU Emacs. M-x convert-mocklisp-buffer 16 converts the contents of the current buffer from Mocklisp to 17 GNU Emacs Lisp. You should then save the converted buffer with C-x C-w 18 under a name ending in ".el" 19 20 There are probably some Mocklisp constructs that are not handled. 21 If you encounter one, feel free to report the failure as a bug. 22 The construct will be handled in a future Emacs release, if that is not 23 not too hard to do. 24 25 Note that lisp code converted from Mocklisp code will not necessarily 26 run as fast as code specifically written for GNU Emacs, nor will it use 27 the many features of GNU Emacs which are not present in Gosling's emacs. 28 (In particular, the byte-compiler (m-x byte-compile-file) knows little 29 about compilation of code directly converted from mocklisp.) 30 It is envisaged that old mocklisp code will be incrementally converted 31 to GNU lisp code, with M-x convert-mocklisp-buffer being the first 32 step in this process. 33 34* Control-x n (narrow-to-region) is now by default a disabled command. 35 36 This means that, if you issue this command, it will ask whether 37 you really mean it. You have the opportunity to enable the 38 command permanently at that time, so you will not be asked again. 39 This will place the form "(put 'narrow-to-region 'disabled nil)" in your 40 .emacs file. 41 42* Tags now prompts for the tag table file name to use. 43 44 All the tags commands ask for the tag table file name 45 if you have not yet specified one. 46 47 Also, the command M-x visit-tag-table can now be used to 48 specify the tag table file name initially, or to switch 49 to a new tag table. 50 51* If truncate-partial-width-windows is non-nil (as it intially is), 52 all windows less than the full screen width (that is, 53 made by side-by-side splitting) truncate lines rather than continuing 54 them. 55 56* Emacs now checks for Lisp stack overflow to avoid fatal errors. 57 The depth in eval, apply and funcall may not exceed max-lisp-eval-depth. 58 The depth in variable bindings and unwind-protects may not exceed 59 max-specpdl-size. If either limit is exceeded, an error occurs. 60 You can set the limits to larger values if you wish, but if you make them 61 too large, you are vulnerable to a fatal error if you invoke 62 Lisp code that does infinite recursion. 63 64* New hooks find-file-hook and write-file-hook. 65 Both of these variables if non-nil should be functions of no arguments. 66 At the time they are called (current-buffer) will be the buffer being 67 read or written respectively. 68 69 find-file-hook is called whenever a file is read into its own buffer, 70 such as by calling find-file, revert-buffer, etc. It is not called by 71 functions such as insert-file which do not read the file into a buffer of 72 its own. 73 find-file-hook is called after the file has been read in and its 74 local variables (if any) have been processed. 75 76 write-file-hook is called just before writing out a file from a buffer. 77 78* The initial value of shell-prompt-pattern is now "^[^#$%>]*[#$%>] *" 79 80* If the .emacs file sets inhibit-startup-message to non-nil, 81 the messages normally printed by Emacs at startup time 82 are inhibited. 83 84* Facility for run-time conditionalization on the basis of emacs features. 85 86 The new variable features is a list of symbols which represent "features" 87 of the executing emacs, for use in run-time conditionalization. 88 89 The function featurep of one argument may be used to test for the 90 presence of a feature. It is just the same as 91 (not (null (memq FEATURE features))) where FEATURE is its argument. 92 For example, (if (featurep 'magic-window-hack) 93 (transmogrify-window 'vertical) 94 (split-window-vertically)) 95 96 The function provide of one argument "announces" that FEATURE is present. 97 It is much the same as (if (not (featurep FEATURE)) 98 (setq features (cons FEATURE features))) 99 100 The function require with arguments FEATURE and FILE-NAME loads FILE-NAME 101 (which should contain the form (provide FEATURE)) unless FEATURE is present. 102 It is much the same as (if (not (featurep FEATURE)) 103 (progn (load FILE-NAME) 104 (if (not featurep FEATURE) (error ...)))) 105 FILE-NAME is optional and defaults to FEATURE. 106 107* New function load-average. 108 109 This returns a list of three integers, which are 110 the current 1 minute, 5 minute and 15 minute load averages, 111 each multiplied by a hundred (since normally they are floating 112 point numbers). 113 114* Per-terminal libraries loaded automatically. 115 116 Emacs when starting up on terminal type T automatically loads 117 a library named term-T. T is the value of the TERM environment variable. 118 Thus, on terminal type vt100, Emacs would do (load "term-vt100" t t). 119 Such libraries are good places to set the character translation table. 120 121 It is a bad idea to redefine lots of commands in a per-terminal library, 122 since this affects all users. Instead, define a command to do the 123 redefinitions and let the user's init file, which is loaded later, 124 call that command or not, as the user prefers. 125 126* Programmer's note: detecting killed buffers. 127 128 Buffers are eliminated by explicitly killing them, using 129 the function kill-buffer. This does not eliminate or affect 130 the pointers to the buffer which may exist in list structure. 131 If you have a pointer to a buffer and wish to tell whether 132 the buffer has been killed, use the function buffer-name. 133 It returns nil on a killed buffer, and a string on a live buffer. 134 135* New ways to access the last command input character. 136 137 The function last-key-struck, which used to return the last 138 input character that was read by command input, is eliminated. 139 Instead, you can find this information as the value of the 140 variable last-command-char. (This variable used to be called 141 last-key). 142 143 Another new variable, last-input-char, holds the last character 144 read from the command input stream regardless of what it was 145 read for. last-input-char and last-command-char are different 146 only inside a command that has called read-char to read input. 147 148* The new switch -kill causes Emacs to exit after processing the 149 preceding command line arguments. Thus, 150 emacs -l lib data -e do-it -kill 151 means to load lib, find file data, call do-it on no arguments, 152 and then exit. 153 154* The config.h file has been modularized. 155 156 Options that depend on the machine you are running on are defined 157 in a file whose name starts with "m-", such as m-vax.h. 158 Options that depend on the operating system software version you are 159 running on are defined in a file whose name starts with "s-", 160 such as s-bsd4.2.h. 161 162 config.h includes one m- file and one s- file. It also defines a 163 few other options whose values do not follow from the machine type 164 and system type being used. Installers normally will have to 165 select the correct m- and s- files but will never have to change their 166 contents. 167 168* Termcap AL and DL strings are understood. 169 170 If the termcap entry defines AL and DL strings, for insertion 171 and deletion of multiple lines in one blow, Emacs now uses them. 172 This matters most on certain bit map display terminals for which 173 scrolling is comparatively slow. 174 175* Bias against scrolling screen far on fast terminals. 176 177 Emacs now prefers to redraw a few lines rather than 178 shift them a long distance on the screen, when the terminal is fast. 179 180* New major mode, mim-mode. 181 182 This major mode is for editing MDL code. Perhaps a MDL 183 user can explain why it is not called mdl-mode. 184 You must load the library mim-mode explicitly to use this. 185 186* GNU documentation formatter `texinfo'. 187 188 The `texinfo' library defines a format for documentation 189 files which can be passed through Tex to make a printed manual 190 or passed through texinfo to make an Info file. Texinfo is 191 documented fully by its own Info file; compare this file 192 with its source, texinfo.texinfo, for additional guidance. 193 194 All documentation files for GNU utilities should be written 195 in texinfo input format. 196 197 Tex processing of texinfo files requires the Botex macro package. 198 This is not ready for distribution yet, but will appear at 199 a later time. 200 201* New function read-from-string (emacs 15.29) 202 203 read-from-string takes three arguments: a string to read from, 204 and optionally start and end indices which delimit a substring 205 from which to read. (They default to 0 and the length of the string, 206 respectively.) 207 208 This function returns a cons cell whose car is the object produced 209 by reading from the string and whose cdr is a number giving the 210 index in the string of the first character not read. That index may 211 be passed as the second argument to a later call to read-from-string 212 to read the next form represented by the string. 213 214 In addition, the function read now accepts a string as its argument. 215 In this case, it calls read-from-string on the whole string, and 216 returns the car of the result. (ie the actual object read.) 217 218Changes in Emacs 14 219 220* Completion now prints various messages such as [Sole Completion] 221 or [Next Character Not Unique] to describe the results obtained. 222 These messages appear after the text in the minibuffer, and remain 223 on the screen until a few seconds go by or you type a key. 224 225* The buffer-read-only flag is implemented. 226 Setting or binding this per-buffer variable to a non-nil value 227 makes illegal any operation which would modify the textual content of 228 the buffer. (Such operations signal a buffer-read-only error) 229 The read-only state of a buffer may be altered using toggle-read-only 230 (C-x C-q) 231 The buffers used by Rmail, Dired, Rnews, and Info are now read-only 232 by default to prevent accidental damage to the information in those 233 buffers. 234 235* Functions car-safe and cdr-safe. 236 These functions are like car and cdr when the argument is a cons. 237 Given an argument not a cons, car-safe always returns nil, with 238 no error; the same for cdr-safe. 239 240* The new function user-real-login-name returns the name corresponding 241 to the real uid of the Emacs process. This is usually the same 242 as what user-login-name returns; however, when Emacs is invoked 243 from su, user-real-login-name returns "root" but user-login-name 244 returns the name of the user who invoked su. 245 246Changes in Emacs 13 247 248* There is a new version numbering scheme. 249 250 What used to be the first version number, which was 1, 251 has been discarded since it does not seem that I need three 252 levels of version number. 253 254 However, a new third version number has been added to represent 255 changes by user sites. This number will always be zero in 256 Emacs when I distribute it; it will be incremented each time 257 Emacs is built at another site. 258 259* There is now a reader syntax for Meta characters: 260 \M-CHAR means CHAR or'ed with the Meta bit. For example: 261 262 ?\M-x is (+ ?x 128) 263 ?\M-\n is (+ ?\n 128) 264 ?\M-\^f is (+ ?\^f 128) 265 266 This syntax can be used in strings too. Note, however, that 267 Meta characters are not meaningful in key sequences being passed 268 to define-key or lookup-key; you must use ESC characters (\e) 269 in them instead. 270 271 ?\C- can be used likewise for control characters. (13.9) 272 273* Installation change 274 The string "../lisp" now adds to the front of the load-path 275 used for searching for Lisp files during Emacs initialization. 276 It used to replace the path specified in paths.h entirely. 277 Now the directory ../lisp is searched first and the directoris 278 specified in paths.h are searched afterward. 279 280Changes in Emacs 1.12 281 282* There is a new installation procedure. 283 See the file INSTALL that comes in the top level 284 directory in the tar file or tape. 285 286* The Meta key is now supported on terminals that have it. 287 This is a shift key which causes the high bit to be turned on 288 in all input characters typed while it is held down. 289 290 read-char now returns a value in the range 128-255 if 291 a Meta character is typed. When interpreted as command 292 input, a Meta character is equivalent to a two character 293 sequence, the meta prefix character followed by the un-metized 294 character (Meta-G unmetized is G). 295 296 The meta prefix character 297 is specified by the value of the variable meta-prefix-char. 298 If this character (normally Escape) has been redefined locally 299 with a non-prefix definition (such as happens in completing 300 minibuffers) then the local redefinition is suppressed when 301 the character is not the last one in a key sequence. 302 So the local redefinition is effective if you type the character 303 explicitly, but not effective if the character comes from 304 the use of the Meta key. 305 306* `-' is no longer a completion command in the minibuffer. 307 It is an ordinary self-inserting character. 308 309* The list load-path of directories load to search for Lisp files 310 is now controlled by the EMACSLOADPATH environment variable 311[[ Note this was originally EMACS-LOAD-PATH and has been changed 312 again; sh does not deal properly with hyphens in env variable names]] 313 rather than the EPATH environment variable. This is to avoid 314 conflicts with other Emacses. 315 316 While Emacs is being built initially, the load-path 317 is now just ("../lisp"), ignoring paths.h. It does not 318 ignore EMACSLOADPATH, however; you should avoid having 319 this variable set while building Emacs. 320 321* You can now specify a translation table for keyboard 322 input characters, as a way of exchanging or substituting 323 keys on the keyboard. 324 325 If the value of keyboard-translate-table is a string, 326 every character received from the keyboard is used as an 327 index in that string, and the character at that index in 328 the string is used as input instead of what was actually 329 typed. If the actual input character is >= the length of 330 the string, it is used unchanged. 331 332 One way this feature can be used is to fix bad keyboard 333 designes. For example, on some terminals, Delete is 334 Shift-Underscore. Since Delete is a more useful character 335 than Underscore, it is an improvement to make the unshifted 336 character Delete and the shifted one Underscore. This can 337 be done with 338 339 ;; First make a translate table that does the identity translation. 340 (setq keyboard-translate-table (make-string 128 0)) 341 (let ((i 0)) 342 (while (< i 128) 343 (aset keyboard-translate-table i i) 344 (setq i (1+ i)))) 345 346 ;; Now alter translations of some characters. 347 (aset keyboard-translate-table ?\_ ?\^?) 348 (aset keyboard-translate-table ?\^? ?\_) 349 350 If your terminal has a Meta key and can therefore send 351 codes up to 255, Meta characters are translated through 352 elements 128 through 255 of the translate table, and therefore 353 are translated independently of the corresponding non-Meta 354 characters. You must therefore establish translations 355 independently for the Meta characters if you want them too: 356 357 ;; First make a translate table that does the identity translation. 358 (setq keyboard-translate-table (make-string 256 0)) 359 (let ((i 0)) 360 (while (< i 256) 361 (aset keyboard-translate-table i i) 362 (setq i (1+ i)))) 363 364 ;; Now alter translations of some characters. 365 (aset keyboard-translate-table ?\_ ?\^?) 366 (aset keyboard-translate-table ?\^? ?\_) 367 368 ;; Now alter translations of some Meta characters. 369 (aset keyboard-translate-table (+ 128 ?\_) (+ 128 ?\^?)) 370 (aset keyboard-translate-table (+ 128 ?\^?) (+ 128 ?\_)) 371 372* (process-kill-without-query PROCESS) 373 374This marks the process so that, when you kill Emacs, 375you will not on its account be queried about active subprocesses. 376 377Changes in Emacs 1.11 378 379* The commands C-c and C-z have been interchanged, 380 for greater compatibility with normal Unix usage. 381 C-z now runs suspend-emacs and C-c runs exit-recursive-edit. 382 383* The value returned by file-name-directory now ends 384 with a slash. (file-name-directory "foo/bar") => "foo/". 385 This avoids confusing results when dealing with files 386 in the root directory. 387 388 The value of the per-buffer variable default-directory 389 is also supposed to have a final slash now. 390 391* There are now variables to control the switches passed to 392 `ls' by the C-x C-d command (list-directory). 393 list-directory-brief-switches is a string, initially "-CF", 394 used for brief listings, and list-directory-verbose-switches 395 is a string, initially "-l", used for verbose ones. 396 397* For Ann Arbor Ambassador terminals, the termcap "ti" string 398 is now used to initialize the screen geometry on entry to Emacs, 399 and the "te" string is used to set it back on exit. 400 If the termcap entry does not define the "ti" or "te" string, 401 Emacs does what it used to do. 402 403Changes in Emacs 1.10 404 405* GNU Emacs has been made almost 1/3 smaller. 406 It now dumps out as only 530kbytes on Vax 4.2bsd. 407 408* The term "checkpoint" has been replaced by "auto save" 409 throughout the function names, variable names and documentation 410 of GNU Emacs. 411 412* The function load now tries appending ".elc" and ".el" 413 to the specified filename BEFORE it tries the filename 414 without change. 415 416* rmail now makes the mode line display the total number 417 of messages and the current message number. 418 The "f" command now means forward a message to another user. 419 The command to search through all messages for a string is now "F". 420 The "u" command now means to move back to the previous 421 message and undelete it. To undelete the selected message, use Meta-u. 422 423* The hyphen character is now equivalent to a Space while 424 in completing minibuffers. Both mean to complete an additional word. 425 426* The Lisp function error now takes args like format 427 which are used to construct the error message. 428 429* Redisplay will refuse to start its display at the end of the buffer. 430 It will pick a new place to display from, rather than use that. 431 432* The value returned by garbage-collect has been changed. 433 Its first element is no longer a number but a cons, 434 whose car is the number of cons cells now in use, 435 and whose cdr is the number of cons cells that have been 436 made but are now free. 437 The second element is similar but describes symbols rather than cons cells. 438 The third element is similar but describes markers. 439 440* The variable buffer-name has been eliminated. 441 The function buffer-name still exists. This is to prevent 442 user programs from changing buffer names without going 443 through the rename-buffer function. 444 445Changes in Emacs 1.9 446 447* When a fill prefix is in effect, paragraphs are started 448 or separated by lines that do not start with the fill prefix. 449 Also, a line which consists of the fill prefix followed by 450 white space separates paragraphs. 451 452* C-x C-v runs the new function find-alternate-file. 453 It finds the specified file, switches to that buffer, 454 and kills the previous current buffer. (It requires 455 confirmation if that buffer had changes.) This is 456 most useful after you find the wrong file due to a typo. 457 458* Exiting the minibuffer moves the cursor to column 0, 459 to show you that it has really been exited. 460 461* Meta-g (fill-region) now fills each paragraph in the 462 region individually. To fill the region as if it were 463 a single paragraph (for when the paragraph-delimiting mechanism 464 does the wrong thing), use fill-region-as-paragraph. 465 466* Tab in text mode now runs the function tab-to-tab-stop. 467 A new mode called indented-text-mode is like text-mode 468 except that in it Tab runs the function indent-relative, 469 which indents the line under the previous line. 470 If auto fill is enabled while in indented-text-mode, 471 the new lines that it makes are indented. 472 473* Functions kill-rectangle and yank-rectangle. 474 kill-rectangle deletes the rectangle specified by dot and mark 475 (or by two arguments) and saves it in the variable killed-rectangle. 476 yank-rectangle inserts the rectangle in that variable. 477 478 Tab characters in a rectangle being saved are replaced 479 by spaces in such a way that their appearance will 480 not be changed if the rectangle is later reinserted 481 at a different column position. 482 483* `+' in a regular expression now means 484 to repeat the previous expression one or more times. 485 `?' means to repeat it zero or one time. 486 They are in all regards like `*' except for the 487 number of repetitions they match. 488 489 \< in a regular expression now matches the null string 490 when it is at the beginning of a word; \> matches 491 the null string at the end of a word. 492 493* C-x p narrows the buffer so that only the current page 494 is visible. 495 496* C-x ) with argument repeats the kbd macro just 497 defined that many times, counting the definition 498 as one repetition. 499 500* C-x ( with argument begins defining a kbd macro 501 starting with the last one defined. It executes that 502 previous kbd macro initially, just as if you began 503 by typing it over again. 504 505* C-x q command queries the user during kbd macro execution. 506 With prefix argument, enters recursive edit, 507 reading keyboard commands even within a kbd macro. 508 You can give different commands each time the macro executes. 509 Without prefix argument, reads a character. Your options are: 510 Space -- execute the rest of the macro. 511 Delete -- skip the rest of the macro; start next repetition. 512 C-d -- skip rest of the macro and don't repeat it any more. 513 C-r -- enter a recursive edit, then on exit ask again for a character 514 C-l -- redisplay screen and ask again." 515 516* write-kbd-macro and append-kbd-macro are used to save 517 a kbd macro definition in a file (as Lisp code to 518 redefine the macro when the file is loaded). 519 These commands differ in that write-kbd-macro 520 discards the previous contents of the file. 521 If given a prefix argument, both commands 522 record the keys which invoke the macro as well as the 523 macro's definition. 524 525* The variable global-minor-modes is used to display 526 strings in the mode line of all buffers. It should be 527 a list of elements thaht are conses whose cdrs are strings 528 to be displayed. This complements the variable 529 minor-modes, which has the same effect but has a separate 530 value in each buffer. 531 532* C-x = describes horizontal scrolling in effect, if any. 533 534* Return now auto-fills the line it is ending, in auto fill mode. 535 Space with zero as argument auto-fills the line before it 536 just like Space without an argument. 537 538Changes in Emacs 1.8 539 540This release mostly fixes bugs. There are a few new features: 541 542* apropos now sorts the symbols before displaying them. 543 Also, it returns a list of the symbols found. 544 545 apropos now accepts a second arg PRED which should be a function 546 of one argument; if PRED is non-nil, each symbol is tested 547 with PRED and only symbols for which PRED returns non-nil 548 appear in the output or the returned list. 549 550 If the third argument to apropos is non-nil, apropos does not 551 display anything; it merely returns the list of symbols found. 552 553 C-h a now runs the new function command-apropos rather than 554 apropos, and shows only symbols with definitions as commands. 555 556* M-x shell sends the command 557 if (-f ~/.emacs_NAME)source ~/.emacs_NAME 558 invisibly to the shell when it starts. Here NAME 559 is replaced by the name of shell used, 560 as it came from your ESHELL or SHELL environment variable 561 but with directory name, if any, removed. 562 563* M-, now runs the command tags-loop-continue, which is used 564 to resume a terminated tags-search or tags-query-replace. 565 566Changes in Emacs 1.7 567 568It's Beat CCA Week. 569 570* The initial buffer is now called "*scratch*" instead of "scratch", 571 so that all buffer names used automatically by Emacs now have *'s. 572 573* Undo information is now stored separately for each buffer. 574 The Undo command (C-x u) always applies to the current 575 buffer only. 576 577 C-_ is now a synonym for C-x u. 578 579 (buffer-flush-undo BUFFER) causes undo information not to 580 be kept for BUFFER, and frees the space that would have 581 been used to hold it. In any case, no undo information is 582 kept for buffers whose names start with spaces. (These 583 buffers also do not appear in the C-x C-b display.) 584 585* Rectangle operations are now implemented. 586 C-x r stores the rectangle described by dot and mark 587 into a register; it reads the register name from the keyboard. 588 C-x g, the command to insert the contents of a register, 589 can be used to reinsert the rectangle elsewhere. 590 591 Other rectangle commands include 592 open-rectangle: 593 insert a blank rectangle in the position and size 594 described by dot and mark, at its corners; 595 the existing text is pushed to the right. 596 clear-rectangle: 597 replace the rectangle described by dot ane mark 598 with blanks. The previous text is deleted. 599 delete-rectangle: 600 delete the text of the specified rectangle, 601 moving the text beyond it on each line leftward. 602 603* Side-by-side windows are allowed. Use C-x 5 to split the 604 current window into two windows side by side. 605 C-x } makes the selected window ARG columns wider at the 606 expense of the windows at its sides. C-x { makes the selected 607 window ARG columns narrower. An argument to C-x 5 specifies 608 how many columns to give to the leftmost of the two windows made. 609 610 C-x 2 now accepts a numeric argument to specify the number of 611 lines to give to the uppermost of the two windows it makes. 612 613* Horizontal scrolling of the lines in a window is now implemented. 614 C-x < (scroll-left) scrolls all displayed lines left, 615 with the numeric argument (default 1) saying how far to scroll. 616 When the window is scrolled left, some amount of the beginning 617 of each nonempty line is replaced by an "$". 618 C-x > scrolls right. If a window has no text hidden at the left 619 margin, it cannot be scrolled any farther right than that. 620 When nonzero leftwards scrolling is in effect in a window. 621 lines are automatically truncated at the window's right margin 622 regardless of the value of the variable truncate-lines in the 623 buffer being displayed. 624 625* C-x C-d now uses the default output format of `ls', 626 which gives just file names in multiple columns. 627 C-u C-x C-d passes the -l switch to `ls'. 628 629* C-t at the end of a line now exchanges the two preceding characters. 630 631 All the transpose commands now interpret zero as an argument 632 to mean to transpose the textual unit after or around dot 633 with the one after or around the mark. 634 635* M-! executes a shell command in an inferior shell 636 and displays the output from it. With a prefix argument, 637 it inserts the output in the current buffer after dot 638 and sets the mark after the output. The shell command 639 gets /dev/null as its standard input. 640 641 M-| is like M-! but passes the contents of the region 642 as input to the shell command. A prefix argument makes 643 the output from the command replace the contents of the region. 644 645* The mode line will now say "Def" after the major mode 646 while a keyboard macro is being defined. 647 648* The variable fill-prefix is now used by Meta-q. 649 Meta-q removes the fill prefix from lines that start with it 650 before filling, and inserts the fill prefix on each line 651 after filling. 652 653 The command C-x . sets the fill prefix equal to the text 654 on the current line before dot. 655 656* The new command Meta-j (indent-new-comment-line), 657 is like Linefeed (indent-new-line) except when dot is inside a comment; 658 in that case, Meta-j inserts a comment starter on the new line, 659 indented under the comment starter above. It also inserts 660 a comment terminator at the end of the line above, 661 if the language being edited calls for one. 662 663* Rmail should work correctly now, and has some C-h m documentation. 664 665Changes in Emacs 1.6 666 667* save-buffers-kill-emacs is now on C-x C-c 668 while C-x C-z does suspend-emacs. This is to make 669 C-x C-c like the normal Unix meaning of C-c 670 and C-x C-z linke the normal Unix meaning of C-z. 671 672* M-ESC (eval-expression) is now a disabled command by default. 673 This prevents users who type ESC ESC accidentally from 674 getting confusing results. Put 675 (put 'eval-expression 'disabled nil) 676 in your ~/.emacs file to enable the command. 677 678* Self-inserting text is grouped into bunches for undoing. 679 Each C-x u command undoes up to 20 consecutive self-inserting 680 characters. 681 682* Help f now uses as a default the function being called 683 in the innermost Lisp expression that dot is in. 684 This makes it more convenient to use while writing 685 Lisp code to run in Emacs. 686 (If the text around dot does not appear to be a call 687 to a Lisp function, there is no default.) 688 689 Likewise, Help v uses the symbol around or before dot 690 as a default, if that is a variable name. 691 692* Commands that read filenames now insert the default 693 directory in the minibuffer, to become part of your input. 694 This allows you to see what the default is. 695 You may type a filename which goes at the end of the 696 default directory, or you may edit the default directory 697 as you like to create the input you want to give. 698 You may also type an absolute pathname (starting with /) 699 or refer to a home directory (input starting with ~) 700 after the default; the presence of // or /~ causes 701 everything up through the slash that precedes your 702 type-in to be ignored. 703 704 Returning the default directory without change, 705 including the terminating slash, requests the use 706 of the default file name (usually the visited file's name). 707 708 Set the variable insert-default-directory to nil 709 to turn off this feature. 710 711* M-x shell now uses the environment variable ESHELL, 712 if it exists, as the file name of the shell to run. 713 If there is no ESHELL variable, the SHELL variable is used. 714 This is because some shells do not work properly as inferiors 715 of Emacs (or anything like Emacs). 716 717* A new variable minor-modes now exists, with a separate value 718 in each buffer. Its value should be an alist of elements 719 (MODE-FUNCTION-SYMBOL . PRETTY-NAME-STRING), one for each 720 minor mode that is turned on in the buffer. The pretty 721 name strings are displayed in the mode line after the name of the 722 major mode (with spaces between them). The mode function 723 symbols should be symbols whose function definitions will 724 turn on the minor mode if given 1 as an argument; they are present 725 so that Help m can find their documentation strings. 726 727* The format of tag table files has been changed. 728 The new format enables Emacs to find tags much faster. 729 730 A new program, etags, exists to make the kind of 731 tag table that Emacs wants. etags is invoked just 732 like ctags; in fact, if you give it any switches, 733 it does exactly what ctags would do. Give it the 734 empty switch ("-") to make it act like ctags with no switches. 735 736 etags names the tag table file "TAGS" rather than "tags", 737 so that these tag tables and the standard Unix ones 738 can coexist. 739 740 The tags library can no longer use standard ctags-style 741 tag tables files. 742 743* The file of Lisp code Emacs reads on startup is now 744 called ~/.emacs rather than ~/.emacs_pro. 745 746* copy-file now gives the copied file the same mode bits 747 as the original file. 748 749* Output from a process inserted into the process's buffer 750 no longer sets the buffer's mark. Instead it sets a 751 marker associated with the process to point to the end 752 of the inserted text. You can access this marker with 753 (process-mark PROCESS) 754 and then either examine its position with marker-position 755 or set its position with set-marker. 756 757* completing-read takes a new optional fifth argument which, 758 if non-nil, should be a string of text to insert into 759 the minibuffer before reading user commands. 760 761* The Lisp function elt now exists: 762 (elt ARRAY N) is like (aref ARRAY N), 763 (elt LIST N) is like (nth N LIST). 764 765* rplaca is now a synonym for setcar, and rplacd for setcdr. 766 eql is now a synonym for eq; it turns out that the Common Lisp 767 distinction between eq and eql is insignificant in Emacs. 768 numberp is a new synonym for integerp. 769 770* auto-save has been renamed to auto-save-mode. 771 772* Auto save file names for buffers are now created by the 773 function make-auto-save-file-name. This is so you can 774 redefine that function to change the way auto save file names 775 are chosen. 776 777* expand-file-name no longer discards a final slash. 778 (expand-file-name "foo" "/lose") => "/lose/foo" 779 (expand-file-name "foo/" "/lose") => "/lose/foo/" 780 781 Also, expand-file-name no longer substitutes $ constructs. 782 A new function substitute-in-file-name does this. Reading 783 a file name with read-file-name or the `f' or`F' option 784 of interactive calling uses substitute-in-file-name 785 on the file name that was read and returns the result. 786 787 All I/O primitives including insert-file-contents and 788 delete-file call expand-file-name on the file name supplied. 789 This change makes them considerably faster in the usual case. 790 791* Interactive calling spec strings allow the new code letter 'D' 792 which means to read a directory name. It is like 'f' except 793 that the default if the user makes no change in the minibuffer 794 is to return the current default directory rather than the 795 current visited file name. 796 797Changes in Emacs 1.5 798 799* suspend-emacs now accepts an optional argument 800 which is a string to be stuffed as terminal input 801 to be read by Emacs's superior shell after Emacs exits. 802 803 A library called ledit exists which uses this feature 804 to transmit text to a Lisp job running as a sibling of 805 Emacs. 806 807* If find-file is given the name of a directory, 808 it automatically invokes dired on that directory 809 rather than reading in the binary data that make up 810 the actual contents of the directory according to Unix. 811 812* Saving an Emacs buffer now preserves the file modes 813 of any previously existing file with the same name. 814 This works using new Lisp functions file-modes and 815 set-file-modes, which can be used to read or set the mode 816 bits of any file. 817 818* The Lisp function cond now exists, with its traditional meaning. 819 820* defvar and defconst now permit the documentation string 821 to be omitted. defvar also permits the initial value 822 to be omitted; then it acts only as a comment. 823 824Changes in Emacs 1.4 825 826* Auto-filling now normally indents the new line it creates 827 by calling indent-according-to-mode. This function, meanwhile, 828 has in Fundamental and Text modes the effect of making the line 829 have an indentation of the value of left-margin, a per-buffer variable. 830 831 Tab no longer precisely does indent-according-to-mode; 832 it does that in all modes that supply their own indentation routine, 833 but in Fundamental, Text and allied modes it inserts a tab character. 834 835* The command M-x grep now invokes grep (on arguments 836 supplied by the user) and reads the output from grep 837 asynchronously into a buffer. The command C-x ` can 838 be used to move to the lines that grep has found. 839 This is an adaptation of the mechanism used for 840 running compilations and finding the loci of error messages. 841 842 You can now use C-x ` even while grep or compilation 843 is proceeding; as more matches or error messages arrive, 844 C-x ` will parse them and be able to find them. 845 846* M-x mail now provides a command to send the message 847 and "exit"--that is, return to the previously selected 848 buffer. It is C-z C-z. 849 850* Tab in C mode now tries harder to adapt to all indentation styles. 851 If the line being indented is a statement that is not the first 852 one in the containing compound-statement, it is aligned under 853 the beginning of the first statement. 854 855* The functions screen-width and screen-height return the 856 total width and height of the screen as it is now being used. 857 set-screen-width and set-screen-height tell Emacs how big 858 to assume the screen is; they each take one argument, 859 an integer. 860 861* The Lisp function 'function' now exists. function is the 862 same as quote, except that it serves as a signal to the 863 Lisp compiler that the argument should be compiled as 864 a function. Example: 865 (mapcar (function (lambda (x) (+ x 5))) list) 866 867* The function set-key has been renamed to global-set-key. 868 undefine-key and local-undefine-key has been renamed to 869 global-unset-key and local-unset-key. 870 871* Emacs now collects input from asynchronous subprocesses 872 while waiting in the functions sleep-for and sit-for. 873 874* Shell mode's Newline command attempts to distinguish subshell 875 prompts from user input when issued in the middle of the buffer. 876 It no longer reexecutes from dot to the end of the line; 877 it reeexecutes the entire line minus any prompt. 878 The prompt is recognized by searching for the value of 879 shell-prompt-pattern, starting from the beginning of the line. 880 Anything thus skipped is not reexecuted. 881 882Changes in Emacs 1.3 883 884* An undo facility exists now. Type C-x u to undo a batch of 885 changes (usually one command's changes, but some commands 886 such as query-replace divide their changes into multiple 887 batches. You can repeat C-x u to undo further. As long 888 as no commands other than C-x u intervene, each one undoes 889 another batch. A numeric argument to C-x u acts as a repeat 890 count. 891 892 If you keep on undoing, eventually you may be told that 893 you have used up all the recorded undo information. 894 Some actions, such as reading in files, discard all 895 undo information. 896 897 The undo information is not currently stored separately 898 for each buffer, so it is mainly good if you do something 899 totally spastic. [This has since been fixed.] 900 901* A learn-by-doing tutorial introduction to Emacs now exists. 902 Type C-h t to enter it. 903 904* An Info documentation browser exists. Do M-x info to enter it. 905 It contains a tutorial introduction so that no more documentation 906 is needed here. As of now, the only documentation in it 907 is that of Info itself. 908 909* Help k and Help c are now different. Help c prints just the 910 name of the function which the specified key invokes. Help k 911 prints the documentation of the function as well. 912 913* A document of the differences between GNU Emacs and Twenex Emacs 914 now exists. It is called DIFF, in the same directory as this file. 915 916* C mode can now indent comments better, including multi-line ones. 917 Meta-Control-q now reindents comment lines within the expression 918 being aligned. 919 920* Insertion of a close-parenthesis now shows the matching open-parenthesis 921 even if it is off screen, by printing the text following it on its line 922 in the minibuffer. 923 924* A file can now contain a list of local variable values 925 to be in effect when the file is edited. See the file DIFF 926 in the same directory as this file for full details. 927 928* A function nth is defined. It means the same thing as in Common Lisp. 929 930* The function install-command has been renamed to set-key. 931 It now takes the key sequence as the first argument 932 and the definition for it as the second argument. 933 Likewise, local-install-command has been renamed to local-set-key. 934 935Changes in Emacs 1.2 936 937* A Lisp single-stepping and debugging facility exists. 938 To cause the debugger to be entered when an error 939 occurs, set the variable debug-on-error non-nil. 940 941 To cause the debugger to be entered whenever function foo 942 is called, do (debug-on-entry 'foo). To cancel this, 943 do (cancel-debug-on-entry 'foo). debug-on-entry does 944 not work for primitives (written in C), only functions 945 written in Lisp. Most standard Emacs commands are in Lisp. 946 947 When the debugger is entered, the selected window shows 948 a buffer called " *Backtrace" which displays a series 949 of stack frames, most recently entered first. For each 950 frame, the function name called is shown, usually followed 951 by the argument values unless arguments are still being 952 calculated. At the beginning of the buffer is a description 953 of why the debugger was entered: function entry, function exit, 954 error, or simply that the user called the function `debug'. 955 956 To exit the debugger and return to top level, type `q'. 957 958 In the debugger, you can evaluate Lisp expressions by 959 typing `e'. This is equivalent to `M-ESC'. 960 961 When the debugger is entered due to an error, that is 962 all you can do. When it is entered due to function entry 963 (such as, requested by debug-on-entry), you have two 964 options: 965 Continue execution and reenter debugger after the 966 completion of the function being entered. Type `c'. 967 Continue execution but enter the debugger before 968 the next subexpression. Type `d'. 969 970 You will see that some stack frames are marked with *. 971 This means the debugger will be entered when those 972 frames exit. You will see the value being returned 973 in the first line of the backtrace buffer. Your options: 974 Continue execution, and return that value. Type `c'. 975 Continue execution, and return a specified value. Type `r'. 976 977 You can mark a frame to enter the debugger on exit 978 with the `b' command, or clear such a mark with `u'. 979 980* Lisp macros now exist. 981 For example, you can write 982 (defmacro cadr (arg) (list 'car (list 'cdr arg))) 983 and then the expression 984 (cadr foo) 985 will expand into 986 (car (cdr foo)) 987 988Changes in Emacs 1.1 989 990* The initial buffer is now called "scratch" and is in a 991 new major mode, Lisp Interaction mode. This mode is 992 intended for typing Lisp expressions, evaluating them, 993 and having the values printed into the buffer. 994 995 Type Linefeed after a Lisp expression, to evaluate the 996 expression and have its value printed into the buffer, 997 advancing dot. 998 999 The other commands of Lisp mode are available. 1000 1001* The C-x C-e command for evaluating the Lisp expression 1002 before dot has been changed to print the value in the 1003 minibuffer line rather than insert it in the buffer. 1004 A numeric argument causes the printed value to appear 1005 in the buffer instead. 1006 1007* In Lisp mode, the command M-C-x evaluates the defun 1008 containing or following dot. The value is printed in 1009 the minibuffer. 1010 1011* The value of a Lisp expression evaluated using M-ESC 1012 is now printed in the minibuffer. 1013 1014* M-q now runs fill-paragraph, independent of major mode. 1015 1016* C-h m now prints documentation on the current buffer's 1017 major mode. What it prints is the documentation of the 1018 major mode name as a function. All major modes have been 1019 equipped with documentation that describes all commands 1020 peculiar to the major mode, for this purpose. 1021 1022* You can display a Unix manual entry with 1023 the M-x manual-entry command. 1024 1025* You can run a shell, displaying its output in a buffer, 1026 with the M-x shell command. The Return key sends input 1027 to the subshell. Output is printed inserted automatically 1028 in the buffer. Commands C-c, C-d, C-u, C-w and C-z are redefined 1029 for controlling the subshell and its subjobs. 1030 "cd", "pushd" and "popd" commands are recognized as you 1031 enter them, so that the default directory of the Emacs buffer 1032 always remains the same as that of the subshell. 1033 1034* C-x $ (that's a real dollar sign) controls line-hiding based 1035 on indentation. With a numeric arg N > 0, it causes all lines 1036 indented by N or more columns to become invisible. 1037 They are, effectively, tacked onto the preceding line, where 1038 they are represented by " ..." on the screen. 1039 (The end of the preceding visible line corresponds to a 1040 screen cursor position before the "...". Anywhere in the 1041 invisible lines that follow appears on the screen as a cursor 1042 position after the "...".) 1043 Currently, all editing commands treat invisible lines just 1044 like visible ones, except for C-n and C-p, which have special 1045 code to count visible lines only. 1046 C-x $ with no argument turns off this mode, which in any case 1047 is remembered separately for each buffer. 1048 1049* Outline mode is another form of selective display. 1050 It is a major mode invoked with M-x outline-mode. 1051 It is intended for editing files that are structured as 1052 outlines, with heading lines (lines that begin with one 1053 or more asterisks) and text lines (all other lines). 1054 The number of asterisks in a heading line are its level; 1055 the subheadings of a heading line are all following heading 1056 lines at higher levels, until but not including the next 1057 heading line at the same or a lower level, regardless 1058 of intervening text lines. 1059 1060 In outline mode, you have commands to hide (remove from display) 1061 or show the text or subheadings under each heading line 1062 independently. Hidden text or subheadings are invisibly 1063 attached to the end of the preceding heading line, so that 1064 if you kill the hading line and yank it back elsewhere 1065 all the invisible lines accompany it. 1066 1067 All editing commands treat hidden outline-mode lines 1068 as part of the preceding visible line. 1069 1070* C-x C-z runs save-buffers-kill-emacs 1071 offers to save each file buffer, then exits. 1072 1073* C-c's function is now called suspend-emacs. 1074 1075* The command C-x m runs mail, which switches to a buffer *mail* 1076 and lets you compose a message to send. C-x 4 m runs mail in 1077 another window. Type C-z C-s in the mail buffer to send the 1078 message according to what you have entered in the buffer. 1079 1080 You must separate the headers from the message text with 1081 an empty line. 1082 1083* You can now dired partial directories (specified with names 1084 containing *'s, etc, all processed by the shell). Also, you 1085 can dired more than one directory; dired names the buffer 1086 according to the filespec or directory name. Reinvoking 1087 dired on a directory already direded just switches back to 1088 the same directory used last time; do M-x revert if you want 1089 to read in the current contents of the directory. 1090 1091 C-x d runs dired, and C-x 4 d runs dired in another window. 1092 1093 C-x C-d (list-directory) also allows partial directories now. 1094 1095Lisp programming changes 1096 1097* t as an output stream now means "print to the minibuffer". 1098 If there is already text in the minibuffer printed via t 1099 as an output stream, the new text is appended to the old 1100 (or is truncated and lost at the margin). If the minibuffer 1101 contains text put there for some other reason, it is cleared 1102 first. 1103 1104 t is now the top-level value of standard-output. 1105 1106 t as an input stream now means "read via the minibuffer". 1107 The minibuffer is used to read a line of input, with editing, 1108 and this line is then parsed. Any excess not used by `read' 1109 is ignored; each `read' from t reads fresh input. 1110 t is now the top-level value of standard-input. 1111 1112* A marker may be used as an input stream or an output stream. 1113 The effect is to grab input from where the marker points, 1114 advancing it over the characters read, or to insert output 1115 at the marker and advance it. 1116 1117* Output from an asynchronous subprocess is now inserted at 1118 the end of the associated buffer, not at the buffer's dot, 1119 and the buffer's mark is set to the end of the inserted output 1120 each time output is inserted. 1121 1122* (pos-visible-in-window-p POS WINDOW) 1123 returns t if position POS in WINDOW's buffer is in the range 1124 that is being displayed in WINDOW; nil if it is scrolled 1125 vertically out of visibility. 1126 1127 If display in WINDOW is not currently up to date, this function 1128 calculates carefully whether POS would appear if display were 1129 done immediately based on the current (window-start WINDOW). 1130 1131 POS defaults to (dot), and WINDOW to (selected-window). 1132 1133* Variable buffer-alist replaced by function (buffer-list). 1134 The actual alist of buffers used internally by Emacs is now 1135 no longer accessible, to prevent the user from crashing Emacs 1136 by modifying it. The function buffer-list returns a list 1137 of all existing buffers. Modifying this list cannot hurt anything 1138 as a new list is constructed by each call to buffer-list. 1139 1140* load now takes an optional third argument NOMSG which, if non-nil, 1141 prevents load from printing a message when it starts and when 1142 it is done. 1143 1144* byte-recompile-directory is a new function which finds all 1145 the .elc files in a directory, and regenerates each one which 1146 is older than the corresponding .el (Lisp source) file. 1147 1148---------------------------------------------------------------------- 1149Copyright information: 1150 1151Copyright (C) 1985 Richard M. Stallman 1152 1153 Permission is granted to anyone to make or distribute verbatim copies 1154 of this document as received, in any medium, provided that the 1155 copyright notice and this permission notice are preserved, 1156 thus giving the recipient permission to redistribute in turn. 1157 1158 Permission is granted to distribute modified versions 1159 of this document, or of portions of it, 1160 under the above conditions, provided also that they 1161 carry prominent notices stating who last changed them. 1162 1163Local variables: 1164mode: text 1165end: 1166