|
|
1.1 root 1: This is Info file ../info/emacs, produced by Makeinfo-1.49 from the
2: input file emacs.texi.
3:
4: This file documents the GNU Emacs editor.
5:
6: Copyright (C) 1985, 1986, 1988, 1992 Richard M. Stallman.
7:
8: Permission is granted to make and distribute verbatim copies of this
9: manual provided the copyright notice and this permission notice are
10: preserved on all copies.
11:
12: Permission is granted to copy and distribute modified versions of
13: this manual under the conditions for verbatim copying, provided also
14: that the sections entitled "The GNU Manifesto", "Distribution" and "GNU
15: General Public License" are included exactly as in the original, and
16: provided that the entire resulting derived work is distributed under the
17: terms of a permission notice identical to this one.
18:
19: Permission is granted to copy and distribute translations of this
20: manual into another language, under the above conditions for modified
21: versions, except that the sections entitled "The GNU Manifesto",
22: "Distribution" and "GNU General Public License" may be included in a
23: translation approved by the author instead of in the original English.
24:
25:
26: File: emacs, Node: Init Examples, Next: Terminal Init, Prev: Init Syntax, Up: Init File
27:
28: Init File Examples
29: ------------------
30:
31: Here are some examples of doing certain commonly desired things with
32: Lisp expressions:
33:
34: * Make TAB in C mode just insert a tab if point is in the middle of a
35: line.
36:
37: (setq c-tab-always-indent nil)
38:
39: Here we have a variable whose value is normally `t' for `true' and
40: the alternative is `nil' for `false'.
41:
42: * Make searches case sensitive by default (in all buffers that do not
43: override this).
44:
45: (setq-default case-fold-search nil)
46:
47: This sets the default value, which is effective in all buffers
48: that do not have local values for the variable. Setting
49: `case-fold-search' with `setq' affects only the current buffer's
50: local value, which is not what you probably want to do in an init
51: file.
52:
53: * Make Text mode the default mode for new buffers.
54:
55: (setq default-major-mode 'text-mode)
56:
57: Note that `text-mode' is used because it is the command for
58: entering the mode we want. A single-quote is written before it to
59: make a symbol constant; otherwise, `text-mode' would be treated as
60: a variable name.
61:
62: * Turn on Auto Fill mode automatically in Text mode and related
63: modes.
64:
65: (setq text-mode-hook
66: '(lambda () (auto-fill-mode 1)))
67:
68: Here we have a variable whose value should be a Lisp function. The
69: function we supply is a list starting with `lambda', and a single
70: quote is written in front of it to make it (for the purpose of this
71: `setq') a list constant rather than an expression. Lisp functions
72: are not explained here, but for mode hooks it is enough to know
73: that `(auto-fill-mode 1)' is an expression that will be executed
74: when Text mode is entered, and you could replace it with any other
75: expression that you like, or with several expressions in a row.
76:
77: (setq text-mode-hook 'turn-on-auto-fill)
78:
79: This is another way to accomplish the same result.
80: `turn-on-auto-fill' is a symbol whose function definition is
81: `(lambda () (auto-fill-mode 1))'.
82:
83: * Load the installed Lisp library named `foo' (actually a file
84: `foo.elc' or `foo.el' in a standard Emacs directory).
85:
86: (load "foo")
87:
88: When the argument to `load' is a relative pathname, not starting
89: with `/' or `~', `load' searches the directories in `load-path'
90: (*note Loading::.).
91:
92: * Load the compiled Lisp file `foo.elc' from your home directory.
93:
94: (load "~/foo.elc")
95:
96: Here an absolute file name is used, so no searching is done.
97:
98: * Rebind the key `C-x l' to run the function `make-symbolic-link'.
99:
100: (global-set-key "\C-xl" 'make-symbolic-link)
101:
102: or
103:
104: (define-key global-map "\C-xl" 'make-symbolic-link)
105:
106: Note once again the single-quote used to refer to the symbol
107: `make-symbolic-link' instead of its value as a variable.
108:
109: * Do the same thing for C mode only.
110:
111: (define-key c-mode-map "\C-xl" 'make-symbolic-link)
112:
113: * Redefine all keys which now run `next-line' in Fundamental mode so
114: that they run `forward-line' instead.
115:
116: (substitute-key-definition 'next-line 'forward-line
117: global-map)
118:
119: * Make `C-x C-v' undefined.
120:
121: (global-unset-key "\C-x\C-v")
122:
123: One reason to undefine a key is so that you can make it a prefix.
124: Simply defining `C-x C-v ANYTHING' would make `C-x C-v' a prefix,
125: but `C-x C-v' must be freed of any non-prefix definition first.
126:
127: * Make `$' have the syntax of punctuation in Text mode. Note the use
128: of a character constant for `$'.
129:
130: (modify-syntax-entry ?\$ "." text-mode-syntax-table)
131:
132: * Enable the use of the command `eval-expression' without
133: confirmation.
134:
135: (put 'eval-expression 'disabled nil)
136:
137:
138: File: emacs, Node: Terminal Init, Next: Debugging Init, Prev: Init Examples, Up: Init File
139:
140: Terminal-specific Initialization
141: --------------------------------
142:
143: Each terminal type can have a Lisp library to be loaded into Emacs
144: when it is run on that type of terminal. For a terminal type named
145: TERMTYPE, the library is called `term/TERMTYPE' and it is found by
146: searching the directories `load-path' as usual and trying the suffixes
147: `.elc' and `.el'. Normally it appears in the subdirectory `term' of
148: the directory where most Emacs libraries are kept.
149:
150: The usual purpose of the terminal-specific library is to define the
151: escape sequences used by the terminal's function keys using the library
152: `keypad.el'. See the file `term/vt100.el' for an example of how this
153: is done.
154:
155: When the terminal type contains a hyphen, only the part of the name
156: before the first hyphen is significant in choosing the library name.
157: Thus, terminal types `aaa-48' and `aaa-30-rv' both use the library
158: `term/aaa'. The code in the library can use `(getenv "TERM")' to find
159: the full terminal type name.
160:
161: The library's name is constructed by concatenating the value of the
162: variable `term-file-prefix' and the terminal type. Your `.emacs' file
163: can prevent the loading of the terminal-specific library by setting
164: `term-file-prefix' to `nil'.
165:
166: The value of the variable `term-setup-hook', if not `nil', is called
167: as a function of no arguments at the end of Emacs initialization, after
168: both your `.emacs' file and any terminal-specific library have been
169: read in. You can set the value in the `.emacs' file to override part
170: of any of the terminal-specific libraries and to define initializations
171: for terminals that do not have a library.
172:
173:
174: File: emacs, Node: Debugging Init, Prev: Terminal Init, Up: Init File
175:
176: Debugging Your `.emacs' File
177: ----------------------------
178:
179: Ordinarily, Emacs traps errors that occur while reading `.emacs'.
180: This is convenient, most of the time, because it means you can still get
181: an Emacs in which you can edit. But it causes inconvenience because
182: there is no way to enter the debugger if there is an error.
183:
184: But you can run the `.emacs' file explicitly in an Emacs that is
185: already set up, and debug errors at that time.
186:
187: M-x set-variable
188: debug-on-error
189: t
190: M-x load-file
191: ~/.emacs
192:
193: In Emacs 19, use the `-debug-init' option if you want errors in
194: `.emacs' to enter the debugger.
195:
196:
197: File: emacs, Node: Quitting, Next: Lossage, Prev: Customization, Up: Top
198:
199: Quitting and Aborting
200: =====================
201:
202: `C-g'
203: Quit. Cancel running or partially typed command.
204:
205: `C-]'
206: Abort innermost recursive editing level and cancel the command
207: which invoked it (`abort-recursive-edit').
208:
209: `M-x top-level'
210: Abort all recursive editing levels that are currently executing.
211:
212: `C-x u'
213: Cancel an already-executed command, usually (`undo').
214:
215: There are two ways of cancelling commands which are not finished
216: executing: "quitting" with `C-g', and "aborting" with `C-]' or `M-x
217: top-level'. Quitting is cancelling a partially typed command or one
218: which is already running. Aborting is getting out of a recursive
219: editing level and cancelling the command that invoked the recursive
220: edit.
221:
222: Quitting with `C-g' is used for getting rid of a partially typed
223: command, or a numeric argument that you don't want. It also stops a
224: running command in the middle in a relatively safe way, so you can use
225: it if you accidentally give a command which takes a long time. In
226: particular, it is safe to quit out of killing; either your text will
227: ALL still be there, or it will ALL be in the kill ring (or maybe both).
228: Quitting an incremental search does special things documented under
229: searching; in general, it may take two successive `C-g' characters to
230: get out of a search. `C-g' works by setting the variable `quit-flag' to
231: `t' the instant `C-g' is typed; Emacs Lisp checks this variable
232: frequently and quits if it is non-`nil'. `C-g' is only actually
233: executed as a command if it is typed while Emacs is waiting for input.
234:
235: If you quit twice in a row before the first `C-g' is recognized, you
236: activate the "emergency escape" feature and return to the shell. *Note
237: Emergency Escape::.
238:
239: Aborting with `C-]' (`abort-recursive-edit') is used to get out of a
240: recursive editing level and cancel the command which invoked it.
241: Quitting with `C-g' does not do this, and could not do this, because it
242: is used to cancel a partially typed command within the recursive
243: editing level. Both operations are useful. For example, if you are in
244: the Emacs debugger (*note Lisp Debug::.) and have typed `C-u 8' to
245: enter a numeric argument, you can cancel that argument with `C-g' and
246: remain in the debugger.
247:
248: The command `M-x top-level' is equivalent to "enough" `C-]' commands
249: to get you out of all the levels of recursive edits that you are in.
250: `C-]' gets you out one level at a time, but `M-x top-level' goes out
251: all levels at once. Both `C-]' and `M-x top-level' are like all other
252: commands, and unlike `C-g', in that they are effective only when Emacs
253: is ready for a command. `C-]' is an ordinary key and has its meaning
254: only because of its binding in the keymap. *Note Recursive Edit::.
255:
256: `C-x u' (`undo') is not strictly speaking a way of cancelling a
257: command, but you can think of it as cancelling a command already
258: finished executing. *Note Undo::.
259:
260:
261: File: emacs, Node: Lossage, Next: Bugs, Prev: Quitting, Up: Top
262:
263: Dealing with Emacs Trouble
264: ==========================
265:
266: This section describes various conditions in which Emacs fails to
267: work, and how to recognize them and correct them.
268:
269: * Menu:
270:
271: * Stuck Recursive:: `[...]' in mode line around the parentheses
272: * Screen Garbled:: Garbage on the screen
273: * Text Garbled:: Garbage in the text
274: * Unasked-for Search:: Spontaneous entry to incremental search
275: * Emergency Escape:: Emergency escape--
276: What to do if Emacs stops responding
277: * Total Frustration:: When you are at your wits' end.
278:
279:
280: File: emacs, Node: Stuck Recursive, Next: Screen Garbled, Prev: Lossage, Up: Lossage
281:
282: Recursive Editing Levels
283: ------------------------
284:
285: Recursive editing levels are important and useful features of Emacs,
286: but they can seem like malfunctions to the user who does not understand
287: them.
288:
289: If the mode line has square brackets `[...]' around the parentheses
290: that contain the names of the major and minor modes, you have entered a
291: recursive editing level. If you did not do this on purpose, or if you
292: don't understand what that means, you should just get out of the
293: recursive editing level. To do so, type `M-x top-level'. This is
294: called getting back to top level. *Note Recursive Edit::.
295:
296:
297: File: emacs, Node: Screen Garbled, Next: Text Garbled, Prev: Stuck Recursive, Up: Lossage
298:
299: Garbage on the Screen
300: ---------------------
301:
302: If the data on the screen looks wrong, the first thing to do is see
303: whether the text is really wrong. Type `C-l', to redisplay the entire
304: screen. If it appears correct after this, the problem was entirely in
305: the previous screen update.
306:
307: Display updating problems often result from an incorrect termcap
308: entry for the terminal you are using. The file `etc/TERMS' in the Emacs
309: distribution gives the fixes for known problems of this sort. `INSTALL'
310: contains general advice for these problems in one of its sections.
311: Very likely there is simply insufficient padding for certain display
312: operations. To investigate the possibility that you have this sort of
313: problem, try Emacs on another terminal made by a different manufacturer.
314: If problems happen frequently on one kind of terminal but not another
315: kind, it is likely to be a bad termcap entry, though it could also be
316: due to a bug in Emacs that appears for terminals that have or that lack
317: specific features.
318:
319:
320: File: emacs, Node: Text Garbled, Next: Unasked-for Search, Prev: Screen Garbled, Up: Lossage
321:
322: Garbage in the Text
323: -------------------
324:
325: If `C-l' shows that the text is wrong, try undoing the changes to it
326: using `C-x u' until it gets back to a state you consider correct. Also
327: try `C-h l' to find out what command you typed to produce the observed
328: results.
329:
330: If a large portion of text appears to be missing at the beginning or
331: end of the buffer, check for the word `Narrow' in the mode line. If it
332: appears, the text is still present, but marked off-limits. To make it
333: visible again, type `C-x w'. *Note Narrowing::.
334:
335:
336: File: emacs, Node: Unasked-for Search, Next: Emergency Escape, Prev: Text Garbled, Up: Lossage
337:
338: Spontaneous Entry to Incremental Search
339: ---------------------------------------
340:
341: If Emacs spontaneously displays `I-search:' at the bottom of the
342: screen, it means that the terminal is sending `C-s' and `C-q' according
343: to the poorly designed `xon/xoff' "flow control" protocol. You should
344: try to prevent this by putting the terminal in a mode where it will not
345: use flow control or giving it enough padding that it will never send a
346: `C-s'. If that cannot be done, you must tell Emacs to expect flow
347: control to be used, until you can get a properly designed terminal.
348:
349: Information on how to do these things can be found in the file
350: `INSTALL' in the Emacs distribution.
351:
352:
353: File: emacs, Node: Emergency Escape, Next: Total Frustration, Prev: Unasked-for Search, Up: Lossage
354:
355: Emergency Escape
356: ----------------
357:
358: Because at times there have been bugs causing Emacs to loop without
359: checking `quit-flag', a special feature causes Emacs to be suspended
360: immediately if you type a second `C-g' while the flag is already set,
361: so you can always get out of GNU Emacs. Normally Emacs recognizes and
362: clears `quit-flag' (and quits!) quickly enough to prevent this from
363: happening.
364:
365: When you resume Emacs after a suspension caused by multiple `C-g', it
366: asks two questions before going back to what it had been doing:
367:
368: Auto-save? (y or n)
369: Abort (and dump core)? (y or n)
370:
371: Answer each one with `y' or `n' followed by RET.
372:
373: Saying `y' to `Auto-save?' causes immediate auto-saving of all
374: modified buffers in which auto-saving is enabled.
375:
376: Saying `y' to `Abort (and dump core)?' causes an illegal instruction
377: to be executed, dumping core. This is to enable a wizard to figure out
378: why Emacs was failing to quit in the first place. Execution does not
379: continue after a core dump. If you answer `n', execution does
380: continue. With luck, GNU Emacs will ultimately check `quit-flag' and
381: quit normally. If not, and you type another `C-g', it is suspended
382: again.
383:
384: If Emacs is not really hung, just slow, you may invoke the double
385: `C-g' feature without really meaning to. Then just resume and answer
386: `n' to both questions, and you will arrive at your former state.
387: Presumably the quit you requested will happen soon.
388:
389: The double-`C-g' feature may be turned off when Emacs is running
390: under a window system, since the window system always enables you to
391: kill Emacs or to create another window and run another program.
392:
393:
394: File: emacs, Node: Total Frustration, Prev: Emergency Escape, Up: Lossage
395:
396: Help for Total Frustration
397: --------------------------
398:
399: If using Emacs (or something else) becomes terribly frustrating and
400: none of the techniques described above solve the problem, Emacs can
401: still help you.
402:
403: First, if the Emacs you are using is not responding to commands, type
404: `C-g C-g' to get out of it and then start a new one.
405:
406: Second, type `M-x doctor RET'.
407:
408: The doctor will make you feel better. Each time you say something to
409: the doctor, you must end it by typing RET RET. This lets the doctor
410: know you are finished.
411:
412:
413: File: emacs, Node: Bugs, Next: Version 19, Prev: Lossage, Up: Top
414:
415: Reporting Bugs
416: ==============
417:
418: Sometimes you will encounter a bug in Emacs. Although we cannot
419: promise we can or will fix the bug, and we might not even agree that it
420: is a bug, we want to hear about bugs you encounter in case we do want
421: to fix them.
422:
423: To make it possible for us to fix a bug, you must report it. In
424: order to do so effectively, you must know when and how to do it.
425:
426: When Is There a Bug
427: -------------------
428:
429: If Emacs executes an illegal instruction, or dies with an operating
430: system error message that indicates a problem in the program (as
431: opposed to something like "disk full"), then it is certainly a bug.
432:
433: If Emacs updates the display in a way that does not correspond to
434: what is in the buffer, then it is certainly a bug. If a command seems
435: to do the wrong thing but the problem corrects itself if you type
436: `C-l', it is a case of incorrect display updating.
437:
438: Taking forever to complete a command can be a bug, but you must make
439: certain that it was really Emacs's fault. Some commands simply take a
440: long time. Type `C-g' and then `C-h l' to see whether the input Emacs
441: received was what you intended to type; if the input was such that you
442: KNOW it should have been processed quickly, report a bug. If you don't
443: know whether the command should take a long time, find out by looking
444: in the manual or by asking for assistance.
445:
446: If a command you are familiar with causes an Emacs error message in a
447: case where its usual definition ought to be reasonable, it is probably a
448: bug.
449:
450: If a command does the wrong thing, that is a bug. But be sure you
451: know for certain what it ought to have done. If you aren't familiar
452: with the command, or don't know for certain how the command is supposed
453: to work, then it might actually be working right. Rather than jumping
454: to conclusions, show the problem to someone who knows for certain.
455:
456: Finally, a command's intended definition may not be best for editing
457: with. This is a very important sort of problem, but it is also a
458: matter of judgment. Also, it is easy to come to such a conclusion out
459: of ignorance of some of the existing features. It is probably best not
460: to complain about such a problem until you have checked the
461: documentation in the usual ways, feel confident that you understand it,
462: and know for certain that what you want is not available. If you are
463: not sure what the command is supposed to do after a careful reading of
464: the manual, check the index and glossary for any terms that may be
465: unclear. If you still do not understand, this indicates a bug in the
466: manual. The manual's job is to make everything clear. It is just as
467: important to report documentation bugs as program bugs.
468:
469: If the on-line documentation string of a function or variable
470: disagrees with the manual, one of them must be wrong, so report the bug.
471:
472: How to Report a Bug
473: -------------------
474:
475: When you decide that there is a bug, it is important to report it
476: and to report it in a way which is useful. What is most useful is an
477: exact description of what commands you type, starting with the shell
478: command to run Emacs, until the problem happens. Always include the
479: version number of Emacs that you are using; type `M-x emacs-version' to
480: print this.
481:
482: The most important principle in reporting a bug is to report FACTS,
483: not hypotheses or categorizations. It is always easier to report the
484: facts, but people seem to prefer to strain to posit explanations and
485: report them instead. If the explanations are based on guesses about
486: how Emacs is implemented, they will be useless; we will have to try to
487: figure out what the facts must have been to lead to such speculations.
488: Sometimes this is impossible. But in any case, it is unnecessary work
489: for us.
490:
491: For example, suppose that you type `C-x C-f /glorp/baz.ugh RET',
492: visiting a file which (you know) happens to be rather large, and Emacs
493: prints out `I feel pretty today'. The best way to report the bug is
494: with a sentence like the preceding one, because it gives all the facts
495: and nothing but the facts.
496:
497: Do not assume that the problem is due to the size of the file and
498: say, "When I visit a large file, Emacs prints out `I feel pretty
499: today'." This is what we mean by "guessing explanations". The problem
500: is just as likely to be due to the fact that there is a `z' in the file
501: name. If this is so, then when we got your report, we would try out
502: the problem with some "large file", probably with no `z' in its name,
503: and not find anything wrong. There is no way in the world that we
504: could guess that we should try visiting a file with a `z' in its name.
505:
506: Alternatively, the problem might be due to the fact that the file
507: starts with exactly 25 spaces. For this reason, you should make sure
508: that you inform us of the exact contents of any file that is needed to
509: reproduce the bug. What if the problem only occurs when you have typed
510: the `C-x C-a' command previously? This is why we ask you to give the
511: exact sequence of characters you typed since starting to use Emacs.
512:
513: You should not even say "visit a file" instead of `C-x C-f' unless
514: you know that it makes no difference which visiting command is used.
515: Similarly, rather than saying "if I have three characters on the line,"
516: say "after I type `RET A B C' RET C-p," if that is the way you entered
517: the text.
518:
519: If you are not in Fundamental mode when the problem occurs, you
520: should say what mode you are in.
521:
522: If the manifestation of the bug is an Emacs error message, it is
523: important to report not just the text of the error message but a
524: backtrace showing how the Lisp program in Emacs arrived at the error.
525: To make the backtrace, you must execute the Lisp expression `(setq
526: debug-on-error t)' before the error happens (that is to say, you must
527: execute that expression and then make the bug happen). This causes the
528: Lisp debugger to run (*note Lisp Debug::.). The debugger's backtrace
529: can be copied as text into the bug report. This use of the debugger is
530: possible only if you know how to make the bug happen again. Do note
531: the error message the first time the bug happens, so if you can't make
532: it happen again, you can report at least that.
533:
534: Check whether any programs you have loaded into the Lisp world,
535: including your `.emacs' file, set any variables that may affect the
536: functioning of Emacs. Also, see whether the problem happens in a
537: freshly started Emacs without loading your `.emacs' file (start Emacs
538: with the `-q' switch to prevent loading the init file.) If the problem
539: does NOT occur then, it is essential that we know the contents of any
540: programs that you must load into the Lisp world in order to cause the
541: problem to occur.
542:
543: If the problem does depend on an init file or other Lisp programs
544: that are not part of the standard Emacs system, then you should make
545: sure it is not a bug in those programs by complaining to their
546: maintainers first. After they verify that they are using Emacs in a way
547: that is supposed to work, they should report the bug.
548:
549: If you can tell us a way to cause the problem without visiting any
550: files, please do so. This makes it much easier to debug. If you do
551: need files, make sure you arrange for us to see their exact contents.
552: For example, it can often matter whether there are spaces at the ends
553: of lines, or a newline after the last line in the buffer (nothing ought
554: to care whether the last line is terminated, but tell that to the bugs).
555:
556: The easy way to record the input to Emacs precisely is to write a
557: dribble file; execute the Lisp expression
558:
559: (open-dribble-file "~/dribble")
560:
561: using `Meta-ESC' or from the `*scratch*' buffer just after starting
562: Emacs. From then on, all Emacs input will be written in the specified
563: dribble file until the Emacs process is killed.
564:
565: For possible display bugs, it is important to report the terminal
566: type (the value of environment variable `TERM'), the complete termcap
567: entry for the terminal from `/etc/termcap' (since that file is not
568: identical on all machines), and the output that Emacs actually sent to
569: the terminal. The way to collect this output is to execute the Lisp
570: expression
571:
572: (open-termscript "~/termscript")
573:
574: using `Meta-ESC' or from the `*scratch*' buffer just after starting
575: Emacs. From then on, all output from Emacs to the terminal will be
576: written in the specified termscript file as well, until the Emacs
577: process is killed. If the problem happens when Emacs starts up, put
578: this expression into your `.emacs' file so that the termscript file will
579: be open when Emacs displays the screen for the first time. Be warned:
580: it is often difficult, and sometimes impossible, to fix a
581: terminal-dependent bug without access to a terminal of the type that
582: stimulates the bug.
583:
584: The address for reporting bugs is
585:
586: GNU Emacs Bugs
587: Free Software Foundation
588: 675 Mass Ave
589: Cambridge, MA 02139
590:
591: or send email either to `[email protected]' (Internet) or
592: to `uunet!prep.ai.mit.edu!bug-gnu-emacs' (Usenet).
593:
594: Once again, we do not promise to fix the bug; but if the bug is
595: serious, or ugly, or easy to fix, chances are we will want to.
596:
597:
598: File: emacs, Node: Version 19, Next: Manifesto, Prev: Bugs, Up: Top
599:
600: Version 19 Antenews
601: *******************
602:
603: This chapter prematurely describes new features of Emacs 19, in
604: anticipation of its release. We have included this so that the version
605: 18 manuals don't become obsolete as soon as Emacs 19 comes out. This
606: list mentions only features that would belong in `The GNU Emacs
607: Manual'; changes relevant to Emacs Lisp programming will be documented
608: in the next revision of `The GNU Emacs Lisp Manual'.
609:
610: * Menu:
611:
612: * Basic Changes:: Changes every user must know.
613: * New Facilities:: Changes every user will want to know.
614: * Binding Changes:: Ordinary commands that have been moved. Important!.
615: * Changed Commands:: Ordinary commands that have new features. Important!
616: * M-x Changes:: Changes in commands you run with `M-x'. Important!
617: * New Commands:: Commands that have been added
618: that we expect many users to want to use.
619: * Search Changes:: Changes in incremental search. Some are important.
620:
621: The rest of the changes you can pretty much ignore unless you are interested.
622:
623: * Filling Changes:: Changes in fill commands.
624: * TeX Mode Changes:: Changes in the commands for editing TeX files
625: and running TeX.
626: * Shell Changes:: Major changes in all the modes that run subprograms.
627: * Spell Changes:: These commands now use ispell instead of spell.
628: * Tags Changes:: Changes in Tags facility.
629: * Mail Changes:: Changes in both Sendmail mode and Rmail mode.
630: * Info Changes:: New commands in Info.
631: * Dired Changes:: Powerful new features in Dired.
632: * GNUS:: An alternative news reader.
633: * Calendar/Diary:: The calendar feature now lets you move to different
634: dates and convert to and from other calendars.
635: You can also display related entries from your diary
636: file.
637: * Version Control:: A convenient interface to RCS or SCCS.
638: * Emerge:: A new feature for merging files interactively.
639: * Debuggers:: Running debuggers (GDB, DBX, SDB) under Emacs.
640: * Other New Modes:: Miscellaneous new and changed major modes.
641: * Key Sequence Changes:: You can now bind key sequences that include function
642: keys and mouse clicks.
643: * Hook Changes:: Hook variables have been renamed more systematically.
644:
645:
646: File: emacs, Node: Basic Changes, Next: New Facilities, Up: Version 19
647:
648: Basic Changes
649: =============
650:
651: We have made changes to help Emacs use fewer resources and make it
652: less likely to become irreparably hung. While these changes don't
653: alter the commands of Emacs, they are important enough to be worth
654: mentioning.
655:
656: You can quit with `C-g' while Emacs is waiting to read or write a
657: file--provided the operating system will allow you to interrupt the
658: system call that is hung. (Unfortunately, most NFS implementations
659: won't allow interruption.)
660:
661: When you kill buffers, Emacs now returns memory to the operating
662: system, thus reducing the size of the Emacs process. The space that
663: you free up by killing buffers can now be reused for other buffers no
664: matter what their sizes, or reused by other processes if Emacs doesn't
665: need it.
666:
667: Multiple X Windows
668: ------------------
669:
670: When using X windows, you can now create more than one window at the
671: X level. Each X window displays a "frame" which can contain one or
672: several Emacs windows. Each frame has its own echo area and normally
673: its own minibuffer. (To avoid confusion, we reserve the word "window"
674: for the subdivisions that Emacs implements, and never use it to refer
675: to a frame.) The easiest way to create additional frames is with the
676: `C-x 5' prefix character (*note New Everyday Commands: New Commands.).
677:
678: Emacs windows can now have scroll bars; use the `scroll-bar-mode'
679: command to turn scroll bars on or off. With no argument, it toggles the
680: use of scroll bars. With an argument, it turns use of scroll bars on if
681: and only if the argument is positive. This command applies to all
682: frames, including frames yet to be created. (You can control scroll
683: bars on a frame by frame basis by writing a Lisp program.)
684:
685: Undo Improvements
686: -----------------
687:
688: Undoing a deletion now puts the cursor position where it was just
689: before the deletion.
690:
691: Auto Save Improvements
692: ----------------------
693:
694: Emacs now does garbage collection and auto saving while it is waiting
695: for input, which often avoids the need to do these things while you are
696: typing. The variable `auto-save-timeout' says how many seconds Emacs
697: should wait, after you stop typing, before it does an auto save and
698: perhaps also a garbage collection. (The actual time period varies also
699: according to the size of the buffer--longer for longer buffers, since
700: auto saving itself is slower for long buffers.) This way, Emacs does
701: not interrupt or delay your typing.
702:
703: In Emacs 18, when auto saving detects that a buffer has shrunk
704: greatly, it refrains from auto saving that buffer and displays a
705: warning. In version 19, it also turns off Auto Save mode in that
706: buffer, so that you won't get the same warning repeatedly. If you
707: reenable Auto Save mode in that buffer, Emacs will start saving it
708: again despite the shrinkage.
709:
710: In Emacs 19, `revert-buffer' no longer offers to revert from the
711: latest auto-save file. That option hasn't been very useful since the
712: change to keep more undo information.
713:
714: The command `recover-file' no longer turns off Auto Save mode.
715:
716: File Local Variables
717: --------------------
718:
719: The user option for controlling whether files can set local
720: variables is called `enable-local-variables' in Emacs 19, rather than
721: `inhibit-local-variables'. A value of `t' means local-variables lists
722: are obeyed; `nil' means they are ignored; anything else means query the
723: user.
724:
725:
726: File: emacs, Node: New Facilities, Next: Binding Changes, Prev: Basic Changes, Up: Version 19
727:
728: New Basic Facilities
729: ====================
730:
731: You can now get back recent minibuffer inputs conveniently. While in
732: the minibuffer, type `M-p' (`previous-history-element') to fetch the
733: next earlier minibuffer input, and use `M-n' (`next-history-element')
734: to fetch the next later input.
735:
736: There are also commands to search forward or backward through the
737: history. As of this writing, they search for history elements that
738: match a regular expression that you specify with the minibuffer. `M-r'
739: (`previous-matching-history-element') searches older elements in the
740: history, while `M-s' (`next-matching-history-element') searches newer
741: elements. By special dispensation, these commands can always use the
742: minibuffer to read their arguments even though you are already in the
743: minibuffer when you issue them.
744:
745: We may have changed the precise way these commands work by the time
746: you use Emacs 19. Perhaps they will search for a match for the string
747: given so far in the minibuffer; perhaps they will search for a literal
748: match rather than a regular expression match; perhaps they will only
749: accept matches at the beginning of a history element; perhaps they will
750: read the string to search for incrementally like `C-s'. We want to
751: choose an interface that is convenient, flexible and natural, and these
752: goals are somewhat contradictory. To find out what interface is
753: actually available, type `C-h f previous-matching-history-element'.
754:
755: The history feature is available for all uses of the minibuffer, but
756: there are separate history lists for different kinds of input. For
757: example, there is a list for file names, used by all the commands that
758: read file names. There is a list for arguments of commands like
759: `query-replace'. There are also very specific history lists, such as
760: the one that `compile' uses for compilation commands.
761:
762: Remote File Access
763: ------------------
764:
765: You can refer to files on other machines using a special file name
766: syntax:
767:
768: /HOST:FILENAME
769: /USER@HOST:FILENAME
770:
771: When you do this, Emacs uses the FTP program to read and write files
772: on the specified host. It logs in through FTP using your user name or
773: the name USER. It may ask you for a password from time to time; this
774: is used for logging in on HOST.
775:
776: Using Flow Control
777: ------------------
778:
779: There is now a convenient way to enable flow control when your
780: terminal or your connection won't work without it. Suppose you want to
781: do this on VT-100 and H19 terminals; put the following in your `.emacs'
782: file:
783:
784: (evade-flow-control-on "vt100" "h19")
785:
786: When flow control is enabled, you must type `C-\' to get the effect
787: of a `C-s', and type `C-^' to get the effect of a `C-q'.
788:
789: Controlling Backup File Names
790: -----------------------------
791:
792: The default setting of the Lisp variable `version-control' now comes
793: from the environment variable `VERSION_CONTROL'. Thus, you can select
794: a style of backup file naming for Emacs and other GNU utilities all
795: together.
796:
797:
798: File: emacs, Node: Binding Changes, Next: Changed Commands, Prev: New Facilities, Up: Version 19
799:
800: Changed Key Bindings
801: ====================
802:
803: `M-{'
804: This is the new key sequence for `backward-paragraph'. The old key
805: sequence for this, `M-[', is now undefined by default.
806:
807: The reason for this change is to avoid conflict with the sequences
808: that function keys send on most terminals.
809:
810: `M-}'
811: This is the new key sequence for `forward-paragraph'. The old key
812: sequence for this, `M-]', is now undefined by default.
813:
814: We changed this to go along with `M-{'.
815:
816: `C-x C-u'
817: `C-x C-l'
818: The two commands, `C-x C-u' (`upcase-region') and `C-x C-l'
819: (`downcase-region'), are now disabled by default; these keys seem
820: to be often hit by accident, and can be quite destructive if their
821: effects are not noticed immediately.
822:
823: `C-x 3'
824: `C-x 3' is now the key binding for `split-window-horizontally',
825: which splits a window into two side-by-side windows. This used to
826: be `C-x 5'.
827:
828: ``C-x 4 C-o''
829: This key now runs `display-buffer', which displays a specified
830: buffer in another window without selecting it.
831:
832: `M-g'
833: `M-g' is now undefined. It used to run the command `fill-region'.
834: This command used to be run more often by mistake than on purpose.
835:
836: `C-x a'
837: `C-x n'
838: `C-x r'
839: Three new prefix keys have been created to make many of the `C-x'
840: commands more systematic: `C-x a', `C-x n' and `C-x r'. `C-x a' is
841: used for abbreviation commands, `C-x n' for commands pertaining to
842: narrowing, and `C-x r' for register and rectangle commands. These
843: are the new bindings, in detail:
844:
845: `C-x a l'
846: `add-mode-abbrev' (previously `C-x C-a').
847:
848: `C-x a g'
849: `add-global-abbrev' (previously `C-x +').
850:
851: `C-x a i g'
852: `inverse-add-mode-abbrev' (previously `C-x C-h').
853:
854: `C-x a i l'
855: `inverse-add-global-abbrev' (previously `C-x -').
856:
857: `C-x a e'
858: `expand-abbrev' (previously `C-x '').
859:
860: `C-x n n'
861: `narrow-to-region' (previously `C-x n').
862:
863: `C-x n p'
864: `narrow-to-page' (previously `C-x p').
865:
866: `C-x n w'
867: `widen' (previously `C-x w').
868:
869: `C-x r C-SPC'
870: `point-to-register' (previously `C-x /').
871:
872: `C-x r SPC'
873: Also `point-to-register' (previously `C-x /').
874:
875: `C-x r j'
876: `jump-to-register' (previously `C-x j').
877:
878: `C-x r s'
879: `copy-to-register' (previously `C-x x').
880:
881: `C-x r i'
882: `insert-register' (previously `C-x g').
883:
884: `C-x r r'
885: `copy-rectangle-to-register' (previously `C-x r').
886:
887: `C-x r k'
888: `kill-rectangle' (no previous key binding).
889:
890: `C-x r y'
891: `yank-rectangle' (no previous key binding).
892:
893: `C-x r o'
894: `open-rectangle' (no previous key binding).
895:
896: `C-x r f'
897: `frame-configuration-to-register' (a new command) saves the
898: state of all windows in all frames. Use `C-x r j' to restore
899: the configuration.
900:
901: `C-x r w'
902: `window-configuration-to-register' (a new command) saves the
903: state of all windows in the selected frame. Use `C-x r j' to
904: restore the configuration.
905:
906: The old key bindings `C-x /', `C-x j', `C-x x' and `C-x g' have
907: not yet been removed. The other old key bindings listed have been
908: removed. The old key binding `C-x a', which was
909: `append-to-buffer', was removed to make way for a prefix key; now
910: `append-to-buffer' has no keybinding.
911:
912: `C-x v'
913: `C-x v' is a new prefix character, used for version control
914: commands. *Note Version Control::.
915:
916:
917: File: emacs, Node: Changed Commands, Next: M-x Changes, Prev: Binding Changes, Up: Version 19
918:
919: Changed Everyday Commands
920: =========================
921:
922: `C-o'
923: When you have a fill prefix, the command `C-o' inserts the prefix
924: on the newly created line.
925:
926: `M-^'
927: When you have a fill prefix, the command `M-^' deletes the prefix
928: (if it occurs) after the newline that it deletes.
929:
930: `M-z'
931: The `M-z' command (`zap-to-char') now kills through the target
932: character. In version 18, it killed up to but not including the
933: target character.
934:
935: `M-!'
936: The command `M-!' (`shell-command') now runs the specified shell
937: command asynchronously if it ends in `&', just as the shell does.
938:
939: `C-x 2'
940: The `C-x 2' command (`split-window-vertically') now tries to avoid
941: scrolling by putting point in whichever window happens to contain
942: the screen line the cursor is already on. If you don't like this,
943: you can turn it off by setting `split-window-keep-point' to `nil'.
944:
945: `C-x s'
946: The `C-x s' command (`save-some-buffers') now gives you more
947: options when it asks whether to save a particular buffer. The
948: options are analogous to those of `query-replace'. Here they are:
949:
950: `y'
951: Save this buffer and ask about the rest of the buffers.
952:
953: `n'
954: Don't save this buffer, but ask about the rest of the buffers.
955:
956: `!'
957: Save this buffer and all the rest with no more questions.
958:
959: `ESC'
960: Terminate `save-some-buffers' without any more saving.
961:
962: `.'
963: Save only this buffer, then exit `save-some-buffers' without
964: even asking about other buffers.
965:
966: `C-r'
967: View the buffer that you are currently being asked about.
968: When you exit View mode, you get back to `save-some-buffers',
969: which asks the question again.
970:
971: `C-h'
972: Display a help message about these options.
973:
974: `C-x C-v'
975: This command (`find-alternate-file') now inserts the entire current
976: file name in the minibuffer. This is convenient if you made a
977: small mistake in typing it. Point goes after the last slash,
978: before the last file name component, so if you want to replace it
979: entirely, you can use `C-k' right away to delete it.
980:
981: `C-M-f'
982: Expression and list commands such as `C-M-f' now ignore parentheses
983: within comments in Lisp mode.
984:
985:
986: File: emacs, Node: M-x Changes, Next: New Commands, Prev: Changed Commands, Up: Version 19
987:
988: Changes in Common `M-x' Commands
989: ================================
990:
991: `M-x make-symbolic-link'
992: This command now does not expand its second argument. This lets
993: you make a link with a target that is a relative file name.
994:
995: `M-x add-change-log-entry'
996: `C-x 4 a'
997: These commands now automatically insert the name of the file and
998: often the name of the function that you changed. They also handle
999: grouping of entries.
1000:
1001: There is now a special major mode for editing `ChangeLog' files.
1002: It makes filling work conveniently. Each bunch of grouped entries
1003: is one paragraph, and each collection of entries from one person
1004: on one day is considered a page.
1005:
1006: `M-x compare-windows'
1007: With a prefix argument, `compare-windows' ignores changes in
1008: whitespace. If the variable `compare-ignore-case' is non-`nil',
1009: it ignores differences in case as well.
1010:
1011: `M-x view-buffer'
1012: `M-x view-file'
1013: The View commands (such as `M-x view-buffer' and `M-x view-file')
1014: no longer use recursive edits; instead, they switch temporarily to
1015: a different major mode (View mode) specifically designed for
1016: moving around through a buffer without editing it.
1017:
1018: `M-x manual-entry'
1019: `M-x manual-entry' now uses View mode for the buffer showing the
1020: man page.
1021:
1022: `M-x compile'
1023: You can repeat any previous `compile' conveniently using the
1024: minibuffer history commands, while in the minibuffer entering the
1025: compilation command.
1026:
1027: While a compilation is going on, the string `Compiling' appears in
1028: the mode line. When this string disappears, the compilation is
1029: finished.
1030:
1031: The buffer of compiler messages is in Compilation mode. This mode
1032: provides the keys SPC and DEL to scroll by screenfuls, and `M-n'
1033: and `M-p' to move to the next or previous error message. You can
1034: also use `M-{' and `M-}' to move up or down to an error message
1035: for a different source file. Use `C-c C-c' on any error message
1036: to find the corresponding source code.
1037:
1038: Emacs 19 has a more general parser for compiler messages. For
1039: example, it can understand messages from lint, and from certain C
1040: compilers whose error message format is unusual.
1041:
1042:
1043: File: emacs, Node: New Commands, Next: Search Changes, Prev: M-x Changes, Up: Version 19
1044:
1045: New Everyday Commands
1046: =====================
1047:
1048: `C-z'
1049: When you are using X windows, `C-z' (`iconify-frame') now
1050: iconifies the current frame.
1051:
1052: `C-M-l'
1053: The `C-M-l' command (`reposition-window') scrolls the current
1054: window heuristically in a way designed to get useful information
1055: onto the screen. For example, in a Lisp file, this command tries
1056: to get the entire current defun onto the screen if possible.
1057:
1058: `C-M-r'
1059: The `C-M-r' key now runs the command `isearch-backward-regexp',
1060: which does reverse incremental regexp search.
1061:
1062: `C-x 5'
1063: The prefix key `C-x 5' is analogous to `C-x 4', with parallel
1064: subcommands. The difference is that `C-x 5' commands create a new
1065: frame rather than just a new window.
1066:
1067: `C-x 5 C-f'
1068: `C-x 5 b'
1069: These new commands switch to a specified file or buffer in a new
1070: frame (when using X windows). The commands' names are
1071: `find-file-other-frame' and `switch-to-buffer-other-frame'.
1072:
1073: `C-x 5 m'
1074: Start outgoing mail in another frame (`mail-other-frame').
1075:
1076: `C-x 5 .'
1077: Find a tag in another frame (`find-tag-other-frame').
1078:
1079: `C-x 4 r'
1080: This is now `find-file-read-only-other-window'.
1081:
1082: arrow keys
1083: The arrow keys now have default bindings to move in the appropriate
1084: directions.
1085:
1086: `C-h C-f'
1087: `C-h C-k'
1088: These new help commands enter Info and display the node for a given
1089: Emacs function name or key sequence, respectively.
1090:
1091: `M-a'
1092: `M-e'
1093: In C mode, `M-a' and `M-e' now move by complete C statements
1094: (`c-beginning-of-statement' and `c-end-of-statement').
1095:
1096: `M-q'
1097: `M-q' in C mode now runs `c-fill-paragraph', which is designed for
1098: filling C comments. (We assume you don't want to fill the actual C
1099: code in a C program.)
1100:
1101: `M-x c-up-conditional'
1102: In C mode, `c-up-conditional' moves back to the containing
1103: preprocessor conditional, setting the mark where point was
1104: previously.
1105:
1106: A prefix argument acts as a repeat count. With a negative
1107: argument, this command moves forward to the end of the containing
1108: preprocessor conditional. When going backwards, `#elif' acts like
1109: `#else' followed by `#if'. When going forwards, `#elif' is
1110: ignored.
1111:
1112: `M-x comment-region'
1113: The `comment-region' command adds comment delimiters to the lines
1114: that start in the region, thus commenting them out. With a
1115: negative argument, it deletes comment delimiters from the lines in
1116: the region--this is the inverse of the effect of `comment-region'
1117: without an argument.
1118:
1119: With a positive argument, `comment-region' adds comment delimiters
1120: but duplicates the last character of the comment start sequence as
1121: many times as the argument specifies. This is a way of calling
1122: attention to the comment. In Lisp, you should use an argument of
1123: at least two, because the indentation convention for single
1124: semicolon comments does not leave them at the beginning of a line.
1125:
1126: `M-x super-apropos'
1127: This command is like `apropos' except that it searches for a
1128: regular expression instead of merely a substring.
1129:
1130: If you use a prefix argument (regardless of its value) with
1131: `apropos' or `super-apropos', they also search documentation
1132: strings for matches as well as symbol names. The prefix argument
1133: also controls looking up and printing the key bindings of all
1134: commands.
1135:
1136: `M-x diff'
1137: This new command compares two files, displaying the differences in
1138: an Emacs buffer. The options for the `diff' program come from the
1139: variable `diff-switches', whose value should be a string.
1140:
1141: The buffer of differences has Compilation mode as its major mode,
1142: so you can use `C-x `' to visit successive changed locations in
1143: the two source files, or you can move to a particular hunk of
1144: changes and type `C-c C-c' to move to the corresponding source.
1145: You can also use the other special commands of Compilation mode:
1146: SPC and DEL for scrolling, and `M-p' and `M-n' for cursor motion.
1147:
1148: `M-x diff-backup'
1149: The command `diff-backup' compares a specified file with its most
1150: recent backup. If you specify the name of a backup file,
1151: `diff-backup' compares it with the source file that it is a backup
1152: of.
1153:
1154:
1155: File: emacs, Node: Search Changes, Next: Filling Changes, Prev: New Commands, Up: Version 19
1156:
1157: Changes in Incremental Search
1158: =============================
1159:
1160: The most important change in incremental search is that RET now
1161: terminates a search, and ESC does not. The other changes are useful,
1162: but not vital to know about.
1163:
1164: * The character to terminate an incremental search is now RET. This
1165: is for compatibility with the way most other arguments are read.
1166:
1167: To search for a newline in an incremental search, type LFD (also
1168: known as `C-j').
1169:
1170: (This change is somewhat of an experiment; it might be taken back
1171: by the time Emacs 19 is really released.)
1172:
1173: * Incremental search now maintains a ring of previous search
1174: strings. Use `M-p' and `M-n' to move through the ring to pick a
1175: search string to reuse. These commands leave the selected search
1176: ring element in the minibuffer, where you can edit it. Type RET
1177: to finish editing and search for the chosen string.
1178:
1179: * When there is an upper-case letter in the search string, then the
1180: search is case sensitive.
1181:
1182: * Incremental search is now implemented as a major mode. When you
1183: type `C-s', it switches temporarily to a different keymap which
1184: defines each key to do what it ought to do for incremental search.
1185: This has next to no effect on the user-visible behavior of
1186: searching, but makes it easier to customize that behavior.
1187:
1188:
1189: File: emacs, Node: Filling Changes, Next: TeX Mode Changes, Prev: Search Changes, Up: Version 19
1190:
1191: Changes in Fill Commands
1192: ========================
1193:
1194: * `fill-individual-paragraphs' now has two modes. Its default mode
1195: is that any change in indentation starts a new paragraph. The
1196: alternate mode is that only separator lines separate paragraphs;
1197: this can handle paragraphs with extra indentation on the first
1198: line. To select the alternate mode, set
1199: `fill-individual-varying-indent' to a non-`nil' value.
1200:
1201: * Filling is now partially controlled by a new minor mode, Adaptive
1202: Fill mode. When this mode is enabled (and it is enabled by
1203: default), if you use `fill-region-as-paragraph' on an indented
1204: paragraph and you don't have a fill prefix, it uses the
1205: indentation of the second line of the paragraph as the fill prefix.
1206:
1207: Adaptive Fill mode doesn't have much effect on `M-q' in most major
1208: modes, because an indented line will probably count as a paragraph
1209: starter and thus each line of an indented paragraph will be
1210: considered a paragraph of its own.
1211:
1212: * `M-q' in C mode now runs `c-fill-paragraph', which is designed for
1213: filling C comments. (We assume you don't want to fill the actual C
1214: code in a C program.)
1215:
1216:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.