diff options
| author | Dave Love | 1999-10-03 12:39:42 +0000 |
|---|---|---|
| committer | Dave Love | 1999-10-03 12:39:42 +0000 |
| commit | a933dad155af89ff3e97634c07aa09f9df0fb2b3 (patch) | |
| tree | 43be918d0d87dc41c6051df657247209b1736c82 /etc/OOOOONEWS | |
| parent | a7bfd66f45c12ca1b8c158b44c57dc56de13654c (diff) | |
| download | emacs-a933dad155af89ff3e97634c07aa09f9df0fb2b3.tar.gz emacs-a933dad155af89ff3e97634c07aa09f9df0fb2b3.zip | |
#
Diffstat (limited to 'etc/OOOOONEWS')
| -rw-r--r-- | etc/OOOOONEWS | 1165 |
1 files changed, 1165 insertions, 0 deletions
diff --git a/etc/OOOOONEWS b/etc/OOOOONEWS new file mode 100644 index 00000000000..06b5405be1e --- /dev/null +++ b/etc/OOOOONEWS | |||
| @@ -0,0 +1,1165 @@ | |||
| 1 | Old GNU Emacs NEWS -- history of user-visible changes thru version 15. | ||
| 2 | Copyright (C) 1985 Richard M. Stallman. | ||
| 3 | See the end for copying conditions. | ||
| 4 | |||
| 5 | Changes 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 | |||
| 218 | Changes 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 | |||
| 246 | Changes 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 | |||
| 280 | Changes 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 | |||
| 374 | This marks the process so that, when you kill Emacs, | ||
| 375 | you will not on its account be queried about active subprocesses. | ||
| 376 | |||
| 377 | Changes 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 | |||
| 403 | Changes 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 | |||
| 445 | Changes 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 | |||
| 538 | Changes in Emacs 1.8 | ||
| 539 | |||
| 540 | This 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 | |||
| 566 | Changes in Emacs 1.7 | ||
| 567 | |||
| 568 | It'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 | |||
| 665 | Changes 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 | |||
| 797 | Changes 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 | |||
| 824 | Changes 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 | |||
| 882 | Changes 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 | |||
| 935 | Changes 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 | |||
| 988 | Changes 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 | |||
| 1095 | Lisp 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 | ---------------------------------------------------------------------- | ||
| 1149 | Copyright information: | ||
| 1150 | |||
| 1151 | Copyright (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 | |||
| 1163 | Local variables: | ||
| 1164 | mode: text | ||
| 1165 | end: | ||