Commit | Line | Data |
---|---|---|
a933dad1 DL |
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 | ||
ff9ab414 | 5 | For older news, see the file ONEWS.3. |
a933dad1 DL |
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 | ||
177c0ea7 | 53 | * There is no longer a maximum screen height or width. |
a933dad1 DL |
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 | |
975f82c9 | 1672 | For older news, see the file ONEWS.3. |
a933dad1 DL |
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: | |
ab5796a9 MB |
1692 | |
1693 | arch-tag: 373312be-99a8-46d5-bcb0-a62577ab5045 |