| 1 | GNU Emacs NEWS -- history of user-visible changes. 1992. |
| 2 | Copyright (C) 1992 Free Software Foundation, Inc. |
| 3 | See the end for copying conditions. |
| 4 | |
| 5 | For older news, see the file ONEWS.3. |
| 6 | \f |
| 7 | Changes in version 18.58. |
| 8 | |
| 9 | * RMAIL reply now properly parses nested comments in addesses. |
| 10 | |
| 11 | * The "visual bell" feature when used with X windows |
| 12 | now flashes only 1/4 of the window's total area. This is because |
| 13 | flashing the whole window is too slow on some systems. |
| 14 | |
| 15 | * `call-process' and `call-process-region' now return an indication |
| 16 | of the exit status of the subprocess: either a numeric exit code |
| 17 | or a string describing the signal which caused termination. |
| 18 | |
| 19 | * It is possible for regular expression matching to overflow the stack |
| 20 | of failure points. In the past, such overflow was treated as simple |
| 21 | failure to match. Now it causes an error. |
| 22 | |
| 23 | * You can use C-u to end a numeric argument. Thus, type C-u 1 0 0 C-u 1 |
| 24 | to insert 100 1's. |
| 25 | |
| 26 | * Emacs now knows how to get resource values from the X server. |
| 27 | |
| 28 | * Job control commands in shell mode work properly on more systems |
| 29 | because they now work by "typing" signal characters such as C-c. |
| 30 | |
| 31 | * copy-keymap no longer recursively copies keymaps reached through |
| 32 | symbols' function definitions (i.e., those that have names). It does |
| 33 | copy nested keymaps that appear directly in the other copied keymaps. |
| 34 | \f |
| 35 | Changes in version 18.56. |
| 36 | |
| 37 | * C-g should now work to interrupt a running program |
| 38 | on all kinds of systems even when using X windows. |
| 39 | |
| 40 | * Quitting is inhibited while a filter or sentinel is running. |
| 41 | Those functions can run asynchronously while Emacs is waiting |
| 42 | for keyboard input, and if they allow quitting, they |
| 43 | make the behavior of C-g unpredictable. |
| 44 | |
| 45 | * Storing text into the X windows cut buffer |
| 46 | now clears out any selection. |
| 47 | |
| 48 | * The undo facility is completely rewritten, and now |
| 49 | uses Lisp data structures. It can record much more |
| 50 | information. You can use the variables undo-threshold |
| 51 | and undo-high-threshold to control how much. |
| 52 | |
| 53 | * There is no longer a maximum screen height or width. |
| 54 | \f |
| 55 | Changes in version 18.52. |
| 56 | |
| 57 | * X windows version 10 is supported under system V. |
| 58 | |
| 59 | * Pop-up menus are now supported with the same Lisp interface in |
| 60 | both version 10 and 11 of X windows. |
| 61 | |
| 62 | * C-x 4 a is a new command to edit a change-log entry in another window. |
| 63 | |
| 64 | * The emacs client program now allows an option +NNN to specify the |
| 65 | line number to go to in the file whose name follows. Thus, |
| 66 | emacsclient foo.c +45 bar.c |
| 67 | will find the files `foo.c' and `bar.c', going to line 45 in `bar.c'. |
| 68 | |
| 69 | * Dired allows empty directories to be deleted like files. |
| 70 | |
| 71 | * When the terminal type is used to find a terminal-specific file to |
| 72 | run, Emacs now tries the entire terminal type first. If that doesn't |
| 73 | yield a file that exists, the last hyphen and what follows it is |
| 74 | stripped. If that doesn't yield a file that exists, the previous |
| 75 | hyphen is stripped, and so on until all hyphens are gone. For |
| 76 | example, if the terminal type is `aaa-48-foo', Emacs will try first |
| 77 | `term/aaa-48-foo.el', then `term/aaa-48.el' and finally `term/aaa.el'. |
| 78 | |
| 79 | Underscores now receive the same treatment as hyphens. |
| 80 | |
| 81 | * Texinfo features: @defun, etc. texinfo-show-structure. |
| 82 | New template commands. texinfo-format-region. |
| 83 | |
| 84 | * The special "local variable" `eval' is now ignored if you are running |
| 85 | as root. |
| 86 | |
| 87 | * New command `c-macro-expand' shows the result of C macro expansion |
| 88 | in the region. It works using the C preprocessor, so its results |
| 89 | are completely accurate. |
| 90 | |
| 91 | * Errors in trying to auto save now flash error messages for a few seconds. |
| 92 | |
| 93 | * Killing a buffer now sends SIGHUP to the buffer's process. |
| 94 | |
| 95 | * New hooks. |
| 96 | |
| 97 | ** `spell-region' now allows you to filter the text before spelling-checking. |
| 98 | If the value of `spell-filter' is non-nil, it is called, with no arguments, |
| 99 | looking at a temporary buffer containing a copy of the text to be checked. |
| 100 | It can alter the text freely before the spell program sees it. |
| 101 | |
| 102 | ** The variable `lpr-command' now specifies the command to be used when |
| 103 | you use the commands to print text (such as M-x print-buffer). |
| 104 | |
| 105 | ** Posting netnews now calls the value of `news-inews-hook' (if not nil) |
| 106 | as a function of no arguments before the actual posting. |
| 107 | |
| 108 | ** Rmail now calls the value of `rmail-show-message-hook' (if not nil) |
| 109 | as a function of no arguments, each time a new message is selected. |
| 110 | |
| 111 | ** `kill-emacs' calls the value of `kill-emacs-hook' as a function of no args |
| 112 | unless Emacs is running in batch mode. |
| 113 | |
| 114 | * New libraries. |
| 115 | See the source code of each library for more information. |
| 116 | |
| 117 | ** icon.el: a major mode for editing programs written in Icon. |
| 118 | |
| 119 | ** life.el: a simulator for the cellular automaton "life". Load the |
| 120 | library and run M-x life. |
| 121 | |
| 122 | ** doctex.el: a library for converting the Emacs `etc/DOC' file of |
| 123 | documentation strings into TeX input. |
| 124 | |
| 125 | ** saveconf.el: a library which records the arrangement of windows and |
| 126 | buffers when you exit Emacs, and automatically recreates the same |
| 127 | setup the next time you start Emacs. |
| 128 | |
| 129 | ** uncompress.el: a library that automatically uncompresses files |
| 130 | when you visit them. |
| 131 | |
| 132 | ** c-fill.el: a mode for editing filled comments in C. |
| 133 | |
| 134 | ** kermit.el: an extended version of shell-mode designed for running kermit. |
| 135 | |
| 136 | ** spook.el: a library for adding some "distract the NSA" keywords to every |
| 137 | message you send. |
| 138 | |
| 139 | ** hideif.el: a library for hiding parts of a C program based on preprocessor |
| 140 | conditionals. |
| 141 | |
| 142 | ** autoinsert.el: a library to put in some initial text when you visit |
| 143 | a nonexistent file. The text used depends on the major mode, and |
| 144 | comes from a directory of files created by you. |
| 145 | |
| 146 | * New programming features. |
| 147 | |
| 148 | ** The variable `window-system-version' now contains the version number |
| 149 | of the window system you are using (if appropriate). When using X windows, |
| 150 | its value is either 10 or 11. |
| 151 | |
| 152 | ** (interactive "N") uses the prefix argument if any; otherwise, it reads |
| 153 | a number using the minibuffer. |
| 154 | |
| 155 | ** VMS: there are two new functions `vms-system-info' and `shrink-to-icon'. |
| 156 | The former allows you to get many kinds of system status information. |
| 157 | See its self-documentation for full details. |
| 158 | The second is used with the window system: it iconifies the Emacs window. |
| 159 | |
| 160 | ** VMS: the new function `define-logical-name' allows you to create |
| 161 | job-wide logical names. The old function `define-dcl-symbol' has been |
| 162 | removed. |
| 163 | \f |
| 164 | Changes in version 18.50. |
| 165 | |
| 166 | * X windows version 11 is supported. |
| 167 | |
| 168 | Define X11 in config.h if you want X version 11 instead of version 10. |
| 169 | |
| 170 | * The command M-x gdb runs the GDB debugger as an inferior. |
| 171 | It asks for the filename of the executable you want to debug. |
| 172 | |
| 173 | GDB runs as an inferior with I/O through an Emacs buffer. All the |
| 174 | facilities of Shell mode are available. In addition, each time your |
| 175 | program stops, and each time you select a new stack frame, the source |
| 176 | code is displayed in another window with an arrow added to the line |
| 177 | where the program is executing. |
| 178 | |
| 179 | Special GDB-mode commands include M-s, M-n, M-i, M-u, M-d, and C-c C-f |
| 180 | which send the GDB commands `step', `next', `stepi', `up', `down' |
| 181 | and `finish'. |
| 182 | |
| 183 | In any source file, the commands C-x SPC tells GDB to set a breakpoint |
| 184 | on the current line. |
| 185 | |
| 186 | * M-x calendar displays a three-month calendar. |
| 187 | |
| 188 | * C-u 0 C-x C-s never makes a backup file. |
| 189 | |
| 190 | This is a way you can explicitly request not to make a backup. |
| 191 | |
| 192 | * `term-setup-hook' is for users only. |
| 193 | |
| 194 | Emacs never uses this variable for internal purposes, so you can freely |
| 195 | set it in your `.emacs' file to make Emacs do something special after |
| 196 | loading any terminal-specific setup file from `lisp/term'. |
| 197 | |
| 198 | * `copy-keymap' now copies recursive submaps. |
| 199 | |
| 200 | * New overlay-arrow feature. |
| 201 | |
| 202 | If you set the variable `overlay-arrow-string' to a string |
| 203 | and `overlay-arrow-position' to a marker, that string is displayed on |
| 204 | the screen at the position of that marker, hiding whatever text would |
| 205 | have appeared there. If that position isn't on the screen, or if |
| 206 | the buffer the marker points into isn't displayed, there is no effect. |
| 207 | |
| 208 | * -batch mode can read from the terminal. |
| 209 | |
| 210 | It now works to use `read-char' to do terminal input in a noninteractive |
| 211 | Emacs run. End of file causes Emacs to exit. |
| 212 | |
| 213 | * Variables `data-bytes-used' and `data-bytes-free' removed. |
| 214 | |
| 215 | These variables cannot really work because the 24-bit range of an |
| 216 | integer in (most ports of) GNU Emacs is not large enough to hold their |
| 217 | values on many systems. |
| 218 | \f |
| 219 | Changes in version 18.45, since version 18.41. |
| 220 | |
| 221 | * C indentation parameter `c-continued-brace-offset'. |
| 222 | |
| 223 | This parameter's value is added to the indentation of any |
| 224 | line that is in a continuation context and starts with an open-brace. |
| 225 | For example, it applies to the open brace shown here: |
| 226 | |
| 227 | if (x) |
| 228 | { |
| 229 | |
| 230 | The default value is zero. |
| 231 | |
| 232 | * Dabbrev expansion (Meta-/) preserves case. |
| 233 | |
| 234 | When you use Meta-/ to search the buffer for an expansion of an |
| 235 | abbreviation, if the expansion found is all lower case except perhaps |
| 236 | for its first letter, then the case pattern of the abbreviation |
| 237 | is carried over to the expansion that replaces it. |
| 238 | |
| 239 | * TeX-mode syntax. |
| 240 | |
| 241 | \ is no longer given "escape character" syntax in TeX mode. It now |
| 242 | has the syntax of an ordinary punctuation character. As a result, |
| 243 | \[...\] and such like are considered to balance each other. |
| 244 | |
| 245 | * Mail-mode automatic Reply-to field. |
| 246 | |
| 247 | If the variable `mail-default-reply-to' is non-`nil', then each time |
| 248 | you start to compose a message, a Reply-to field is inserted with |
| 249 | its contents taken from the value of `mail-default-reply-to'. |
| 250 | |
| 251 | * Where is your .emacs file? |
| 252 | |
| 253 | If you run Emacs under `su', so your real and effective uids are |
| 254 | different, Emacs uses the home directory associated with the real uid |
| 255 | (the name you actually logged in under) to find the .emacs file. |
| 256 | |
| 257 | Otherwise, Emacs uses the environment variable HOME to find the .emacs |
| 258 | file. |
| 259 | |
| 260 | The .emacs file is not loaded at all if -batch is specified. |
| 261 | |
| 262 | * Prolog mode is the default for ".pl" files. |
| 263 | |
| 264 | * File names are not case-sensitive on VMS. |
| 265 | |
| 266 | On VMS systems, all file names that you specify are converted to upper |
| 267 | case. You can use either upper or lower case indiscriminately. |
| 268 | |
| 269 | * VMS-only function 'define-dcl-symbol'. |
| 270 | |
| 271 | This is a new name for the function formerly called |
| 272 | `define-logical-name'. |
| 273 | \f |
| 274 | Editing Changes in Emacs 18 |
| 275 | |
| 276 | * Additional systems and machines are supported. |
| 277 | |
| 278 | GNU Emacs now runs on Vax VMS. However, many facilities that are normally |
| 279 | implemented by running subprocesses do not work yet. This includes listing |
| 280 | a directory and sending mail. There are features for running subprocesses |
| 281 | but they are incompatible with those on Unix. I hope that some of |
| 282 | the VMS users can reimplement these features for VMS (compatibly for |
| 283 | the user, if possible). |
| 284 | |
| 285 | VMS wizards are also asked to work on making the subprocess facilities |
| 286 | more upward compatible with those on Unix, and also to rewrite their |
| 287 | internals to use the same Lisp objects that are used on Unix to |
| 288 | represent processes. |
| 289 | |
| 290 | In addition, the TI Nu machine running Unix system V, the AT&T 3b, and |
| 291 | the Wicat, Masscomp, Integrated Solutions, Alliant, Amdahl uts, Mips, |
| 292 | Altos 3068 and Gould Unix systems are now supported. The IBM PC-RT is |
| 293 | supported under 4.2, but not yet under system V. The GEC 93 is close |
| 294 | to working. The port for the Elxsi is partly merged. See the file |
| 295 | MACHINES for full status information and machine-specific installation |
| 296 | advice. |
| 297 | |
| 298 | * Searching is faster. |
| 299 | |
| 300 | Forward search for a text string, or for a regexp that is equivalent |
| 301 | to a text string, is now several times faster. Motion by lines and |
| 302 | counting lines is also faster. |
| 303 | |
| 304 | * Memory usage improvements. |
| 305 | |
| 306 | It is no longer possible to run out of memory during garbage |
| 307 | collection. As a result, running out of memory is never fatal. This |
| 308 | is due to a new garbage collection algorithm which compactifies |
| 309 | strings in place rather than copying them. Another consequence of the |
| 310 | change is a reduction in total memory usage and a slight increase in |
| 311 | garbage collection speed. |
| 312 | |
| 313 | * Display changes. |
| 314 | |
| 315 | ** Editing above top of screen. |
| 316 | |
| 317 | When you delete or kill or alter text that reaches to the top of the |
| 318 | screen or above it, so that display would start in the middle of a |
| 319 | line, Emacs will usually attempt to scroll the text so that display |
| 320 | starts at the beginning of a line again. |
| 321 | |
| 322 | ** Yanking in the minibuffer. |
| 323 | |
| 324 | The message "Mark Set" is no longer printed when the minibuffer is |
| 325 | active. This is convenient with many commands, including C-y, that |
| 326 | normally print such a message. |
| 327 | |
| 328 | ** Cursor appears in last line during y-or-n questions. |
| 329 | |
| 330 | Questions that want a `y' or `n' answer now move the cursor |
| 331 | to the last line, following the question. |
| 332 | |
| 333 | * Library loading changes. |
| 334 | |
| 335 | `load' now considers all possible suffixes (`.elc', `.el' and none) |
| 336 | for each directory in `load-path' before going on to the next directory. |
| 337 | It now accepts an optional fourth argument which, if non-nil, says to |
| 338 | use no suffixes; then the file name must be given in full. The search |
| 339 | of the directories in `load-path' goes on as usual in this case, but |
| 340 | it too can be prevented by passing an absolute file name. |
| 341 | |
| 342 | The value of `load-path' no longer by default includes nil (meaning to |
| 343 | look in the current default directory). The idea is that `load' should |
| 344 | be used to search the path only for libraries to be found in the standard |
| 345 | places. If you want to override system libraries with your own, place |
| 346 | your own libraries in one special directory and add that directory to the |
| 347 | front of `load-path'. |
| 348 | |
| 349 | The function `load' is no longer a command; that is to say, `M-x load' |
| 350 | is no longer allowed. Instead, there are two commands for loading files. |
| 351 | `M-x load-library' is equivalent to the old meaning of `M-x load'. |
| 352 | `M-x load-file' reads a file name with completion and defaulting |
| 353 | and then loads exactly that file, with no searching and no suffixes. |
| 354 | |
| 355 | * Emulation of other editors. |
| 356 | |
| 357 | ** `edt-emulation-on' starts emulating DEC's EDT editor. |
| 358 | |
| 359 | Do `edt-emulation-off' to return Emacs to normal. |
| 360 | |
| 361 | ** `vi-mode' and `vip-mode' starts emulating vi. |
| 362 | |
| 363 | These are two different vi emulations provided by GNU Emacs users. |
| 364 | We are interested in feedback as to which emulation is preferable. |
| 365 | |
| 366 | See the documentation and source code for these functions |
| 367 | for more information. |
| 368 | |
| 369 | ** `set-gosmacs-bindings' emulates Gosling Emacs. |
| 370 | |
| 371 | This command changes many global bindings to resemble those of |
| 372 | Gosling Emacs. The previous bindings are saved and can be restored using |
| 373 | `set-gnu-bindings'. |
| 374 | |
| 375 | * Emulation of a display terminal. |
| 376 | |
| 377 | Within Emacs it is now possible to run programs (such as emacs or |
| 378 | supdup) which expect to do output to a visual display terminal. |
| 379 | |
| 380 | See the function `terminal-emulator' for more information. |
| 381 | |
| 382 | * New support for keypads and function keys. |
| 383 | |
| 384 | There is now a first attempt at terminal-independent support for |
| 385 | keypad and function keys. |
| 386 | |
| 387 | Emacs now defines a standard set of key-names for function and keypad |
| 388 | keys, and provides standard hooks for defining them. Most of the |
| 389 | standard key-names have default definitions built into Emacs; you can |
| 390 | override these in a terminal-independent manner. The default definitions |
| 391 | and the conventions for redefining them are in the file `lisp/keypad.el'. |
| 392 | |
| 393 | These keys on the terminal normally work by sending sequences of |
| 394 | characters starting with ESC. The exact sequences used vary from |
| 395 | terminal to terminal. Emacs interprets them in two stages: |
| 396 | in the first stage, terminal-dependent sequences are mapped into |
| 397 | the standard key-names; then second stage maps the standard key-names |
| 398 | into their definitions in a terminal-independent fashion. |
| 399 | |
| 400 | The terminal-specific file `term/$TERM.el' now is responsible only for |
| 401 | establishing the mapping from the terminal's escape sequences into |
| 402 | standard key-names. It no longer knows what Emacs commands are |
| 403 | assigned to the standard key-names. |
| 404 | |
| 405 | One other change in terminal-specific files: if the value of the TERM |
| 406 | variable contains a hyphen, only the part before the first hyphen is |
| 407 | used in forming the name of the terminal-specific file. Thus, for |
| 408 | terminal type `aaa-48', the file loaded is now `term/aaa.el' rather |
| 409 | than `term/aaa-48.el'. |
| 410 | |
| 411 | * New startup command line options. |
| 412 | |
| 413 | `-i FILE' or `-insert FILE' in the command line to Emacs tells Emacs to |
| 414 | insert the contents of FILE into the current buffer at that point in |
| 415 | command line processing. This is like using the command M-x insert-file. |
| 416 | |
| 417 | `-funcall', `-load', `-user' and `-no-init-file' are new synonyms for |
| 418 | `-f', `-l', `-u' and `-q'. |
| 419 | |
| 420 | `-nw' means don't use a window system. If you are using a terminal |
| 421 | emulator on the X window system and you want to run Emacs to work through |
| 422 | the terminal emulator instead of working directly with the window system, |
| 423 | use this switch. |
| 424 | |
| 425 | * Buffer-sorting commands. |
| 426 | |
| 427 | Various M-x commands whose names start with `sort-' sort parts of |
| 428 | the region: |
| 429 | |
| 430 | sort-lines divides the region into lines and sorts them alphabetically. |
| 431 | sort-pages divides into pages and sorts them alphabetically. |
| 432 | sort-paragraphs divides into paragraphs and sorts them alphabetically. |
| 433 | sort-fields divides into lines and sorts them alphabetically |
| 434 | according to one field in the line. |
| 435 | The numeric argument specifies which field (counting |
| 436 | from field 1 at the beginning of the line). Fields in a line |
| 437 | are separated by whitespace. |
| 438 | sort-numeric-fields |
| 439 | is similar but converts the specified fields to numbers |
| 440 | and sorts them numerically. |
| 441 | sort-columns divides into lines and sorts them according to the contents |
| 442 | of a specified range of columns. |
| 443 | |
| 444 | Refer to the self-documentation of these commands for full usage information. |
| 445 | |
| 446 | * Changes in various commands. |
| 447 | |
| 448 | ** `occur' output now serves as a menu. `occur-menu' command deleted. |
| 449 | |
| 450 | `M-x occur' now allows you to move quickly to any of the occurrences |
| 451 | listed. Select the `*Occur*' buffer that contains the output of `occur', |
| 452 | move point to the occurrence you want, and type C-c C-c. |
| 453 | This will move point to the same occurrence in the buffer that the |
| 454 | occurrences were found in. |
| 455 | |
| 456 | The command `occur-menu' is thus obsolete, and has been deleted. |
| 457 | |
| 458 | One way to get a list of matching lines without line numbers is to |
| 459 | copy the text to another buffer and use the command `keep-lines'. |
| 460 | |
| 461 | ** Incremental search changes. |
| 462 | |
| 463 | Ordinary and regexp incremental searches now have distinct default |
| 464 | search strings. Thus, regexp searches recall only previous regexp |
| 465 | searches. |
| 466 | |
| 467 | If you exit an incremental search when the search string is empty, |
| 468 | the old default search string is kept. The default does not become |
| 469 | empty. |
| 470 | |
| 471 | Reversing the direction of an incremental search with C-s or C-r |
| 472 | when the search string is empty now does not get the default search |
| 473 | string. It leaves the search string empty. A second C-s or C-r |
| 474 | will get the default search string. As a result, you can do a reverse |
| 475 | incremental regexp search with C-M-s C-r. |
| 476 | |
| 477 | If you add a `*', `?' or `\|' to an incremental search regexp, |
| 478 | point will back up if that is appropriate. For example, if |
| 479 | you have searched for `ab' and add a `*', point moves to the |
| 480 | first match for `ab*', which may be before the match for `ab' |
| 481 | that was previously found. |
| 482 | |
| 483 | If an incremental search is failing and you ask to repeat it, |
| 484 | it will start again from the beginning of the buffer (or the end, |
| 485 | if it is a backward search). |
| 486 | |
| 487 | The search-controlling parameters `isearch-slow-speed' and |
| 488 | `isearch-slow-window-lines' have now been renamed to start with |
| 489 | `search' instead of `isearch'. Now all the parameters' names start |
| 490 | with `search'. |
| 491 | |
| 492 | If `search-slow-window-lines' is negative, the slow search window |
| 493 | is put at the top of the screen, and the absolute value or the |
| 494 | negative number specifies the height of it. |
| 495 | |
| 496 | ** Undo changes |
| 497 | |
| 498 | The undo command now will mark the buffer as unmodified only when it is |
| 499 | identical to the contents of the visited file. |
| 500 | |
| 501 | ** C-M-v in minibuffer. |
| 502 | |
| 503 | If while in the minibuffer you request help in a way that uses a |
| 504 | window to display something, then until you exit the minibuffer C-M-v |
| 505 | in the minibuffer window scrolls the window of help. |
| 506 | |
| 507 | For example, if you request a list of possible completions, C-M-v can |
| 508 | be used reliably to scroll the completion list. |
| 509 | |
| 510 | ** M-TAB command. |
| 511 | |
| 512 | Meta-TAB performs completion on the Emacs Lisp symbol names. The sexp |
| 513 | in the buffer before point is compared against all existing nontrivial |
| 514 | Lisp symbols and completed as far as is uniquely determined by them. |
| 515 | Nontrivial symbols are those with either function definitions, values |
| 516 | or properties. |
| 517 | |
| 518 | If there are multiple possibilities for the very next character, a |
| 519 | list of possible completions is displayed. |
| 520 | |
| 521 | ** Dynamic abbreviation package. |
| 522 | |
| 523 | The new command Meta-/ expands an abbreviation in the buffer before point |
| 524 | by searching the buffer for words that start with the abbreviation. |
| 525 | |
| 526 | ** Changes in saving kbd macros. |
| 527 | |
| 528 | The commands `write-kbd-macro' and `append-kbd-macro' have been |
| 529 | deleted. The way to save a keyboard macro is to use the new command |
| 530 | `insert-kbd-macro', which inserts Lisp code to define the macro as |
| 531 | it is currently defined into the buffer before point. Visit a Lisp |
| 532 | file such as your Emacs init file `~/.emacs', insert the macro |
| 533 | definition (perhaps deleting an old definition for the same macro) |
| 534 | and then save the file. |
| 535 | |
| 536 | ** C-x ' command. |
| 537 | |
| 538 | The new command C-x ' (expand-abbrev) expands the word before point as |
| 539 | an abbrev, even if abbrev-mode is not turned on. |
| 540 | |
| 541 | ** Sending to inferior Lisp. |
| 542 | |
| 543 | The command C-M-x in Lisp mode, which sends the current defun to |
| 544 | an inferior Lisp process, now works by writing the text into a temporary |
| 545 | file and actually sending only a `load'-form to load the file. |
| 546 | As a result, it avoids the Unix bugs that used to strike when the |
| 547 | text was above a certain length. |
| 548 | |
| 549 | With a prefix argument, this command now makes the inferior Lisp buffer |
| 550 | appear on the screen and scrolls it so that the bottom is showing. |
| 551 | |
| 552 | Two variables `inferior-lisp-load-command' and `inferior-lisp-prompt', |
| 553 | exist to customize these feature for different Lisp implementations. |
| 554 | |
| 555 | ** C-x n p now disabled. |
| 556 | |
| 557 | The command C-x n p, a nonrecomended command which narrows to the current |
| 558 | page, is now initially disabled like C-x n n. |
| 559 | |
| 560 | * Dealing with files. |
| 561 | |
| 562 | ** C-x C-v generalized |
| 563 | |
| 564 | This command is now allowed even if the current buffer is not visiting |
| 565 | a file. As usual, it kills the current buffer and replaces it with a |
| 566 | newly found file. |
| 567 | |
| 568 | ** M-x recover-file improved; auto save file names changed. |
| 569 | |
| 570 | M-x recover-file now checks whether the last auto-save file is more |
| 571 | recent than the real visited file before offering to read in the |
| 572 | auto-save file. If the auto-save file is newer, a directory listing |
| 573 | containing the two files is displayed while you are asked whether you |
| 574 | want the auto save file. |
| 575 | |
| 576 | Visiting a file also makes this check. If the auto-save file is more recent, |
| 577 | a message is printed suggesting that you consider using M-x recover file. |
| 578 | |
| 579 | Auto save file names now by default have a `#' at the end as well |
| 580 | as at the beginning. This is so that `*.c' in a shell command |
| 581 | will never match auto save files. |
| 582 | |
| 583 | On VMS, auto save file names are made by appending `_$' at the front |
| 584 | and `$' at the end. |
| 585 | |
| 586 | When you change the visited file name of a buffer, the auto save file |
| 587 | is now renamed to belong to the new visited file name. |
| 588 | |
| 589 | You can customize the way auto save file names are made by redefining |
| 590 | the two functions `make-auto-save-file-name' and `auto-save-file-name-p', |
| 591 | both of which are defined in `files.el'. |
| 592 | |
| 593 | ** Modifying a buffer whose file is changed on disk is detected instantly. |
| 594 | |
| 595 | On systems where clash detection (locking of files being edited) is |
| 596 | implemented, Emacs also checks the first time you modify a buffer |
| 597 | whether the file has changed on disk since it was last visited or saved. |
| 598 | If it has, you are asked to confirm that you want to change the buffer. |
| 599 | |
| 600 | ** Exiting Emacs offers to save `*mail*'. |
| 601 | |
| 602 | Emacs can now know about buffers that it should offer to save on exit |
| 603 | even though they are not visiting files. This is done for any buffer |
| 604 | which has a non-nil local value of `buffer-offer-save'. By default, |
| 605 | Mail mode provides such a local value. |
| 606 | |
| 607 | ** Backup file changes. |
| 608 | |
| 609 | If a backup file cannot be written in the directory of the visited file |
| 610 | due to fascist file protection, a backup file is now written in your home |
| 611 | directory as `~/%backup%~'. Only one such file is made, ever, so only |
| 612 | the most recently made such backup is available. |
| 613 | |
| 614 | When backup files are made by copying, the last-modification time of the |
| 615 | original file is now preserved in the backup copy. |
| 616 | |
| 617 | ** Visiting remote files. |
| 618 | |
| 619 | On an internet host, you can now visit and save files on any other |
| 620 | internet host directly from Emacs with the commands M-x ftp-find-file |
| 621 | and M-x ftp-write-file. Specify an argument of the form HOST:FILENAME. |
| 622 | Since standard internet FTP is used, the other host may be any kind |
| 623 | of machine and is not required to have any special facilities. |
| 624 | |
| 625 | The first time any one remote host is accessed, you will be asked to |
| 626 | give the user name and password for use on that host. FTP is reinvoked |
| 627 | each time you ask to use it, but previously specified user names and |
| 628 | passwords are remembered automatically. |
| 629 | |
| 630 | ** Dired `g' command. |
| 631 | |
| 632 | `g' in Dired mode is equivalent to M-x revert-buffer; it causes the |
| 633 | current contents of the same directory to be read in. |
| 634 | |
| 635 | * Changes in major modes. |
| 636 | |
| 637 | ** C mode indentation change. |
| 638 | |
| 639 | The binding of Linefeed is no longer changed by C mode. It once again |
| 640 | has its normal meaning, which is to insert a newline and then indent |
| 641 | afterward. |
| 642 | |
| 643 | The old definition did one additional thing: it reindented the line |
| 644 | before the new newline. This has been removed because it made the |
| 645 | command twice as slow. The only time it was really useful was after the |
| 646 | insertion of an `else', since the fact of starting with `else' may change |
| 647 | the way that line is indented. Now you will have to type TAB again |
| 648 | yourself to reindent the `else' properly. |
| 649 | |
| 650 | If the variable `c-tab-always-indent' is set to `nil', the TAB command |
| 651 | in C mode, with no argument, will just insert a tab character if there |
| 652 | is non-whitespace preceding point on the current line. Giving it a |
| 653 | prefix argument will force reindentation of the line (as well as |
| 654 | of the compound statement that begins after point, if any). |
| 655 | |
| 656 | ** Fortran mode now exists. |
| 657 | |
| 658 | This mode provides commands for motion and indentation of Fortran code, |
| 659 | plus built-in abbrevs for Fortran keywords. For details, see the manual |
| 660 | or the on-line documentation of the command `fortran-mode'. |
| 661 | |
| 662 | ** Scribe mode now exists. |
| 663 | |
| 664 | This mode does something useful for editing files of Scribe input. |
| 665 | It is used automatically for files with names ending in ".mss". |
| 666 | |
| 667 | ** Modula2 and Prolog modes now exist. |
| 668 | |
| 669 | These modes are for editing programs in the languages of the same names. |
| 670 | They can be selected with M-x modula-2-mode and M-x prolog-mode. |
| 671 | |
| 672 | ** Telnet mode changes. |
| 673 | |
| 674 | The telnet mode special commands have now been assigned to C-c keys. |
| 675 | Most of them are the same as in Shell mode. |
| 676 | |
| 677 | ** Picture mode changes. |
| 678 | |
| 679 | The special picture-mode commands to specify the direction of cursor |
| 680 | motion after insertion have been moved to C-c keys. The commands to |
| 681 | specify diagonal motion were already C-c keys; they are unchanged. |
| 682 | The keys to specify horizontal or vertical motion are now |
| 683 | C-c < (left), C-c > (right), C-c ^ (up) and C-c . (down). |
| 684 | |
| 685 | ** Nroff mode comments. |
| 686 | |
| 687 | Comments are now supported in Nroff mode. The standard comment commands |
| 688 | such as M-; and C-x ; know how to insert, align and delete comments |
| 689 | that start with backslash-doublequote. |
| 690 | |
| 691 | ** LaTeX mode. |
| 692 | |
| 693 | LaTeX mode now exists. Use M-x latex-mode to select this mode, and |
| 694 | M-x plain-tex-mode to select the previously existing mode for Plain |
| 695 | TeX. M-x tex-mode attempts to examine the contents of the buffer and |
| 696 | choose between latex-mode and plain-tex-mode accordingly; if the |
| 697 | buffer is empty or it cannot tell, the variable `TeX-default-mode' |
| 698 | controls the choice. Its value should be the symbol for the mode to |
| 699 | be used. |
| 700 | |
| 701 | The facilities for running TeX on all or part of the buffer |
| 702 | work with LaTeX as well. |
| 703 | |
| 704 | Some new commands available in both modes: |
| 705 | |
| 706 | C-c C-l recenter the window showing the TeX output buffer |
| 707 | so most recent line of output can be seen. |
| 708 | C-c C-k kill the TeX subprocess. |
| 709 | C-c C-q show the printer queue. |
| 710 | C-c C-f close a block (appropriate for LaTeX only). |
| 711 | If the current line contains a \begin{...}, |
| 712 | this inserts an \end{...} on the following line |
| 713 | and puts point on a blank line between them. |
| 714 | |
| 715 | ** Outline mode changes. |
| 716 | |
| 717 | Invisible lines in outline mode are now indicated by `...' at the |
| 718 | end of the previous visible line. |
| 719 | |
| 720 | The special outline heading motion commands are now all on C-c keys. |
| 721 | A few new ones have been added. Here is a full list: |
| 722 | |
| 723 | C-c C-n Move to next visible heading (formerly M-}) |
| 724 | C-c C-p Move to previous visible heading (formerly M-{) |
| 725 | C-c C-f Move to next visible heading at the same level. |
| 726 | Thus, if point is on a level-2 heading line, |
| 727 | this command moves to the next visible level-2 heading. |
| 728 | C-c C-b Move to previous visible heading at the same level. |
| 729 | C-c C-u Move up to previous visible heading at a higher level. |
| 730 | |
| 731 | The variable `outline-regexp' now controls recognition of heading lines. |
| 732 | Any line whose beginning matches this regexp is a heading line. |
| 733 | The depth in outline structure is determined by the length of |
| 734 | the string that matches. |
| 735 | |
| 736 | A line starting with a ^L (formfeed) is now by default considered |
| 737 | a header line. |
| 738 | |
| 739 | * Mail reading and sending. |
| 740 | |
| 741 | ** MH-E changes. |
| 742 | |
| 743 | MH-E has been extensively modified and improved since the v17 release. |
| 744 | It contains many new features, including commands to: extracted failed |
| 745 | messages, kill a draft message, undo changes to a mail folder, monitor |
| 746 | delivery of a letter, print multiple messages, page digests backwards, |
| 747 | insert signatures, and burst digests. Also, many commands have been |
| 748 | made to able to deal with named sequences of messages, instead of |
| 749 | single messages. MH-E also has had numerous bugs fixed and commands |
| 750 | made to run faster. Furthermore, its keybindings have been changed to |
| 751 | be compatible with Rmail and the rest of GNU Emacs. |
| 752 | |
| 753 | ** Mail mode changes. |
| 754 | |
| 755 | The C-c commands of mail mode have been rearranged: |
| 756 | |
| 757 | C-c s, C-c c, C-c t and C-c b (move point to various header fields) |
| 758 | have been reassigned as C-c C-f C-s, C-c C-f C-c, C-c C-f C-t and C-c |
| 759 | C-f C-b. C-c C-f is for "field". |
| 760 | |
| 761 | C-c y, C-c w and C-c q have been changed to C-c C-y, C-c C-w and C-c C-q. |
| 762 | |
| 763 | Thus, C-c LETTER is always unassigned. |
| 764 | |
| 765 | ** Rmail C-r command changed to w. |
| 766 | |
| 767 | The Rmail command to edit the current message is now `w'. This change |
| 768 | has been made because people frequently type C-r while in Rmail hoping |
| 769 | to do a reverse incremental search. That now works. |
| 770 | |
| 771 | * Rnews changes. |
| 772 | |
| 773 | ** Caesar rotation added. |
| 774 | |
| 775 | The function news-caesar-buffer-body performs the rot13 code on the |
| 776 | body of a news message. You can also specify the number to rotate by, |
| 777 | as a prefix argument. The function is bound to C-c C-r in both |
| 778 | News mode and News Reply mode. |
| 779 | |
| 780 | ** rmail-output command added. |
| 781 | |
| 782 | The C-o command has been bound to rmail-output in news-mode. |
| 783 | This allows one to append an article to a file which is in either Unix |
| 784 | mail or RMAIL format. |
| 785 | |
| 786 | ** news-reply-mode changes. |
| 787 | |
| 788 | The C-c commands of news reply mode have been rearranged and changed, |
| 789 | so that C-c LETTER is always unassigned: |
| 790 | |
| 791 | C-c y, C-c w and C-c q have been changed to C-c C-y, C-c C-w and C-c C-q. |
| 792 | |
| 793 | C-c c, C-c t, and C-c b (move to various mail header fields) have been |
| 794 | deleted (they make no sense for posting and replying to USENET). |
| 795 | |
| 796 | C-c s (move to Subject: header field) has been reassigned as C-c C-f |
| 797 | C-s. C-c C-f is for "field". Several additional move to news header |
| 798 | field commands have been added. |
| 799 | |
| 800 | The local news-reply-mode bindings now look like this: |
| 801 | |
| 802 | C-c C-s news-inews (post the message) C-c C-c news-inews |
| 803 | C-c C-f move to a header field (and create it if there isn't): |
| 804 | C-c C-f C-n move to Newsgroups: C-c C-f C-s move to Subj: |
| 805 | C-c C-f C-f move to Followup-To: C-c C-f C-k move to Keywords: |
| 806 | C-c C-f C-d move to Distribution: C-c C-f C-a move to Summary: |
| 807 | C-c C-y news-reply-yank-original (insert current message, in NEWS). |
| 808 | C-c C-q mail-fill-yanked-message (fill what was yanked). |
| 809 | C-c C-r caesar rotate all letters by 13 places in the article's body (rot13). |
| 810 | |
| 811 | * Changes in tags handling. |
| 812 | |
| 813 | ** M-. (`find-tag') and similar commands now look first for an exact |
| 814 | match in the tags table, and try substring matches only afterward. |
| 815 | |
| 816 | ** The new command `find-tag-regexp' visits successively the tags that |
| 817 | match a specified regular expression. |
| 818 | |
| 819 | ** You can now use more than one tags table. Using `visit-tags-table' |
| 820 | to load a new tags table does not discard the other tables previously |
| 821 | loaded. The other tags commands use all the tags tables that are loaded; |
| 822 | the first tags table used is the one that mentions the current visited file. |
| 823 | |
| 824 | ** Tags tables can now be told to "include" other tags tables. This means |
| 825 | the tags table gives the file names of other tags tables. Tags command |
| 826 | then search included tags tables after the including table (but before any |
| 827 | other tags tables you have loaded). Included tags tables can make it much |
| 828 | easier and more efficient to maintain a tags table for a large package with |
| 829 | many subdirectories--there is one tags table for each subdirectory, and a |
| 830 | master tags table that includes each subdirectory table. You use `-i' |
| 831 | options to `etags' when creating the tags table to give the file names of |
| 832 | the included tables. |
| 833 | |
| 834 | ** You can now use the tags table for completion of names during |
| 835 | ordinary editing. The command M-TAB (except in Emacs Lisp mode) |
| 836 | completes the identifier in the buffer before point, using the set of |
| 837 | all tags as the list of possible completions. |
| 838 | |
| 839 | ** `tags-query-replace' and `tags-search' changes. |
| 840 | |
| 841 | These functions no longer permanently create buffers for files that |
| 842 | are searched but that do not contain any matches for the search |
| 843 | pattern. |
| 844 | |
| 845 | * Existing Emacs usable as a server. |
| 846 | |
| 847 | Programs such as mailers that invoke "the editor" as an inferior |
| 848 | to edit some text can now be told to use an existing Emacs process |
| 849 | instead of creating a new editor. |
| 850 | |
| 851 | To do this, you must have an Emacs process running and capable of |
| 852 | doing terminal I/O at the time you want to invoke it. This means that |
| 853 | either you are using a window system and give Emacs a separate window |
| 854 | or you run the other programs as inferiors of Emacs (such as, using |
| 855 | M-x shell). |
| 856 | |
| 857 | First prepare the existing Emacs process by loading the `server' |
| 858 | library and executing M-x server-start. (Your .emacs can do this |
| 859 | automatically.) |
| 860 | |
| 861 | Now tell the other programs to use, as "the editor", the Emacs client |
| 862 | program (etc/emacsclient, located in the same directory as this file). |
| 863 | This can be done by setting the environment variable EDITOR. |
| 864 | |
| 865 | When another program invokes the emacsclient as "the editor", the |
| 866 | client actually transfers the file names to be edited to the existing |
| 867 | Emacs, which automatically visits the files. |
| 868 | |
| 869 | When you are done editing a buffer for a client, do C-x # (server-edit). |
| 870 | This marks that buffer as done, and selects the next buffer that the client |
| 871 | asked for. When all the buffers requested by a client are marked in this |
| 872 | way, Emacs tells the client program to exit, so that the program that |
| 873 | invoked "the editor" will resume execution. |
| 874 | |
| 875 | You can only have one server Emacs at a time, but multiple client programs |
| 876 | can put in requests at the same time. |
| 877 | |
| 878 | The client/server work only on Berkeley Unix, since they use the Berkeley |
| 879 | sockets mechanism for their communication. |
| 880 | \f |
| 881 | Changes in Lisp programming in Emacs version 18. |
| 882 | |
| 883 | * Init file changes. |
| 884 | |
| 885 | ** Suffixes no longer accepted on `.emacs'. |
| 886 | |
| 887 | Emacs will no longer load a file named `.emacs.el' or `emacs.elc' |
| 888 | in place of `.emacs'. This is so that it will take less time to |
| 889 | find `.emacs'. If you want to compile your init file, give it another |
| 890 | name and make `.emacs' a link to the `.elc' file, or make it contain |
| 891 | a call to `load' to load the `.elc' file. |
| 892 | |
| 893 | ** `default-profile' renamed to `default', and loaded after `.emacs'. |
| 894 | |
| 895 | It used to be the case that the file `default-profile' was loaded if |
| 896 | and only if `.emacs' was not found. |
| 897 | |
| 898 | Now the name `default-profile' is not used at all. Instead, a library |
| 899 | named `default' is loaded after the `.emacs' file. `default' is loaded |
| 900 | whether the `.emacs' file exists or not. However, loading of `default' |
| 901 | can be prevented if the `.emacs' file sets `inhibit-default-init' to non-nil. |
| 902 | |
| 903 | In fact, you would call the default file `default.el' and probably would |
| 904 | byte-compile it to speed execution. |
| 905 | |
| 906 | Note that for most purposes you are better off using a `site-init' library |
| 907 | since that will be loaded before the runnable Emacs is dumped. By using |
| 908 | a `site-init' library, you avoid taking up time each time Emacs is started. |
| 909 | |
| 910 | ** inhibit-command-line has been eliminated. |
| 911 | |
| 912 | This variable used to exist for .emacs files to set. It has been |
| 913 | eliminated because you can get the same effect by setting |
| 914 | command-line-args to nil and setting inhibit-startup-message to t. |
| 915 | |
| 916 | * `apply' is more general. |
| 917 | |
| 918 | `apply' now accepts any number of arguments. The first one is a function; |
| 919 | the rest are individual arguments to pass to that function, except for the |
| 920 | last, which is a list of arguments to pass. |
| 921 | |
| 922 | Previously, `apply' required exactly two arguments. Its old behavior |
| 923 | follows as a special case of the new definition. |
| 924 | |
| 925 | * New code-letter for `interactive'. |
| 926 | |
| 927 | (interactive "NFoo: ") is like (interactive "nFoo: ") in reading |
| 928 | a number using the minibuffer to serve as the argument; however, |
| 929 | if a prefix argument was specified, it uses the prefix argument |
| 930 | value as the argument, and does not use the minibuffer at all. |
| 931 | |
| 932 | This is used by the `goto-line' and `goto-char' commands. |
| 933 | |
| 934 | * Semantics of variables. |
| 935 | |
| 936 | ** Built-in per-buffer variables improved. |
| 937 | |
| 938 | Several built-in variables which in the past had a different value in |
| 939 | each buffer now behave exactly as if `make-variable-buffer-local' had |
| 940 | been done to them. |
| 941 | |
| 942 | These variables are `tab-width', `ctl-arrow', `truncate-lines', |
| 943 | `fill-column', `left-margin', `mode-line-format', `abbrev-mode', |
| 944 | `overwrite-mode', `case-fold-search', `auto-fill-hook', |
| 945 | `selective-display', `selective-display-ellipses'. |
| 946 | |
| 947 | To be precise, each variable has a default value which shows through |
| 948 | in most buffers and can be accessed with `default-value' and set with |
| 949 | `set-default'. Setting the variable with `setq' makes the variable |
| 950 | local to the current buffer. Changing the default value has retroactive |
| 951 | effect on all buffers in which the variable is not local. |
| 952 | |
| 953 | The variables `default-case-fold-search', etc., are now obsolete. |
| 954 | They now refer to the default value of the variable, which is not |
| 955 | quite the same behavior as before, but it should enable old init files |
| 956 | to continue to work. |
| 957 | |
| 958 | ** New per-buffer variables. |
| 959 | |
| 960 | The variables `fill-prefix', `comment-column' and `indent-tabs-mode' |
| 961 | are now per-buffer. They work just like `fill-column', etc. |
| 962 | |
| 963 | ** New function `setq-default'. |
| 964 | |
| 965 | `setq-default' sets the default value of a variable, and uses the |
| 966 | same syntax that `setq' accepts: the variable name is not evaluated |
| 967 | and need not be quoted. |
| 968 | |
| 969 | `(setq-default case-fold-search nil)' would make searches case-sensitive |
| 970 | in all buffers that do not have local values for `case-fold-search'. |
| 971 | |
| 972 | You can set multiple variables sequentially, each with its own value, |
| 973 | in `setq-default' just as in `setq'. |
| 974 | |
| 975 | ** Functions `global-set' and `global-value' deleted. |
| 976 | |
| 977 | These functions were never used except by mistake by users expecting |
| 978 | the functionality of `set-default' and `default-value'. |
| 979 | |
| 980 | * Changes in defaulting of major modes. |
| 981 | |
| 982 | When `default-major-mode' is `nil', new buffers are supposed to |
| 983 | get their major mode from the buffer that is current. However, |
| 984 | certain major modes (such as Dired mode, Rmail mode, Rmail Summary mode, |
| 985 | and others) are not reasonable to use in this way. |
| 986 | |
| 987 | Now such modes' names have been given non-`nil' `mode-class' properties. |
| 988 | If the current buffer's mode has such a property, Fundamental mode is |
| 989 | used as the default for newly created buffers. |
| 990 | |
| 991 | * `where-is-internal' requires additional arguments. |
| 992 | |
| 993 | This function now accepts three arguments, two of them required: |
| 994 | DEFINITION, the definition to search for; LOCAL-KEYMAP, the keymap |
| 995 | to use as the local map when doing the searching, and FIRST-ONLY, |
| 996 | which is nonzero to return only the first key found. |
| 997 | |
| 998 | This function returns a list of keys (strings) whose definitions |
| 999 | (in the LOCAL-KEYMAP or the current global map) are DEFINITION. |
| 1000 | |
| 1001 | If FIRST-ONLY is non-nil, it returns a single key (string). |
| 1002 | |
| 1003 | This function has changed incompatibly in that now two arguments |
| 1004 | are required when previously only one argument was allowed. To get |
| 1005 | the old behavior of this function, write `(current-local-map)' as |
| 1006 | the expression for the second argument. |
| 1007 | |
| 1008 | The incompatibility is sad, but `nil' is a legitimate value for the |
| 1009 | second argument (it means there is no local keymap), so it cannot also |
| 1010 | serve as a default meaning to use the current local keymap. |
| 1011 | |
| 1012 | * Abbrevs with hooks. |
| 1013 | |
| 1014 | When an abbrev defined with a hook is expanded, it now performs the |
| 1015 | usual replacement of the abbrev with the expansion before running the |
| 1016 | hook. Previously the abbrev itself was deleted but the expansion was |
| 1017 | not inserted. |
| 1018 | |
| 1019 | * Function `scan-buffer' deleted. |
| 1020 | |
| 1021 | Use `search-forward' or `search-backward' in place of `scan-buffer'. |
| 1022 | You will have to rearrange the arguments. |
| 1023 | |
| 1024 | * X window interface improvements. |
| 1025 | |
| 1026 | ** Detect release of mouse buttons. |
| 1027 | |
| 1028 | Button-up events can now be detected. See the file `lisp/x-mouse.el' |
| 1029 | for details. |
| 1030 | |
| 1031 | ** New pop-up menu facility. |
| 1032 | |
| 1033 | The new function `x-popup-menu' pops up a menu (in a X window) |
| 1034 | and returns an indication of which selection the user made. |
| 1035 | For more information, see its self-documentation. |
| 1036 | |
| 1037 | * M-x disassemble. |
| 1038 | |
| 1039 | This command prints the disassembly of a byte-compiled Emacs Lisp function. |
| 1040 | |
| 1041 | Would anyone like to interface this to the debugger? |
| 1042 | |
| 1043 | * `insert-buffer-substring' can insert part of the current buffer. |
| 1044 | |
| 1045 | The old restriction that the text being inserted had to come from |
| 1046 | a different buffer is now lifted. |
| 1047 | |
| 1048 | When inserting text from the current buffer, the text to be inserted |
| 1049 | is determined from the specified bounds before any copying takes place. |
| 1050 | |
| 1051 | * New function `substitute-key-definition'. |
| 1052 | |
| 1053 | This is a new way to replace one command with another command as the |
| 1054 | binding of whatever keys may happen to refer to it. |
| 1055 | |
| 1056 | (substitute-key-definition OLDDEF NEWDEF KEYMAP) looks through KEYMAP |
| 1057 | for keys defined to run OLDDEF, and rebinds those keys to run NEWDEF |
| 1058 | instead. |
| 1059 | |
| 1060 | * New function `insert-char'. |
| 1061 | |
| 1062 | Insert a specified character, a specified number of times. |
| 1063 | |
| 1064 | * `mark-marker' changed. |
| 1065 | |
| 1066 | When there is no mark, this now returns a marker that points |
| 1067 | nowhere, rather than `nil'. |
| 1068 | |
| 1069 | * `ding' accepts argument. |
| 1070 | |
| 1071 | When given an argument, the function `ding' does not terminate |
| 1072 | execution of a keyboard macro. Normally, `ding' does terminate |
| 1073 | all macros that are currently executing. |
| 1074 | |
| 1075 | * New function `minibuffer-depth'. |
| 1076 | |
| 1077 | This function returns the current depth in minibuffer activations. |
| 1078 | The value is zero when the minibuffer is not in use. |
| 1079 | Values greater than one are possible if the user has entered the |
| 1080 | minibuffer recursively. |
| 1081 | |
| 1082 | * New function `documentation-property'. |
| 1083 | |
| 1084 | (documentation-property SYMBOL PROPNAME) is like (get SYMBOL PROPNAME), |
| 1085 | except that if the property value is a number `documentation-property' |
| 1086 | will take that number (or its absolute value) as a character position |
| 1087 | in the DOC file and return the string found there. |
| 1088 | |
| 1089 | (documentation-property VAR 'variable-documentation) is the proper |
| 1090 | way for a Lisp program to get the documentation of variable VAR. |
| 1091 | |
| 1092 | * New documentation-string expansion feature. |
| 1093 | |
| 1094 | If a documentation string (for a variable or function) contains text |
| 1095 | of the form `\<FOO>', it means that all command names specified in |
| 1096 | `\[COMMAND]' construct from that point on should be turned into keys |
| 1097 | using the value of the variable FOO as the local keymap. Thus, for example, |
| 1098 | |
| 1099 | `\<emacs-lisp-mode-map>\[eval-defun] evaluates the defun containing point.' |
| 1100 | |
| 1101 | will expand into |
| 1102 | |
| 1103 | "ESC C-x evaluates the defun containing point." |
| 1104 | |
| 1105 | regardless of the current major mode, because ESC C-x is defined to |
| 1106 | run `eval-defun' in the keymap `emacs-lisp-mode-map'. The effect is |
| 1107 | to show the key for `eval-defun' in Emacs Lisp mode regardless of the |
| 1108 | current major mode. |
| 1109 | |
| 1110 | The `\<...>' construct applies to all `\[...]' constructs that follow it, |
| 1111 | up to the end of the documentation string or the next `\<...>'. |
| 1112 | |
| 1113 | Without `\<...>', the keys for commands specified in `\[...]' are found |
| 1114 | in the current buffer's local map. |
| 1115 | |
| 1116 | The current global keymap is always searched second, whether `\<...>' |
| 1117 | has been used or not. |
| 1118 | |
| 1119 | * Multiple hooks allowed in certain contexts. |
| 1120 | |
| 1121 | The old hook variables `find-file-hook', `find-file-not-found-hook' and |
| 1122 | `write-file-hook' have been replaced. |
| 1123 | |
| 1124 | The replacements are `find-file-hooks', `find-file-not-found-hooks' |
| 1125 | and `write-file-hooks'. Each holds a list of functions to be called; |
| 1126 | by default, `nil', for no functions. The functions are called in |
| 1127 | order of appearance in the list. |
| 1128 | |
| 1129 | In the case of `find-file-hooks', all the functions are executed. |
| 1130 | |
| 1131 | In the case of `find-file-not-found-hooks', if any of the functions |
| 1132 | returns non-`nil', the rest of the functions are not called. |
| 1133 | |
| 1134 | In the case of `write-file-hooks', if any of the functions returns |
| 1135 | non-`nil', the rest of the functions are not called, and the file is |
| 1136 | considered to have been written already; so actual writing in the |
| 1137 | usual way is not done. If `write-file-hooks' is local to a buffer, |
| 1138 | it is set to its global value if `set-visited-file-name' is called |
| 1139 | (and thus by C-x C-w as well). |
| 1140 | |
| 1141 | `find-file-not-found-hooks' and `write-file-hooks' can be used |
| 1142 | together to implement editing of files that are not stored as Unix |
| 1143 | files: stored in archives, or inside version control systems, or on |
| 1144 | other machines running other operating systems and accessible via ftp. |
| 1145 | |
| 1146 | * New hooks for suspending Emacs. |
| 1147 | |
| 1148 | Suspending Emacs runs the hook `suspend-hook' before suspending |
| 1149 | and the hook `suspend-resume-hook' if the suspended Emacs is resumed. |
| 1150 | Running a hook is done by applying the variable's value to no arguments |
| 1151 | if the variable has a non-`nil' value. If `suspend-hook' returns |
| 1152 | non-`nil', then suspending is inhibited and so is running the |
| 1153 | `suspend-resume-hook'. The non-`nil' value means that the `suspend-hook' |
| 1154 | has done whatever suspending is required. |
| 1155 | |
| 1156 | * Disabling commands can print a special message. |
| 1157 | |
| 1158 | A command is disabled by giving it a non-`nil' `disabled' property. |
| 1159 | Now, if this property is a string, it is included in the message |
| 1160 | printed when the user tries to run the command. |
| 1161 | |
| 1162 | * Emacs can open TCP connections. |
| 1163 | |
| 1164 | The function `open-network-stream' opens a TCP connection to |
| 1165 | a specified host and service. Its value is a Lisp object that represents |
| 1166 | the connection. The object is a kind of "subprocess", and I/O are |
| 1167 | done like I/O to subprocesses. |
| 1168 | |
| 1169 | * Display-related changes. |
| 1170 | |
| 1171 | ** New mode-line control features. |
| 1172 | |
| 1173 | The display of the mode line used to be controlled by a format-string |
| 1174 | that was the value of the variable `mode-line-format'. |
| 1175 | |
| 1176 | This variable still exists, but it now allows more general values, |
| 1177 | not just strings. Lists, cons cells and symbols are also meaningful. |
| 1178 | |
| 1179 | The mode line contents are created by outputting various mode elements |
| 1180 | one after the other. Here are the kinds of objects that can be |
| 1181 | used as mode elements, and what they do in the display: |
| 1182 | |
| 1183 | string the contents of the string are output to the mode line, |
| 1184 | and %-constructs are replaced by other text. |
| 1185 | |
| 1186 | t or nil ignored; no output results. |
| 1187 | |
| 1188 | symbol the symbol's value is used. If the value is a string, |
| 1189 | the string is output verbatim to the mode line |
| 1190 | (so %-constructs are not interpreted). Otherwise, |
| 1191 | the symbol's value is processed as a mode element. |
| 1192 | |
| 1193 | list (whose first element is a string or list or cons cell) |
| 1194 | the elements of the list are treated as as mode elements, |
| 1195 | so that the output they generate is concatenated, |
| 1196 | |
| 1197 | list (whose car is a symbol) |
| 1198 | if the symbol's value is non-nil, the second element of the |
| 1199 | list is treated as a mode element. Otherwise, the third |
| 1200 | element (if any) of the list is treated as a mode element. |
| 1201 | |
| 1202 | cons (whose car is a positive integer) |
| 1203 | the cdr of the cons is used as a mode element, but |
| 1204 | the text it produces is padded, if necessary, to have |
| 1205 | at least the width specified by the integer. |
| 1206 | |
| 1207 | cons (whose car is a negative integer) |
| 1208 | the cdr of the cons is used as a mode element, but |
| 1209 | the text it produces is truncated, if necessary, to have |
| 1210 | at most the width specified by the integer. |
| 1211 | |
| 1212 | There is always one mode element to start with, that being the value of |
| 1213 | `mode-line-format', but if this value is a list then it leads to several |
| 1214 | more mode elements, which can lead to more, and so on. |
| 1215 | |
| 1216 | There is one new %-construct for mode elements that are strings: |
| 1217 | `%n' displays ` Narrow' for a buffer that is narrowed. |
| 1218 | |
| 1219 | The default value of `mode-line-format' refers to several other variables. |
| 1220 | These variables are `mode-name', `mode-line-buffer-identification', |
| 1221 | `mode-line-process', `mode-line-modified', `global-mode-string' and |
| 1222 | `minor-mode-alist'. The first four are local in every buffer in which they |
| 1223 | are changed from the default. |
| 1224 | |
| 1225 | mode-name Name of buffer's major mode. Local in every buffer. |
| 1226 | |
| 1227 | mode-line-buffer-identification |
| 1228 | Normally the list ("Emacs: %17b"), it is responsible |
| 1229 | for displaying text to indicate what buffer is being shown |
| 1230 | and what kind of editing it is doing. `Emacs' means |
| 1231 | that a file of characters is being edited. Major modes |
| 1232 | such as Info and Dired which edit or view other kinds |
| 1233 | of data often change this value. This variables becomes |
| 1234 | local to the current buffer if it is setq'd. |
| 1235 | |
| 1236 | mode-line-process |
| 1237 | Normally nil, this variable is responsible for displaying |
| 1238 | information about the process running in the current buffer. |
| 1239 | M-x shell-mode and M-x compile alter this variable. |
| 1240 | |
| 1241 | mode-line-modified |
| 1242 | This variable is responsible for displaying the indication |
| 1243 | of whether the current buffer is modified or read-only. |
| 1244 | By default its value is `("--%*%*-")'. |
| 1245 | |
| 1246 | minor-mode-alist |
| 1247 | This variable is responsible for displaying text for those |
| 1248 | minor modes that are currently enabled. Its value |
| 1249 | is a list of elements of the form (VARIABLE STRING), |
| 1250 | where STRING is to be displayed if VARIABLE's value |
| 1251 | (in the buffer whose mode line is being displayed) |
| 1252 | is non-nil. This variable is not made local to particular |
| 1253 | buffers, but loading some libraries may add elements to it. |
| 1254 | |
| 1255 | global-mode-string |
| 1256 | This variable is used to display the time, if you ask |
| 1257 | for that. |
| 1258 | |
| 1259 | The idea of these variables is to eliminate the need for major modes |
| 1260 | to alter mode-line-format itself. |
| 1261 | |
| 1262 | ** `window-point' valid for selected window. |
| 1263 | |
| 1264 | The value returned by `window-point' used to be incorrect when its |
| 1265 | argument was the selected window. Now the value is correct. |
| 1266 | |
| 1267 | ** Window configurations may be saved as Lisp objects. |
| 1268 | |
| 1269 | The function `current-window-configuration' returns a special type of |
| 1270 | Lisp object that represents the current layout of windows: the |
| 1271 | sizes and positions of windows, which buffers appear in them, and |
| 1272 | which parts of the buffers appear on the screen. |
| 1273 | |
| 1274 | The function `set-window-configuration' takes one argument, which must |
| 1275 | be a window configuration object, and restores that configuration. |
| 1276 | |
| 1277 | ** New hook `temp-output-buffer-show-hook'. |
| 1278 | |
| 1279 | This hook allows you to control how help buffers are displayed. |
| 1280 | Whenever `with-output-to-temp-buffer' has executed its body and wants |
| 1281 | to display the temp buffer, if this variable is bound and non-`nil' |
| 1282 | then its value is called with one argument, the temp buffer. |
| 1283 | The hook function is solely responsible for displaying the buffer. |
| 1284 | The standard manner of display--making the buffer appear in a window--is |
| 1285 | used only if there is no hook function. |
| 1286 | |
| 1287 | ** New function `minibuffer-window'. |
| 1288 | |
| 1289 | This function returns the window used (sometimes) for displaying |
| 1290 | the minibuffer. It can be used even when the minibuffer is not active. |
| 1291 | |
| 1292 | ** New feature to `next-window'. |
| 1293 | |
| 1294 | If the optional second argument is neither `nil' nor `t', the minibuffer |
| 1295 | window is omitted from consideration even when active; if the starting |
| 1296 | window was the last non-minibuffer window, the value will be the first |
| 1297 | non-minibuffer window. |
| 1298 | |
| 1299 | ** New variable `minibuffer-scroll-window'. |
| 1300 | |
| 1301 | When this variable is non-`nil', the command `scroll-other-window' |
| 1302 | uses it as the window to be scrolled. Displays of completion-lists |
| 1303 | set this variable to the window containing the display. |
| 1304 | |
| 1305 | ** New argument to `sit-for'. |
| 1306 | |
| 1307 | A non-nil second argument to `sit-for' means do not redisplay; |
| 1308 | just wait for the specified time or until input is available. |
| 1309 | |
| 1310 | ** Deleted function `set-minor-mode'; minor modes must be changed. |
| 1311 | |
| 1312 | The function `set-minor-mode' has been eliminated. The display |
| 1313 | of minor mode names in the mode line is now controlled by the |
| 1314 | variable `minor-mode-alist'. To specify display of a new minor |
| 1315 | mode, it is sufficient to add an element to this list. Once that |
| 1316 | is done, you can turn the mode on and off just by setting a variable, |
| 1317 | and the display will show its status automatically. |
| 1318 | |
| 1319 | ** New variable `cursor-in-echo-area'. |
| 1320 | |
| 1321 | If this variable is non-nil, the screen cursor appears on the |
| 1322 | last line of the screen, at the end of the text displayed there. |
| 1323 | |
| 1324 | Binding this variable to t is useful at times when reading single |
| 1325 | characters of input with `read-char'. |
| 1326 | |
| 1327 | ** New per-buffer variable `selective-display-ellipses'. |
| 1328 | |
| 1329 | If this variable is non-nil, an ellipsis (`...') appears on the screen |
| 1330 | at the end of each text line that is followed by invisible text. |
| 1331 | |
| 1332 | If this variable is nil, no ellipses appear. Then there is no sign |
| 1333 | on the screen that invisible text is present. |
| 1334 | |
| 1335 | Text is made invisible under the control of the variable |
| 1336 | `selective-display'; this is how Outline mode and C-x $ work. |
| 1337 | |
| 1338 | ** New variable `no-redraw-on-reenter'. |
| 1339 | |
| 1340 | If you set this variable non-nil, Emacs will not clear the screen when |
| 1341 | you resume it after suspending it. This is for the sake of terminals |
| 1342 | with multiple screens of memory, where the termcap entry has been set |
| 1343 | up to switch between screens when Emacs is suspended and resumed. |
| 1344 | |
| 1345 | ** New argument to `set-screen-height' or `set-screen-width'. |
| 1346 | |
| 1347 | These functions now take an optional second argument which says |
| 1348 | what significance the newly specified height or width has. |
| 1349 | |
| 1350 | If the argument is nil, or absent, it means that Emacs should |
| 1351 | believe that the terminal height or width really is as just specified. |
| 1352 | |
| 1353 | If the argument is t, it means Emacs should not believe that the |
| 1354 | terminal really is this high or wide, but it should use the |
| 1355 | specific height or width as the number of lines or columns to display. |
| 1356 | Thus, you could display only 24 lines on a screen known to have 48 lines. |
| 1357 | |
| 1358 | What practical difference is there between using only 24 lines for display |
| 1359 | and really believing that the terminal has 24 lines? |
| 1360 | |
| 1361 | 1. The "real" height of the terminal says what the terminal command |
| 1362 | to move the cursor to the last line will do. |
| 1363 | |
| 1364 | 2. The "real" height of the terminal determines how much padding is |
| 1365 | needed. |
| 1366 | |
| 1367 | * File-related changes. |
| 1368 | |
| 1369 | ** New parameter `backup-by-copying-when-mismatch'. |
| 1370 | |
| 1371 | If this variable is non-`nil', then when Emacs is about to save a |
| 1372 | file, it will create the backup file by copying if that would avoid |
| 1373 | changing the file's uid or gid. |
| 1374 | |
| 1375 | The default value of this variable is `nil', because usually it is |
| 1376 | useful to have the uid of a file change according to who edited it |
| 1377 | last. I recommend thet this variable be left normally `nil' and |
| 1378 | changed with a local variables list in those particular files where |
| 1379 | the uid needs to be preserved. |
| 1380 | |
| 1381 | ** New parameter `file-precious-flag'. |
| 1382 | |
| 1383 | If this variable is non-`nil', saving the buffer tries to avoid |
| 1384 | leaving an incomplete file due to disk full or other I/O errors. |
| 1385 | It renames the old file before saving. If saving is successful, |
| 1386 | the renamed file is deleted; if saving gets an error, the renamed |
| 1387 | file is renamed back to the name you visited. |
| 1388 | |
| 1389 | Backups are always made by copying for such files. |
| 1390 | |
| 1391 | ** New variable `buffer-offer-save'. |
| 1392 | |
| 1393 | If the value of this variable is non-`nil' in a buffer then exiting |
| 1394 | Emacs will offer to save the buffer (if it is modified and nonempty) |
| 1395 | even if the buffer is not visiting a file. This variable is |
| 1396 | automatically made local to the current buffer whenever it is set. |
| 1397 | |
| 1398 | ** `rename-file', `copy-file', `add-name-to-file' and `make-symbolic-link'. |
| 1399 | |
| 1400 | The third argument to these functions used to be `t' or `nil'; `t' |
| 1401 | meaning go ahead even if the specified new file name already has a file, |
| 1402 | and `nil' meaning to get an error. |
| 1403 | |
| 1404 | Now if the third argument is a number it means to ask the user for |
| 1405 | confirmation in this case. |
| 1406 | |
| 1407 | ** New optional argument to `copy-file'. |
| 1408 | |
| 1409 | If `copy-file' receives a non-nil fourth argument, it attempts |
| 1410 | to give the new copy the same time-of-last-modification that the |
| 1411 | original file has. |
| 1412 | |
| 1413 | ** New function `file-newer-than-file-p'. |
| 1414 | |
| 1415 | (file-newer-than-file-p FILE1 FILE2) returns non-nil if FILE1 has been |
| 1416 | modified more recently than FILE2. If FILE1 does not exist, the value |
| 1417 | is always nil; otherwise, if FILE2 does not exist, the value is t. |
| 1418 | This is meant for use when FILE2 depends on FILE1, to see if changes |
| 1419 | in FILE1 make it necessary to recompute FILE2 from it. |
| 1420 | |
| 1421 | ** Changed function `file-exists-p'. |
| 1422 | |
| 1423 | This function is no longer the same as `file-readable-p'. |
| 1424 | `file-exists-p' can now return t for a file that exists but which |
| 1425 | the fascists won't allow you to read. |
| 1426 | |
| 1427 | ** New function `file-locked-p'. |
| 1428 | |
| 1429 | This function receives a file name as argument and returns `nil' |
| 1430 | if the file is not locked, `t' if locked by this Emacs, or a |
| 1431 | string giving the name of the user who has locked it. |
| 1432 | |
| 1433 | ** New function `file-name-sans-versions'. |
| 1434 | |
| 1435 | (file-name-sans-versions NAME) returns a substring of NAME, with any |
| 1436 | version numbers or other backup suffixes deleted from the end. |
| 1437 | |
| 1438 | ** New functions for directory names. |
| 1439 | |
| 1440 | Although a directory is really a kind of file, specifying a directory |
| 1441 | uses a somewhat different syntax from specifying a file. |
| 1442 | In Emacs, a directory name is used as part of a file name. |
| 1443 | |
| 1444 | On Unix, the difference is small: a directory name ends in a slash, |
| 1445 | while a file name does not: thus, `/usr/rms/' to name a directory, |
| 1446 | while `/usr/rms' names the file which holds that directory. |
| 1447 | |
| 1448 | On VMS, the difference is considerable: `du:[rms.foo]' specifies a |
| 1449 | directory, but the name of the file that holds that directory is |
| 1450 | `du:[rms]foo.dir'. |
| 1451 | |
| 1452 | There are two new functions for converting between directory names |
| 1453 | and file names. `directory-file-name' takes a directory name and |
| 1454 | returns the name of the file in which that directory's data is stored. |
| 1455 | `file-name-as-directory' takes the name of a file and returns |
| 1456 | the corresponding directory name. These always understand Unix file name |
| 1457 | syntax; on VMS, they understand VMS syntax as well. |
| 1458 | |
| 1459 | For example, (file-name-as-directory "/usr/rms") returns "/usr/rms/" |
| 1460 | and (directory-file-name "/usr/rms/") returns "/usr/rms". |
| 1461 | On VMS, (file-name-as-directory "du:[rms]foo.dir") returns "du:[rms.foo]" |
| 1462 | and (directory-file-name "du:[rms.foo]") returns "du:[rms]foo.dir". |
| 1463 | |
| 1464 | ** Value of `file-attributes' changed. |
| 1465 | |
| 1466 | The function file-attributes returns a list containing many kinds of |
| 1467 | information about a file. Now the list has eleven elements. |
| 1468 | |
| 1469 | The tenth element is `t' if deleting the file and creating another |
| 1470 | file of the same name would result in a change in the file's group; |
| 1471 | `nil' if there would be no change. You can also think of this as |
| 1472 | comparing the file's group with the default group for files created in |
| 1473 | the same directory by you. |
| 1474 | |
| 1475 | The eleventh element is the inode number of the file. |
| 1476 | |
| 1477 | ** VMS-only function `file-name-all-versions'. |
| 1478 | |
| 1479 | This function returns a list of all the completions, including version |
| 1480 | number, of a specified version-number-less file name. This is like |
| 1481 | `file-name-all-completions', except that the latter returns values |
| 1482 | that do not include version numbers. |
| 1483 | |
| 1484 | ** VMS-only variable `vms-stmlf-recfm'. |
| 1485 | |
| 1486 | On a VMS system, if this variable is non-nil, Emacs will give newly |
| 1487 | created files the record format `stmlf'. This is necessary for files |
| 1488 | that must contain lines of arbitrary length, such as compiled Emacs |
| 1489 | Lisp. |
| 1490 | |
| 1491 | When writing a new version of an existing file, Emacs always keeps |
| 1492 | the same record format as the previous version; so this variable has |
| 1493 | no effect. |
| 1494 | |
| 1495 | This variable has no effect on Unix systems. |
| 1496 | |
| 1497 | ** `insert-file-contents' on an empty file. |
| 1498 | |
| 1499 | This no longer sets the buffer's "modified" flag. |
| 1500 | |
| 1501 | ** New function (VMS only) `define-logical-name': |
| 1502 | |
| 1503 | (define-logical-name LOGICAL TRANSLATION) defines a VMS logical name |
| 1504 | LOGICAL whose translation is TRANSLATION. The new name applies to |
| 1505 | the current process only. |
| 1506 | |
| 1507 | ** Deleted variable `ask-about-buffer-names'. |
| 1508 | |
| 1509 | If you want buffer names for files to be generated in a special way, |
| 1510 | you must redefine `create-file-buffer'. |
| 1511 | |
| 1512 | * Subprocess-related changes. |
| 1513 | |
| 1514 | ** New function `process-list'. |
| 1515 | |
| 1516 | This function takes no arguments and returns a list of all |
| 1517 | of Emacs's asynchronous subprocesses. |
| 1518 | |
| 1519 | ** New function `process-exit-status'. |
| 1520 | |
| 1521 | This function, given a process, process name or buffer as argument, |
| 1522 | returns the exit status code or signal number of the process. |
| 1523 | If the process has not yet exited or died, this function returns 0. |
| 1524 | |
| 1525 | ** Process output ignores `buffer-read-only'. |
| 1526 | |
| 1527 | Output from a process will go into the process's buffer even if the |
| 1528 | buffer is read only. |
| 1529 | |
| 1530 | ** Switching buffers in filter functions and sentinels. |
| 1531 | |
| 1532 | Emacs no longer saves and restore the current buffer around calling |
| 1533 | the filter and sentinel functions, so these functions can now |
| 1534 | permanently alter the selected buffer in a straightforward manner. |
| 1535 | |
| 1536 | ** Specifying environment variables for subprocesses. |
| 1537 | |
| 1538 | When a subprocess is started with `start-process' or `call-process', |
| 1539 | the value of the variable `process-environment' is taken to |
| 1540 | specify the environment variables to give the subprocess. The |
| 1541 | value should be a list of strings, each of the form "VAR=VALUE". |
| 1542 | |
| 1543 | `process-environment' is initialized when Emacs starts up |
| 1544 | based on Emacs's environment. |
| 1545 | |
| 1546 | ** New variable `process-connection-type'. |
| 1547 | |
| 1548 | If this variable is `nil', when a subprocess is created, Emacs uses |
| 1549 | a pipe rather than a pty to communicate with it. Normally this |
| 1550 | variable is `t', telling Emacs to use a pty if ptys are supported |
| 1551 | and one is available. |
| 1552 | |
| 1553 | ** New function `waiting-for-user-input-p'. |
| 1554 | |
| 1555 | This function, given a subprocess as argument, returns `t' if that |
| 1556 | subprocess appears to be waiting for input sent from Emacs, |
| 1557 | or `nil' otherwise. |
| 1558 | |
| 1559 | ** New hook `shell-set-directory-error-hook'. |
| 1560 | |
| 1561 | The value of this variable is called, with no arguments, whenever |
| 1562 | Shell mode gets an error trying to keep track of directory-setting |
| 1563 | commands (such as `cd' and `pushd') used in the shell buffer. |
| 1564 | |
| 1565 | * New functions `user-uid' and `user-real-uid'. |
| 1566 | |
| 1567 | These functions take no arguments and return, respectively, |
| 1568 | the effective uid and the real uid of the Emacs process. |
| 1569 | The value in each case is an integer. |
| 1570 | |
| 1571 | * New variable `print-escape-newlines' controls string printing. |
| 1572 | |
| 1573 | If this variable is non-`nil', then when a Lisp string is printed |
| 1574 | by the Lisp printing function `prin1' or `print', newline characters |
| 1575 | are printed as `\n' rather than as a literal newline. |
| 1576 | |
| 1577 | * New function `sysnetunam' on HPUX. |
| 1578 | |
| 1579 | This function takes two arguments, a network address PATH and a |
| 1580 | login string LOGIN, and executes the system call `netunam'. |
| 1581 | It returns `t' if the call succeeds, otherwise `nil'. |
| 1582 | \f |
| 1583 | News regarding installation: |
| 1584 | |
| 1585 | * Many `s-...' file names changed. |
| 1586 | |
| 1587 | Many `s-...' files have been renamed. All periods in such names, |
| 1588 | except the ones just before the final `h', have been changed to |
| 1589 | hyphens. Thus, `s-bsd4.2.h' has been renamed to `s-bsd4-2.h'. |
| 1590 | |
| 1591 | This is so a Unix distribution can be moved mechanically to VMS. |
| 1592 | |
| 1593 | * `DOCSTR...' file now called `DOC-...'. |
| 1594 | |
| 1595 | The file of on-line documentation strings, that used to be |
| 1596 | `DOCSTR.mm.nn.oo' in this directory, is now called `DOC-mm.nn.oo'. |
| 1597 | This is so that it can port to VMS using the standard conventions |
| 1598 | for translating filenames for VMS. |
| 1599 | |
| 1600 | This file also now contains the doc strings for variables as |
| 1601 | well as functions. |
| 1602 | |
| 1603 | * Emacs no longer uses floating point arithmetic. |
| 1604 | |
| 1605 | This may make it easier to port to some machines. |
| 1606 | |
| 1607 | * Macros `XPNTR' and `XSETPNTR'; flag `DATA_SEG_BITS'. |
| 1608 | |
| 1609 | These macros exclusively are used to unpack a pointer from a Lisp_Object |
| 1610 | and to insert a pointer into a Lisp_Object. Redefining them may help |
| 1611 | port Emacs to machines in which all pointers to data objects have |
| 1612 | certain high bits set. |
| 1613 | |
| 1614 | If `DATA_SEG_BITS' is defined, it should be a number which contains |
| 1615 | the high bits to be inclusive or'ed with pointers that are unpacked. |
| 1616 | |
| 1617 | * New flag `HAVE_X_MENU'. |
| 1618 | |
| 1619 | Define this flag in `config.h' in addition to `HAVE_X_WINDOWS' |
| 1620 | to enable use of the Emacs interface to X Menus. On some operating |
| 1621 | systems, the rest of the X interface works properly but X Menus |
| 1622 | do not work; hence this separate flag. See the file `src/xmenu.c' |
| 1623 | for more information. |
| 1624 | |
| 1625 | * Macros `ARRAY_MARK_FLAG' and `DONT_COPY_FLAG'. |
| 1626 | |
| 1627 | * `HAVE_ALLOCA' prevents assembly of `alloca.s'. |
| 1628 | |
| 1629 | * `SYSTEM_MALLOC' prevents use of GNU `malloc.c'. |
| 1630 | |
| 1631 | SYSTEM_MALLOC, if defined, means use the system's own `malloc' routines |
| 1632 | rather than those that come with Emacs. |
| 1633 | |
| 1634 | Use this only if absolutely necessary, because if it is used you do |
| 1635 | not get warnings when space is getting low. |
| 1636 | |
| 1637 | * New flags to control unexec. |
| 1638 | |
| 1639 | See the file `unexec.c' for a long comment on the compilation |
| 1640 | switches that suffice to make it work on many machines. |
| 1641 | |
| 1642 | * `PNTR_COMPARISON_TYPE' |
| 1643 | |
| 1644 | Pointers that need to be compared for ordering are converted to this type |
| 1645 | first. Normally this is `unsigned int'. |
| 1646 | |
| 1647 | * `HAVE_VFORK', `HAVE_DUP2' and `HAVE_GETTIMEOFDAY'. |
| 1648 | |
| 1649 | These flags just say whether certain system calls are available. |
| 1650 | |
| 1651 | * New macros control compiler switches, linker switches and libraries. |
| 1652 | |
| 1653 | The m- and s- files can now control in a modular fashion the precise |
| 1654 | arguments passed to `cc' and `ld'. |
| 1655 | |
| 1656 | LIBS_STANDARD defines the standard C libraries. Default is `-lc'. |
| 1657 | LIBS_DEBUG defines the extra libraries to use when debugging. Default `-lg'. |
| 1658 | LIBS_SYSTEM can be defined by the s- file to specify extra libraries. |
| 1659 | LIBS_MACHINE can be defined by the m- file to specify extra libraries. |
| 1660 | LIBS_TERMCAP defines the libraries for Termcap or Terminfo. |
| 1661 | It is defined by default in a complicated fashion but the m- or s- file |
| 1662 | can override it. |
| 1663 | |
| 1664 | LD_SWITCH_SYSTEM can be defined by the s- file to specify extra `ld' switches. |
| 1665 | The default is `-X' on BSD systems except those few that use COFF object files. |
| 1666 | LD_SWITCH_MACHINE can be defined by the m- file to specify extra `ld' switches. |
| 1667 | |
| 1668 | C_DEBUG_SWITCH defines the switches to give `cc' when debugging. Default `-g'. |
| 1669 | C_OPTIMIZE_SWITCH defines the switches to give `cc' to optimize. Default `-O'. |
| 1670 | C_SWITCH_MACHINE can be defined by the m- file to specify extra `cc' switches. |
| 1671 | \f |
| 1672 | For older news, see the file ONEWS.3. |
| 1673 | |
| 1674 | ---------------------------------------------------------------------- |
| 1675 | Copyright information: |
| 1676 | |
| 1677 | Copyright (C) 1992 Free Software Foundation, Inc. |
| 1678 | |
| 1679 | Permission is granted to anyone to make or distribute verbatim copies |
| 1680 | of this document as received, in any medium, provided that the |
| 1681 | copyright notice and this permission notice are preserved, |
| 1682 | thus giving the recipient permission to redistribute in turn. |
| 1683 | |
| 1684 | Permission is granted to distribute modified versions |
| 1685 | of this document, or of portions of it, |
| 1686 | under the above conditions, provided also that they |
| 1687 | carry prominent notices stating who last changed them. |
| 1688 | \f |
| 1689 | Local variables: |
| 1690 | mode: text |
| 1691 | end: |