|
|
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.