|
|
1.1 root 1: Info file emacs, produced by texinfo-format-buffer -*-Text-*-
2: from file emacs.tex
3:
4: This file documents the GNU Emacs editor.
5:
6: Copyright (C) 1985, 1986 Richard M. Stallman.
7:
8: Permission is granted to make and distribute verbatim copies of
9: this manual provided the copyright notice and this permission notice
10: are preserved on all copies.
11:
12: Permission is granted to copy and distribute modified versions of this
13: manual under the conditions for verbatim copying, provided also that the
14: sections entitled "The GNU Manifesto", "Distribution" and "GNU Emacs
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 manual
20: into another language, under the above conditions for modified versions,
21: except that the sections entitled "The GNU Manifesto", "Distribution"
22: and "GNU Emacs General Public License" may be included in a translation
23: approved by the author instead of in the original English.
24:
25:
26: File: emacs Node: Fortran Columns, Prev: Fortran Comments, Up: Fortran, Next: Fortran Abbrev
27:
28: Columns
29: -------
30:
31: `C-c C-r'
32: Displays a "column ruler" momentarily above the current line
33: (`fortran-column-ruler').
34: `C-c C-w'
35: Splits the current window horizontally so that it is 72 columns wide.
36: This may help you avoid going over that limit (`fortran-window-create').
37:
38: The command `C-c C-r' (`fortran-column-ruler') shows a column
39: ruler momentarily above the current line. The comment ruler is two lines
40: of text that show you the locations of columns with special significance
41: in Fortran programs. Square brackets show the limits of the columns for
42: line numbers, and curly brackets show the limits of the columns for the
43: statement body. Column numbers appear above them.
44:
45: Note that the column numbers count from zero, as always in GNU Emacs. As
46: a result, the numbers may not be those you are familiar with; but the
47: actual positions in the line are standard Fortran.
48:
49: The text used to display the column ruler is the value of the variable
50: `fortran-comment-ruler'. By changing this variable, you can change
51: the display.
52:
53: For even more help, use `C-c C-w' (`fortran-create-window'), a
54: command which splits the current window horizontally, making a window 72
55: columns wide. By editing in this window you can immediately see when you
56: make a line too wide to be correct Fortran.
57:
58:
59: File: emacs Node: Fortran Abbrev, Prev: Fortran Columns, Up: Fortran
60:
61: Fortran Keyword Abbrevs
62: -----------------------
63:
64: Fortran mode provides many built-in abbrevs for common keywords and
65: declarations. These are the same sort of abbrev that you can define
66: yourself. To use them, you must turn on Abbrev mode. *Note Abbrevs::.
67:
68: The built-in abbrevs are unusual in one way: they all start with a
69: semicolon. You cannot normally use semicolon in an abbrev, but Fortran
70: mode makes this possible by changing the syntax of semicolon to "word
71: constituent".
72:
73: For example, one built-in Fortran abbrev is `;c' for `continue'. If you
74: insert `;c' and then insert a punctuation character such as a space or a
75: newline, the `;c' will change automatically to `continue', provided Abbrev
76: mode is enabled.
77:
78: Type `;?' or `;C-h' to display a list of all the built-in
79: Fortran abbrevs and what they stand for.
80:
81:
82: File: emacs Node: Running, Prev: Programs, Up: Top, Next: Abbrevs
83:
84: Compiling and Testing Programs
85: ******************************
86:
87: The previous chapter discusses the Emacs commands that are useful for
88: making changes in programs. This chapter deals with commands that assist
89: in the larger process of developing and maintaining programs.
90:
91: * Menu:
92:
93: * Compilation:: Compiling programs in languages other than Lisp
94: (C, Pascal, etc.)
95: * Modes: Lisp Modes. Various modes for editing Lisp programs, with
96: different facilities for running the Lisp programs.
97: * Libraries: Lisp Libraries. Creating Lisp programs to run in Emacs.
98: * Interaction: Lisp Interaction. Executing Lisp in an Emacs buffer.
99: * Eval: Lisp Eval. Executing a single Lisp expression in Emacs.
100: * Debug: Lisp Debug. Debugging Lisp programs running in Emacs.
101: * External Lisp:: Communicating through Emacs with a separate Lisp.
102:
103:
104: File: emacs Node: Compilation, Prev: Running, Up: Running, Next: Lisp Modes
105:
106: Running `make', or Compilers Generally
107: ======================================
108:
109: Emacs can run compilers for noninteractive languages such as C and
110: Fortran as inferior processes, feeding the error log into an Emacs buffer.
111: It can also parse the error messages and visit the files in which errors
112: are found, moving point right to the line where the error occurred.
113:
114: `M-x compile'
115: Run a compiler asynchronously under Emacs, with error messages to
116: `*compilation*' buffer.
117: `M-x grep'
118: Run `grep' asynchronously under Emacs, with matching lines
119: listed in the buffer named `*compilation*'.
120: `M-x kill-compiler'
121: `M-x kill-grep'
122: Kill the running compilation or `grep' subprocess.
123: `C-x `'
124: Visit the locus of the next compiler error message or `grep' match.
125:
126: To run `make' or another compiler, do `M-x compile'. This command
127: reads a shell command line using the minibuffer, and then executes the
128: specified command line in an inferior shell with output going to the buffer
129: named `*compilation*'. The current buffer's default directory is used
130: as the working directory for the execution of the command; normally,
131: therefore, the makefile comes from this directory.
132:
133: When the shell command line is read, the minibuffer appears containing a
134: default command line, which is the command you used the last time you did
135: `M-x compile'. If you type just RET, the same command line is used
136: again. The first `M-x compile' provides `make -k' as the default.
137: The default is taken from the variable `compile-command'; if the
138: appropriate compilation command for a file is something other than
139: `make -k', it can be useful to have the file specify a local value for
140: `compile-command' (*Note File Variables::).
141:
142: Starting a compilation causes the buffer `*compilation*' to be
143: displayed in another window but not selected. Its mode line tells you
144: whether compilation is finished, with the word `run' or `exit' inside
145: the parentheses. You do not have to keep this buffer visible; compilation
146: continues in any case.
147:
148: To kill the compilation process, do `M-x kill-compilation'. You will see
149: that the mode line of the `*compilation*' buffer changes to say `signal'
150: instead of `run'. Starting a new compilation also kills any running
151: compilation, as only one can exist at any time. However, this requires
152: confirmation before actually killing a compilation that is running.
153:
154: To parse the compiler error messages, type `C-x `' (`next-error'). The
155: character following the `C-x' is the grave accent, not the single
156: quote. This command displays the buffer `*compilation*' in one window
157: and the buffer in which the next error occurred in another window. Point
158: in that buffer is moved to the line where the error was found. The
159: corresponding error message is scrolled to the top of the window in which
160: `*compilation*' is displayed.
161:
162: The first time `C-x `' is used after the start of a compilation, it
163: parses all the error messages, visits all the files that have error
164: messages, and makes markers pointing at the lines that the error messages
165: refer to. Then it moves to the first error message location. Subsequent
166: uses of `C-x `' advance down the data set up by the first use. When
167: the preparsed error messages are exhausted, the next `C-x `' checks for
168: any more error messages that have come in; this is useful if you start
169: editing the compiler errors while the compilation is still going on. If no
170: more error messages have come in, `C-x `' reports an error.
171:
172: `C-u C-x `' discards the preparsed error message data and parses the
173: `*compilation*' buffer over again, then displaying the first error.
174: This way, you can process the same set of errors again.
175:
176: Instead of running a compiler, you can run `grep' and see the lines
177: on which matches were found. To do this, type `M-x grep' with an argument
178: line that contains the same arguments you would give `grep' when running
179: it normally: a `grep'-style regexp (usually in singlequotes to quote
180: the shell's special characters) followed by filenames which may use wildcards.
181: The output from `grep' goes in the `*compilation*' buffer and the
182: lines that matched can be found with `C-x `' as if they were compilation
183: errors.
184:
185: Note: a shell is used to run the compile command, but the shell is told
186: that it should be noninteractive. This means in particular that the shell
187: starts up with no prompt. If you find your usual shell prompt making an
188: unsightly appearance in the `*compilation*' buffer, it means you have
189: made a mistake in your shell's init file (`.cshrc' or `.shrc' or
190: ...) by setting the prompt unconditionally. The shell init file should
191: set the prompt only if there already is a prompt. In `csh', here is
192: how to do it:
193:
194: if ($?prompt) set prompt = ...
195:
196:
197: File: emacs Node: Lisp Modes, Prev: Compilation, Up: Running, Next: Lisp Libraries
198:
199: Major Modes for Lisp
200: ====================
201:
202: Emacs has four different major modes for Lisp. They are the same in
203: terms of editing commands, but differ in the commands for executing Lisp
204: expressions.
205:
206: Emacs-Lisp mode
207: The mode for editing source files of programs to run in Emacs Lisp.
208: This mode defines `C-M-x' to evaluate the current defun.
209: *Note Lisp Libraries::.
210: Lisp Interaction mode
211: The mode for an interactive session with Emacs Lisp. It defines
212: LFD to evaluate the sexp before point and insert its value in the
213: buffer. *Note Lisp Interaction::.
214: Lisp mode
215: The mode for editing source files of programs that run in Lisps other
216: than Emacs Lisp. This mode defines `C-M-x' to send the current defun
217: to an inferior Lisp process. *Note External Lisp::.
218: Inferior Lisp mode
219: The mode for an interactive session with an inferior Lisp process.
220: This mode combines the special features of Lisp mode and Shell mode
221: (*Note Shell Mode::).
222: Scheme mode
223: Like Lisp mode but for Scheme programs.
224: Inferior Scheme mode
225: The mode for an interactive session with an inferior Scheme process.
226:
227:
228: File: emacs Node: Lisp Libraries, Prev: Lisp Modes, Up: Running, Next: Lisp Eval
229:
230: Libraries of Lisp Code for Emacs
231: ================================
232:
233: Lisp code for Emacs editing commands is stored in files whose names
234: conventionally end in `.el'. This ending tells Emacs to edit them in
235: Emacs-Lisp mode (*Note Lisp Modes::).
236:
237: * Menu:
238:
239: * Loading:: Loading libraries of Lisp code into Emacs for use.
240: * Compiling Libraries:: Compiling a library makes it load and run faster.
241: * Mocklisp:: Converting Mocklisp to Lisp so GNU Emacs can run it.
242:
243:
244: File: emacs Node: Loading, Prev: Lisp Libraries, Up: Lisp Libraries, Next: Compiling Libraries
245:
246: Loading Libraries
247: -----------------
248:
249: To execute a file of Emacs Lisp, use `M-x load-file'. This command
250: reads a file name using the minibuffer and then executes the contents of
251: that file as Lisp code. It is not necessary to visit the file first;
252: in any case, this command reads the file as found on disk, not text in
253: an Emacs buffer.
254:
255: Once a file of Lisp code is installed in the Emacs Lisp library
256: directories, users can load it using `M-x load-library'. Programs can
257: load it by calling `load-library', or with `load', a more primitive
258: function that is similar but accepts some additional arguments.
259:
260: `M-x load-library' differs from `M-x load-file' in that it
261: searches a sequence of directories and tries three file names in each
262: directory. The three names are, first, the specified name with `.elc'
263: appended; second, with `.el' appended; third, the specified
264: name alone. A `.elc' file would be the result of compiling the Lisp
265: file into byte code; it is loaded if possible in preference to the Lisp
266: file itself because the compiled file will load and run faster.
267:
268: Because the argument to `load-library' is usually not in itself
269: a valid file name, file name completion is not available. Indeed, when
270: using this command, you usually do not know exactly what file name
271: will be used.
272:
273: The sequence of directories searched by `M-x load-library' is
274: specified by the variable `load-path', a list of strings that are
275: directory names. The default value of the list contains the directory where
276: the Lisp code for Emacs itself is stored. If you have libraries of
277: your own, put them in a single directory and add that directory
278: to `load-path'. `nil' in this list stands for the current default
279: directory, but it is probably not a good idea to put `nil' in the
280: list. If you find yourself wishing that `nil' were in the list,
281: most likely what you really want to do is use `M-x load-file'
282: this once.
283:
284: Often you do not have to give any command to load a library, because the
285: commands defined in the library are set up to "autoload" that library.
286: Running any of those commands causes `load' to be called to load the
287: library; this replaces the autoload definitions with the real ones from the
288: library.
289:
290: If autoloading a file does not finish, either because of an error or
291: because of a `C-g' quit, all function definitions made by the file are
292: undone automatically. So are any calls to `provide'. As a consequence,
293: if you use one of the autoloadable commands again, the entire file will be
294: loaded a second time. This prevents problems where the command is no
295: longer autoloading but it works wrong because not all the file was loaded.
296: Function definitions are undone only for autoloading; explicit calls to
297: `load' do not undo anything if loading is not completed.
298:
299:
300: File: emacs Node: Compiling Libraries, Prev: Loading, Up: Lisp Libraries, Next: Mocklisp
301:
302: Compiling Libraries
303: -------------------
304:
305: Emacs Lisp code can be compiled into byte-code which loads faster,
306: takes up less space when loaded, and executes faster.
307:
308: The way to make a byte-code compiled file from an Emacs-Lisp source file
309: is with `M-x byte-compile-file'. The default argument for this
310: function is the file visited in the current buffer. It reads the specified
311: file, compiles it into byte code, and writes an output file whose name is
312: made by appending `c' to the input file name. Thus, the file
313: `rmail.el' would be compiled into `rmail.elc'.
314:
315: To recompile the changed Lisp files in a directory, use `M-x
316: byte-recompile-directory'. Specify just the directory name as an argument.
317: Each `.el' file that has been byte-compiled before is byte-compiled
318: again if it has changed since the previous compilation. A numeric argument
319: to this command tells it to offer to compile each `.el' file that has
320: not already been compiled. You must answer `y' or `n' to each
321: offer.
322:
323: Emacs can be invoked noninteractively from the shell to do byte compilation
324: with the aid of the function `batch-byte-compile'. In this case,
325: the files to be compiled are specified with command-line arguments.
326: Use a shell command of the form
327:
328: emacs -batch -f batch-byte-compile FILES...
329:
330: Directory names may also be given as arguments;
331: `byte-recompile-directory' is invoked (in effect) on each such directory.
332: `batch-byte-compile' uses all the remaining command-line arguments as
333: file or directory names, then kills the Emacs process.
334:
335: `M-x disassemble' explains the result of byte compilation. Its
336: argument is a function name. It displays the byte-compiled code in a help
337: window in symbolic form, one instruction per line. If the instruction
338: refers to a variable or constant, that is shown too.
339:
340:
341: File: emacs Node: Mocklisp, Prev: Compiling Libraries, Up: Lisp Libraries
342:
343: Converting Mocklisp to Lisp
344: ---------------------------
345:
346: GNU Emacs can run Mocklisp files by converting them to Emacs Lisp first.
347: To convert a Mocklisp file, visit it and then type `M-x
348: convert-mocklisp-buffer'. Then save the resulting buffer of Lisp file in a
349: file whose name ends in `.el' and use the new file as a Lisp library.
350:
351: It does not currently work to byte-compile converted Mocklisp code.
352: This is because converted Mocklisp code uses some special Lisp features
353: to deal with Mocklisp's incompatible ideas of how arguments are evaluated
354: and which values signify "true" or "false".
355:
356:
357: File: emacs Node: Lisp Eval, Prev: Lisp Libraries, Up: Running, Next: Lisp Debug
358:
359: Evaluating Emacs-Lisp Expressions
360: =================================
361:
362: Lisp programs intended to be run in Emacs should be edited in Emacs-Lisp
363: mode; this will happen automatically for file names ending in `.el'.
364: By contrast, Lisp mode itself is used for editing Lisp programs intended
365: for other Lisp systems. Emacs-Lisp mode can be selected with the command
366: `M-x emacs-lisp-mode'.
367:
368: For testing of Lisp programs to run in Emacs, it is useful to be able to
369: evaluate part of the program as it is found in the Emacs buffer. For
370: example, after changing the text of a Lisp function definition, evaluating
371: the definition installs the change for future calls to the function.
372: Evaluation of Lisp expressions is also useful in any kind of editing task
373: for invoking noninteractive functions (functions that are not commands).
374:
375: `M-ESC'
376: Read a Lisp expression in the minibuffer, evaluate it, and print the
377: value in the minibuffer (`eval-expression').
378: `C-x C-e'
379: Evaluate the Lisp expression before point, and print the value in the
380: minibuffer (`eval-last-sexp').
381: `C-M-x'
382: Evaluate the defun containing or after point, and print the value in
383: the minibuffer (`eval-defun').
384: `M-x eval-region'
385: Evaluate all the Lisp expressions in the region.
386: `M-x eval-current-buffer'
387: Evaluate all the Lisp expressions in the buffer.
388:
389: `M-ESC' (`eval-expression') is the most basic command for evaluating
390: a Lisp expression interactively. It reads the expression using the
391: minibuffer, so you can execute any expression on a buffer regardless of
392: what the buffer contains. When the expression is evaluated, the current
393: buffer is once again the buffer that was current when `M-ESC' was
394: typed.
395:
396: `M-ESC' can easily confuse users who do not understand it, especially on
397: keyboards with autorepeat where it can result from holding down the ESC key
398: for too long. Therefore, `eval-expression' is normally a disabled command.
399: Attempting to use this command asks for confirmation and gives you the
400: option of enabling it; once you enable the command, confirmation will no
401: longer be required for it. *Note Disabling::.
402:
403: In Emacs-Lisp mode, the key `C-M-x' is bound to the function `eval-defun',
404: which parses the defun containing or following point as a Lisp expression
405: and evaluates it. The value is printed in the echo area. This command is
406: convenient for installing in the Lisp environment changes that you have
407: just made in the text of a function definition.
408:
409: The command `C-x C-e' (`eval-last-sexp') performs a similar job
410: but is available in all major modes, not just Emacs-Lisp mode. It finds
411: the sexp before point, reads it as a Lisp expression, evaluates it, and
412: prints the value in the echo area. It is sometimes useful to type in an
413: expression and then, with point still after it, type `C-x C-e'.
414:
415: If `C-M-x' or `C-x C-e' is given a numeric argument, it prints the value
416: by insertion into the current buffer at point, rather than in the echo
417: area. The argument value does not matter.
418:
419: The most general command for evaluating Lisp expressions from a buffer is
420: `eval-region'. `M-x eval-region' parses the text of the region as one or
421: more Lisp expressions, evaluating them one by one. `M-x eval-current-buffer'
422: is similar but evaluates the entire buffer. This is a reasonable way to
423: install the contents of a file of Lisp code that you are just ready to
424: test. After finding and fixing a bug, use `C-M-x' on each function
425: that you change, to keep the Lisp world in step with the source file.
426:
427:
428: File: emacs Node: Lisp Debug, Prev: Lisp Eval, Up: Running, Next: Lisp Interaction
429:
430: The Emacs-Lisp Debugger
431: =======================
432:
433: GNU Emacs contains a debugger for Lisp programs executing inside it.
434: This debugger is normally not used; many commands frequently get Lisp
435: errors when invoked in inappropriate contexts (such as `C-f' at the end of
436: the buffer) and it would be very unpleasant for that to enter a special
437: debugging mode. When you want to make Lisp errors invoke the debugger, you
438: must set the variable `debug-on-error' to non-`nil'. Quitting with `C-g'
439: is not considered an error, and `debug-on-error' has no effect on the
440: handling of `C-g'. However, if you set `debug-on-quit' non-`nil', `C-g'
441: will invoke the debugger. This can be useful for debugging an infinite
442: loop; type `C-g' once the loop has had time to reach its steady state.
443: `debug-on-quit' has no effect on errors.
444:
445: You can also cause the debugger to be entered when a specified function
446: is called, or at a particular place in Lisp code. Use `M-x debug-on-entry'
447: with argument FUN-NAME to cause function FUN-NAME to enter the debugger as
448: soon as it is called. Use `M-x cancel-debug-on-entry' to make the function
449: stop entering the debugger when called. (Redefining the function also does
450: this.) To enter the debugger from some other place in Lisp code, you must
451: insert the expression `(debug)' there and install the changed code with
452: `C-M-x'. *Note Lisp Eval::.
453:
454: When the debugger is entered, it displays the previously selected buffer
455: in one window and a buffer named `*Backtrace*' in another window. The
456: backtrace buffer contains one line for each level of Lisp function
457: execution currently going on. At the beginning of this buffer is a message
458: describing the reason that the debugger was invoked (such as, what error
459: message if it was invoked due to an error).
460:
461: The backtrace buffer is read-only, and is in a special major mode,
462: Backtrace mode, in which letters are defined as debugger commands. The
463: usual Emacs editing commands are available; you can switch windows to
464: examine the buffer that was being edited at the time of the error, and you
465: can also switch buffers, visit files, and do any other sort of editing.
466: However, the debugger is a recursive editing level (*Note Recursive Edit::)
467: and it is wise to go back to the backtrace buffer and exit the debugger
468: officially when you don't want to use it any more. Exiting the debugger
469: kills the backtrace buffer.
470:
471: The contents of the backtrace buffer show you the functions that are
472: executing and the arguments that were given to them. It has the additional
473: purpose of allowing you to specify a stack frame by moving point to the line
474: describing that frame. The frame whose line point is on is considered the
475: "current frame". Some of the debugger commands operate on the current
476: frame. Debugger commands are mainly used for stepping through code an
477: expression at a time. Here is a list of them.
478:
479: `c'
480: Exit the debugger and continue execution. In most cases, execution of
481: the program continues as if the debugger had never been entered (aside
482: from the effect of any variables or data structures you may have
483: changed while inside the debugger). This includes entry to the
484: debugger due to function entry or exit, explicit invocation, quitting
485: or certain errors. Most errors cannot be continued; trying to
486: continue one of them causes the same error to occur again.
487: `d'
488: Continue execution, but enter the debugger the next time a Lisp
489: function is called. This allows you to step through the
490: subexpressions of an expression, seeing what values the subexpressions
491: compute and what else they do.
492:
493: The stack frame made for the function call which enters the debugger
494: in this way will be flagged automatically for the debugger to be called
495: when the frame is exited. You can use the `u' command to cancel
496: this flag.
497: `b'
498: Set up to enter the debugger when the current frame is exited. Frames
499: that will invoke the debugger on exit are flagged with stars.
500: `u'
501: Don't enter the debugger when the current frame is exited. This
502: cancels a `b' command on that frame.
503: `e'
504: Read a Lisp expression in the minibuffer, evaluate it, and print the
505: value in the echo area. This is the same as the command `M-ESC',
506: except that `e' is not normally disabled like `M-ESC'.
507: `q'
508: Terminate the program being debugged; return to top-level Emacs
509: command execution.
510:
511: If the debugger was entered due to a `C-g' but you really want
512: to quit, not to debug, use the `q' command.
513: `r'
514: Return a value from the debugger. The value is computed by reading an
515: expression with the minibuffer and evaluating it.
516:
517: The value returned by the debugger makes a difference when the debugger
518: was invoked due to exit from a Lisp call frame (as requested with `b');
519: then the value specified in the `r' command is used as the value of
520: that frame.
521:
522: The debugger's return value also matters with many errors. For example,
523: `wrong-type-argument' errors will use the debugger's return value
524: instead of the invalid argument; `no-catch' errors will use the
525: debugger value as a throw tag instead of the tag that was not found.
526: If an error was signaled by calling the Lisp function `signal',
527: the debugger's return value is returned as the value of `signal'.
528:
529:
530: File: emacs Node: Lisp Interaction, Prev: Lisp Debug, Up: Running, Next: External Lisp
531:
532: Lisp Interaction Buffers
533: ========================
534:
535: The buffer `*scratch*' which is selected when Emacs starts up is
536: provided for evaluating Lisp expressions interactively inside Emacs. Both
537: the expressions you evaluate and their output goes in the buffer.
538:
539: The `*scratch*' buffer's major mode is Lisp Interaction mode, which
540: is the same as Emacs-Lisp mode except for one command, LFD. In
541: Emacs-Lisp mode, LFD is an indentation command, as usual. In Lisp
542: Interaction mode, LFD is bound to `eval-print-last-sexp'. This
543: function reads the Lisp expression before point, evaluates it, and inserts
544: the value in printed representation before point.
545:
546: Thus, the way to use the `*scratch*' buffer is to insert Lisp expressions
547: at the end, ending each one with LFD so that it will be evaluated.
548: The result is a complete typescript of the expressions you have evaluated
549: and their values.
550:
551: The rationale for this feature is that Emacs must have a buffer when it
552: starts up, but that buffer is not useful for editing files since a new
553: buffer is made for every file that you visit. The Lisp interpreter
554: typescript is the most useful thing I can think of for the initial buffer
555: to do. `M-x lisp-interaction-mode' will put any buffer in Lisp
556: Interaction mode.
557:
558:
559: File: emacs Node: External Lisp, Prev: Lisp Interaction, Up: Running
560:
561: Running an External Lisp
562: ========================
563:
564: Emacs has facilities for running programs in other Lisp systems. You can
565: run a Lisp process as an inferior of Emacs, and pass expressions to it to
566: be evaluated. You can also pass changed function definitions directly from
567: the Emacs buffers in which you edit the Lisp programs to the inferior Lisp
568: process.
569:
570: To run an inferior Lisp process, type `M-x run-lisp'. This runs the
571: program named `lisp', the same program you would run by typing
572: `lisp' as a shell command, with both input and output going through an
573: Emacs buffer named `*lisp*'. That is to say, any "terminal output"
574: from Lisp will go into the buffer, advancing point, and any "terminal
575: input" for Lisp comes from text in the buffer. To give input to Lisp, go
576: to the end of the buffer and type the input, terminated by RET. The
577: `*lisp*' buffer is in Inferior Lisp mode, a mode which has all the
578: special characteristics of Lisp mode and Shell mode (*Note Shell Mode::).
579:
580: For the source files of programs to run in external Lisps, use Lisp mode.
581: This mode can be selected with `M-x lisp-mode', and is used automatically
582: for files whose names end in `.l' or `.lisp', as most Lisp
583: systems usually expect.
584:
585: When you edit a function in a Lisp program you are running, the easiest
586: way to send the changed definition to the inferior Lisp process is the key
587: `C-M-x'. In Lisp mode, this runs the function `lisp-send-defun',
588: which finds the defun around or following point and sends it as input to
589: the Lisp process. (Emacs can send input to any inferior process regardless
590: of what buffer is current.)
591:
592: Contrast the meanings of `C-M-x' in Lisp mode (for editing programs
593: to be run in another Lisp system) and Emacs-Lisp mode (for editing Lisp
594: programs to be run in Emacs): in both modes it has the effect of installing
595: the function definition that point is in, but the way of doing so is
596: different according to where the relevant Lisp environment is found.
597: *Note Lisp Modes::.
598:
599:
600: File: emacs Node: Abbrevs, Prev: Running, Up: Top, Next: Picture
601:
602: Abbrevs
603: *******
604:
605: An "abbrev" is a word which "expands", if you insert it, into some
606: different text. Abbrevs are defined by the user to expand in specific
607: ways. For example, you might define `foo' as an abbrev expanding to
608: `find outer otter'. With this abbrev defined, you would be able to
609: get `find outer otter ' into the buffer by typing `f o o SPC'.
610:
611: Abbrevs expand only when Abbrev mode (a minor mode) is enabled.
612: Disabling Abbrev mode does not cause abbrev definitions to be forgotten,
613: but they do not expand until Abbrev mode is enabled again. The command
614: `M-x abbrev-mode' toggles Abbrev mode; with a numeric argument, it
615: turns Abbrev mode on if the argument is positive, off otherwise.
616: *Note Minor Modes::. `abbrev-mode' is also a variable; Abbrev mode is
617: on when the variable is non-`nil'. The variable `abbrev-mode'
618: automatically becomes local to the current buffer when it is set.
619:
620: Abbrev definitions can be "mode-specific"---active only in one major
621: mode. Abbrevs can also have "global" definitions that are active in
622: all major modes. The same abbrev can have a global definition and various
623: mode-specific definitions for different major modes. A mode specific
624: definition for the current major mode overrides a global definition.
625:
626: Abbrevs can be defined interactively during the editing session. Lists
627: of abbrev definitions can also be saved in files and reloaded in later
628: sessions. Some users keep extensive lists of abbrevs that they load in
629: every session.
630:
631: A second kind of abbreviation facility is called the "dynamic
632: expansion". Dynamic abbrev expansion happens only when you give an
633: explicit command and the result of the expansion depends only on the
634: current contents of the buffer. *Note Dynamic Abbrevs::.
635:
636: * Menu:
637:
638: * Defining Abbrevs:: Defining an abbrev, so it will expand when typed.
639: * Expanding Abbrevs:: Controlling expansion: prefixes, canceling expansion.
640: * Editing Abbrevs:: Viewing or editing the entire list of defined abbrevs.
641: * Saving Abbrevs:: Saving the entire list of abbrevs for another session.
642: * Dynamic Abbrevs:: Abbreviations for words already in the buffer.
643:
644:
645: File: emacs Node: Defining Abbrevs, Prev: Abbrevs, Up: Abbrevs, Next: Expanding Abbrevs
646:
647: Defining Abbrevs
648: ================
649:
650: `C-x +'
651: Define an abbrev to expand into some text before point
652: (`add-global-abbrev').
653: `C-x C-a'
654: Similar, but define an abbrev available only in the current major mode
655: (`add-mode-abbrev').
656: `C-x -'
657: Define a word in the buffer as an abbrev (`inverse-add-global-abbrev').
658: `C-x C-h'
659: Define a word in the buffer as a mode-specific abbrev
660: (`inverse-add-mode-abbrev').
661: `M-x kill-all-abbrevs'
662: After this command, there are no abbrev definitions in effect.
663:
664: The usual way to define an abbrev is to enter the text you want the
665: abbrev to expand to, position point after it, and type `C-x +'
666: (`add-global-abbrev'). This reads the abbrev itself using the
667: minibuffer, and then defines it as an abbrev for one or more words before
668: point. Use a numeric argument to say how many words before point should be
669: taken as the expansion. For example, to define the abbrev `foo' as
670: mentioned above, insert the text `find outer otter' and then type
671: `C-u 3 C-x + f o o RET'.
672:
673: An argument of zero to `C-x +' means to use the contents of the
674: region as the expansion of the abbrev being defined.
675:
676: The command `C-x C-a' (`add-mode-abbrev') is similar, but
677: defines a mode-specific abbrev. Mode specific abbrevs are active only in a
678: particular major mode. `C-x C-a' defines an abbrev for the major mode
679: in effect at the time `C-x C-a' is typed. The arguments work the same
680: as for `C-x +'.
681:
682: If the text of the abbrev you want is already in the buffer instead of
683: the expansion, use command `C-x -' (`inverse-add-global-abbrev') instead of
684: `C-x +', or use `C-x C-h' (`inverse-add-mode-abbrev') instead of `C-x C-a'.
685: These commands are called "inverse" because they invert the meaning of the
686: argument found in the buffer and the argument read using the minibuffer.
687:
688: To change the definition of an abbrev, just add the new definition. You
689: will be asked to confirm if the abbrev has a prior definition. To remove
690: an abbrev definition, give a negative argument to `C-x +' or `C-x
691: C-a'. You must choose the command to specify whether to kill a global
692: definition or a mode-specific definition for the current mode, since those
693: two definitions are independent for one abbrev.
694:
695: `M-x kill-all-abbrevs' removes all the abbrev definitions there are.
696:
697:
698: File: emacs Node: Expanding Abbrevs, Prev: Defining Abbrevs, Up: Abbrevs, Next: Editing Abbrevs
699:
700: Controlling Abbrev Expansion
701: ============================
702:
703: An abbrev expands whenever it is present in the buffer just before point
704: and a self-inserting punctuation character (SPC, comma, etc.) is
705: typed. Most often the way an abbrev is used is to insert the abbrev
706: followed by punctuation.
707:
708: Abbrev expansion preserves case; thus, `foo' expands into `find outer
709: otter'; `Foo' into `Find outer otter', and `FOO' into `FIND OUTER OTTER' or
710: `Find Outer Otter' according to the variable `abbrev-all-caps' (a non-`nil'
711: value chooses the first of the two expansions).
712:
713: These two commands are used to control abbrev expansion:
714:
715: `M-''
716: Separate a prefix from a following abbrev to be expanded
717: (`abbrev-prefix-mark').
718: `C-x ''
719: Expand the abbrev before point (`expand-abbrev').
720: This is effective even when Abbrev mode is not enabled.
721: `M-x unexpand-abbrev'
722: Undo last abbrev expansion.
723: `M-x expand-region-abbrevs'
724: Expand some or all abbrevs found in the region.
725:
726: You may wish to expand an abbrev with a prefix attached; for example, if
727: `cnst' expands into `construction', you might want to use it to enter
728: `reconstruction'. It does not work to type `recnst', because that is not
729: necessarily a defined abbrev. What does work is to use the command `M-''
730: (`abbrev-prefix-mark') in between the prefix `re' and the abbrev `cnst'.
731: First, insert `re'. Then type `M-''; this inserts a minus sign in the
732: buffer to indicate that it has done its work. Then insert the abbrev
733: `cnst'; the buffer now contains `re-cnst'. Now insert a punctuation
734: character to expand the abbrev `cnst' into `construction'. The minus sign
735: is deleted at this point, because `M-'' left word for this to be done. The
736: resulting text is the desired `reconstruction'.
737:
738: If you actually want the text of the abbrev in the buffer, rather than
739: its expansion, you can accomplish this by inserting the following
740: punctuation with `C-q'. Thus, `foo C-q -' leaves `foo-' in the
741: buffer.
742:
743: If you expand an abbrev by mistake, you can undo the expansion (replace
744: the expansion by the original abbrev text) with `M-x unexpand-abbrev'.
745: `C-_' (`undo') can also be used to undo the expansion; but first
746: it will undo the insertion of the following punctuation character!
747:
748: `M-x expand-region-abbrevs' searches through the region for defined
749: abbrevs, and for each one found offers to replace it with its expansion.
750: This command is useful if you have typed in text using abbrevs but forgot
751: to turn on Abbrev mode first. It may also be useful together with a
752: special set of abbrev definitions for making several global replacements at
753: once. This command is effective even if Abbrev mode is not enabled.
754:
755:
756: File: emacs Node: Editing Abbrevs, Prev: Expanding Abbrevs, Up: Abbrevs, Next: Saving Abbrevs
757:
758: Examining and Editing Abbrevs
759: =============================
760:
761: `M-x list-abbrevs'
762: Print a list of all abbrev definitions.
763: `M-x edit-abbrevs'
764: Edit a list of abbrevs; you can add, alter or remove definitions.
765:
766: The output from `M-x list-abbrevs' looks like this:
767:
768: (lisp-mode-abbrev-table)
769: "dk" 0 "define-key"
770: (global-abbrev-table)
771: "dfn" 0 "definition"
772:
773: (Some blank lines of no semantic significance, and some other abbrev
774: tables, have been omitted.)
775:
776: A line containing a name in parentheses is the header for abbrevs in a
777: particular abbrev table; `global-abbrev-table' contains all the global
778: abbrevs, and the other abbrev tables that are named after major modes
779: contain the mode-specific abbrevs.
780:
781: Within each abbrev table, each nonblank line defines one abbrev. The
782: word at the beginning is the abbrev. The number that appears is the number
783: of times the abbrev has been expanded. Emacs keeps track of this to help
784: you see which abbrevs you actually use, in case you decide to eliminate
785: those that you don't use often. The string at the end of the line is the
786: expansion.
787:
788: `M-x edit-abbrevs' allows you to add, change or kill abbrev
789: definitions by editing a list of them in an Emacs buffer. The list has the
790: same format described above. The buffer of abbrevs is called `*Abbrevs*',
791: and is in Edit-Abbrevs mode. This mode redefines the key `C-c C-c' to
792: install the abbrev definitions as specified in the buffer. The command
793: that does this is `edit-abbrevs-redefine'. Any abbrevs not described
794: in the buffer are eliminated when this is done.
795:
796: `edit-abbrevs' is actually the same as `list-abbrevs' except
797: that it selects the buffer `*Abbrevs*' whereas `list-abbrevs'
798: merely displays it in another window.
799:
800:
801: File: emacs Node: Saving Abbrevs, Prev: Editing Abbrevs, Up: Abbrevs, Next: Dynamic Abbrevs
802:
803: Saving Abbrevs
804: ==============
805:
806: These commands allow you to keep abbrev definitions between editing
807: sessions.
808:
809: `M-x write-abbrev-file'
810: Write a file describing all defined abbrevs.
811: `M-x read-abbrev-file'
812: Read such a file and define abbrevs as specified there.
813: `M-x quietly-read-abbrev-file'
814: Similar but do not display a message about what is going on.
815: `M-x define-abbrevs'
816: Define abbrevs from buffer.
817: `M-x insert-abbrevs'
818: Insert all abbrevs and their expansions into the buffer.
819:
820: `M-x write-abbrev-file' reads a file name using the minibuffer and
821: writes a description of all current abbrev definitions into that file. The
822: text stored in the file looks like the output of `M-x list-abbrevs'.
823: This is used to save abbrev definitions for use in a later session.
824:
825: `M-x read-abbrev-file' reads a file name using the minibuffer and
826: reads the file, defining abbrevs according to the contents of the file.
827: `M-x quietly-read-abbrev-file' is the same except that it does not
828: display a message in the echo area saying that it is doing its work; it
829: is actually useful primarily in the `.emacs' file. If an empty
830: argument is given to either of these functions, the file name used is the
831: value of the variable `abbrev-file-name', which is by default
832: `"~/.abbrev_defs"'.
833:
834: Emacs will offer to save abbrevs automatically if you have changed any of
835: them, whenever it offers to save all files (for `C-x s' or `C-x
836: C-c'). This feature can be inhibited by setting the variable
837: `save-abbrevs' to `nil'.
838:
839: The commands `M-x insert-abbrevs' and `M-x define-abbrevs' are similar to
840: the previous commands but work on text in an Emacs buffer. `M-x
841: insert-abbrevs' inserts text into the current buffer before point,
842: describing all current abbrev definitions; `M-x define-abbrevs' parses the
843: entire current buffer and defines abbrevs accordingly.
844:
845:
846: File: emacs Node: Dynamic Abbrevs, Prev: Saving Abbrevs, Up: Abbrevs
847:
848: Dynamic Abbrev Expansion
849: ========================
850:
851: The abbrev facility described above operates automatically as you insert
852: text, but all abbrevs must be defined explicitly. By contrast,
853: "dynamic abbrevs" allow the meanings of abbrevs to be determined
854: automatically from the contents of the buffer, but dynamic abbrev expansion
855: happens only when you request it explicitly.
856:
857: `M-/'
858: Expand the word in the buffer before point as a "dynamic abbrev",
859: by searching in the buffer for words starting with that abbreviation
860: (`dabbrev-expand').
861:
862: For example, if the buffer contains `does this follow ' and you type
863: `f o M-/', the effect is to insert `follow' because that is the
864: last word in the buffer that starts with `fo'. A numeric argument to
865: `M-/' says to take the second, third, etc. distinct expansion found
866: looking backward from point. Repeating `M-/' searches for an
867: alternative expansion by looking farther back. After the entire buffer
868: before point has been considered, the buffer after point is searched.
869:
870: Dynamic abbrev expansion is completely independent of Abbrev mode; the
871: expansion of a word with `M-/' is completely independent of whether it
872: has a definition as an ordinary abbrev.
873:
874:
875: File: emacs Node: Picture, Prev: Abbrevs, Up: Top, Next: Sending Mail
876:
877: Editing Pictures
878: ****************
879:
880: If you want to create a picture made out of text characters (for example,
881: a picture of the division of a register into fields, as a comment in a
882: program), use the command `edit-picture' to enter Picture mode.
883:
884: In Picture mode, editing is based on the "quarter-plane" model of
885: text, according to which the text characters lie studded on an area that
886: stretches infinitely far to the right and downward. The concept of the end
887: of a line does not exist in this model; the most you can say is where the
888: last nonblank character on the line is found.
889:
890: Of course, Emacs really always considers text as a sequence of
891: characters, and lines really do have ends. But in Picture mode most
892: frequently-used keys are rebound to commands that simulate the
893: quarter-plane model of text. They do this by inserting spaces or by
894: converting tabs to spaces.
895:
896: Most of the basic editing commands of Emacs are redefined by Picture mode
897: to do essentially the same thing but in a quarter-plane way. In addition,
898: Picture mode defines various keys starting with the `C-c' prefix to
899: run special picture editing commands.
900:
901: One of these keys, `C-c C-c', is pretty important. Often a picture
902: is part of a larger file that is usually edited in some other major mode.
903: `M-x edit-picture' records the name of the previous major mode, and
904: then you can use the `C-c C-c' command (`picture-mode-exit') to
905: restore that mode. `C-c C-c' also deletes spaces from the ends of
906: lines, unless given a numeric argument.
907:
908: The commands used in Picture mode all work in other modes (provided the
909: `picture' library is loaded), but are not bound to keys except in
910: Picture mode. Note that the descriptions below talk of moving "one
911: column" and so on, but all the picture mode commands handle numeric
912: arguments as their normal equivalents do.
913:
914: Turning on Picture mode calls the value of the variable `picture-mode-hook'
915: as a function, with no arguments, if that value exists and is non-`nil'.
916:
917: * Menu:
918:
919: * Basic Picture:: Basic concepts and simple commands of Picture Mode.
920: * Insert in Picture:: Controlling direction of cursor motion
921: after "self-inserting" characters.
922: * Tabs in Picture:: Various features for tab stops and indentation.
923: * Rectangles in Picture:: Clearing and superimposing rectangles.
924:
925:
926: File: emacs Node: Basic Picture, Prev: Picture, Up: Picture, Next: Insert in Picture
927:
928: Basic Editing in Picture Mode
929: =============================
930:
931: Most keys do the same thing in Picture mode that they usually do, but do
932: it in a quarter-plane style. For example, `C-f' is rebound to run
933: `picture-forward-column', which is defined to move point one column to the
934: right, by inserting a space if necessary, so that the actual end of the
935: line makes no difference. `C-b' is rebound to run
936: `picture-backward-column', which always moves point left one column,
937: converting a tab to multiple spaces if necessary. `C-n' and `C-p' are
938: rebound to run `picture-move-down' and `picture-move-up', which can either
939: insert spaces or convert tabs as necessary to make sure that point stays in
940: exactly the same column. `C-e' runs `picture-end-of-line', which moves to
941: after the last nonblank character on the line. There is no need to change
942: `C-a', as the choice of screen model does not affect beginnings of lines.
943:
944: Insertion of text is adapted to the quarter-plane screen model through
945: the use of Overwrite mode (*Note Minor Modes::). Self-inserting characters
946: replace existing text, column by column, rather than pushing existing text
947: to the right. RET runs `picture-newline', which just moves to
948: the beginning of the following line so that new text will replace that
949: line.
950:
951: Deletion and killing of text are replaced with erasure. DEL
952: (`picture-backward-clear-column') replaces the preceding character with a
953: space rather than removing it. `C-d' (`picture-clear-column') does the
954: same thing in a forward direction. `C-k' (`picture-clear-line') really
955: kills the contents of lines, but does not ever remove the newlines from the
956: buffer.
957:
958: To do actual insertion, you must use special commands. `C-o'
959: (`picture-open-line') still creates a blank line, but does so after the
960: current line; it never splits a line. `C-M-o', `split-line', makes sense
961: in Picture mode, so it is not changed. LFD (`picture-duplicate-line')
962: inserts below the current line another line with the same contents.
963:
964: Real deletion can be done with `C-w', or with `C-c C-d' (which is
965: defined as `delete-char', as `C-d' is in other modes), or with one
966: of the picture rectangle commands (*Note Rectangles in Picture::).
967:
968:
969: File: emacs Node: Insert in Picture, Prev: Basic Picture, Up: Picture, Next: Tabs in Picture
970:
971: Controlling Motion after Insert
972: ===============================
973:
974: Since "self-inserting" characters in Picture mode just overwrite and
975: move point, there is no essential restriction on how point should be moved.
976: Normally point moves right, but you can specify any of the eight orthogonal
977: or diagonal directions for motion after a "self-inserting" character.
978: This is useful for drawing lines in the buffer.
979:
980: `C-c <'
981: Move left after insertion (`picture-movement-left').
982: `C-c >'
983: Move right after insertion (`picture-movement-right').
984: `C-c ^'
985: Move up after insertion (`picture-movement-up').
986: `C-c .'
987: Move down after insertion (`picture-movement-down').
988: `C-c `'
989: Move up and left ("northwest") after insertion (`picture-movement-nw').
990: `C-c ''
991: Move up and right ("northeast") after insertion
992: (`picture-movement-ne').
993: `C-c /'
994: Move down and left ("southwest") after insertion
995: (`picture-movement-sw').
996: `C-c \'
997: Move down and right ("southeast") after insertion
998: (`picture-movement-se').
999:
1000: Two motion commands move based on the current Picture insertion
1001: direction. The command `C-c C-f' (`picture-motion') moves in the
1002: same direction as motion after "insertion" currently does, while `C-c
1003: C-b' (`picture-motion-reverse') moves in the opposite direction.
1004:
1005:
1006: File: emacs Node: Tabs in Picture, Prev: Insert in Picture, Up: Picture, Next: Rectangles in Picture
1007:
1008: Picture Mode Tabs
1009: =================
1010:
1011: Two kinds of tab-like action are provided in Picture mode. Context-based
1012: tabbing is done with `M-TAB' (`picture-tab-search'). With no argument, it
1013: moves to a point underneath the next "interesting" character that follows
1014: whitespace in the previous nonblank line. "Next" here means "appearing at
1015: a horizontal position greater than the one point starts out at". With an
1016: argument, as in `C-u M-TAB', this command moves to the next such
1017: interesting character in the current line. `M-TAB' does not change the
1018: text; it only moves point. "Interesting" characters are defined by the
1019: variable `picture-tab-chars', which contains a string whose characters are
1020: all considered interesting. Its default value is `"!-~"'.
1021:
1022: TAB itself runs `picture-tab', which operates based on the
1023: current tab stop settings; it is the Picture mode equivalent of
1024: `tab-to-tab-stop'. Normally it just moves point, but with a numeric
1025: argument it clears the text that it moves over.
1026:
1027: The context-based and tab-stop-based forms of tabbing are brought
1028: together by the command `C-c TAB', `picture-set-tab-stops'.
1029: This command sets the tab stops to the positions which `M-TAB'
1030: would consider significant in the current line. The use of this command,
1031: together with TAB, can get the effect of context-based tabbing. But
1032: `M-TAB' is more convenient in the cases where it is sufficient.
1033:
1034:
1035: File: emacs Node: Rectangles in Picture, Prev: Tabs in Picture, Up: Picture
1036:
1037: Picture Mode Rectangle Commands
1038: ===============================
1039:
1040: Picture mode defines commands for working on rectangular pieces of the
1041: text in ways that fit with the quarter-plane model. The standard rectangle
1042: commands may also be useful (*Note Rectangles::).
1043:
1044: `C-c C-k'
1045: Clear out the region-rectangle (`picture-clear-rectangle'). With
1046: argument, kill it.
1047: `C-c C-w R'
1048: Similar but save rectangle contents in register R first
1049: (`picture-clear-rectangle-to-register').
1050: `C-c C-y'
1051: Copy last killed rectangle into the buffer by overwriting, with upper
1052: left corner at point (`picture-yank-rectangle'). With argument,
1053: insert instead.
1054: `C-c C-x R'
1055: Similar, but use the rectangle in register R
1056: (`picture-yank-rectangle-from-register').
1057:
1058: The picture rectangle commands `C-c C-k' (`picture-clear-rectangle') and
1059: `C-c C-w' (`picture-clear-rectangle-to-register') differ from the standard
1060: rectangle commands in that they normally clear the rectangle instead of
1061: deleting it; this is analogous with the way `C-d' is changed in Picture
1062: mode.
1063:
1064: However, deletion of rectangles can be useful in Picture mode, so these
1065: commands delete the rectangle if given a numeric argument.
1066:
1067: The Picture mode commands for yanking rectangles differ from the standard
1068: ones in overwriting instead of inserting. This is the same way that
1069: Picture mode insertion of other text is different from other modes.
1070: `C-c C-y' (`picture-yank-rectangle') inserts (by overwriting) the
1071: rectangle that was most recently killed, while `C-c C-x'
1072: (`picture-yank-rectangle-from-register') does likewise for the
1073: rectangle found in a specified register.
1074:
1075:
1076: File: emacs Node: Sending Mail, Prev: Picture, Up: Top, Next: Rmail
1077:
1078: Sending Mail
1079: ************
1080:
1081: To send a message in Emacs, you start by typing a command (`C-x m')
1082: to select and initialize the `*mail*' buffer. Then you edit the text
1083: and headers of the message in this buffer, and type another command
1084: (`C-c C-c') to send the message.
1085:
1086: `C-x m'
1087: Begin composing a message to send (`mail').
1088: `C-x 4 m'
1089: Likewise, but display the message in another window
1090: (`mail-other-window').
1091: `C-c C-c'
1092: In Mail mode, send the message and switch to another buffer
1093: (`mail-send-and-exit').
1094:
1095: The command `C-x m' (`mail') selects a buffer named `*mail*' and
1096: initializes it with the skeleton of an outgoing message. `C-x 4 m'
1097: (`mail-other-window') selects the `*mail*' buffer in a different window,
1098: leaving the previous current buffer visible.
1099:
1100: Because the mail composition buffer is an ordinary Emacs buffer, you can
1101: switch to other buffers while in the middle of composing mail, and switch
1102: back later (or never). If you use the `C-x m' command again when you
1103: have been composing another message but have not sent it, you are asked to
1104: confirm before the old message is erased. If you answer `n', the
1105: `*mail*' buffer is left selected with its old contents, so you can
1106: finish the old message and send it. `C-u C-x m' is another way to do
1107: this. Sending the message marks the `*mail*' buffer "unmodified",
1108: which avoids the need for confirmation when `C-x m' is next used.
1109:
1110: If you are composing a message in the `*mail*' buffer and want to
1111: send another message before finishing the first, rename the `*mail*'
1112: buffer using `M-x rename-buffer' (*Note Misc Buffer::).
1113:
1114: * Menu:
1115:
1116: * Format: Mail Format. Format of the mail being composed.
1117: * Headers: Mail Headers. Details of allowed mail header fields.
1118: * Mode: Mail Mode. Special commands for editing mail being composed.
1119:
1120:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.