|
|
1.1 ! root 1: This is Info file ../info/emacs, produced by Makeinfo-1.49 from the ! 2: input file emacs.texi. ! 3: ! 4: This file documents the GNU Emacs editor. ! 5: ! 6: Copyright (C) 1985, 1986, 1988, 1992 Richard M. Stallman. ! 7: ! 8: Permission is granted to make and distribute verbatim copies of this ! 9: manual provided the copyright notice and this permission notice are ! 10: preserved on all copies. ! 11: ! 12: Permission is granted to copy and distribute modified versions of ! 13: this manual under the conditions for verbatim copying, provided also ! 14: that the sections entitled "The GNU Manifesto", "Distribution" and "GNU ! 15: General Public License" are included exactly as in the original, and ! 16: provided that the entire resulting derived work is distributed under the ! 17: terms of a permission notice identical to this one. ! 18: ! 19: Permission is granted to copy and distribute translations of this ! 20: manual into another language, under the above conditions for modified ! 21: versions, except that the sections entitled "The GNU Manifesto", ! 22: "Distribution" and "GNU General Public License" may be included in a ! 23: translation approved by the author instead of in the original English. ! 24: ! 25: ! 26: File: emacs, Node: Dissociated Press, Next: Amusements, Prev: Hardcopy, Up: Top ! 27: ! 28: Dissociated Press ! 29: ================= ! 30: ! 31: `M-x dissociated-press' is a command for scrambling a file of text ! 32: either word by word or character by character. Starting from a buffer ! 33: of straight English, it produces extremely amusing output. The input ! 34: comes from the current Emacs buffer. Dissociated Press writes its ! 35: output in a buffer named `*Dissociation*', and redisplays that buffer ! 36: after every couple of lines (approximately) to facilitate reading it. ! 37: ! 38: `dissociated-press' asks every so often whether to continue ! 39: operating. Answer `n' to stop it. You can also stop at any time by ! 40: typing `C-g'. The dissociation output remains in the `*Dissociation*' ! 41: buffer for you to copy elsewhere if you wish. ! 42: ! 43: Dissociated Press operates by jumping at random from one point in the ! 44: buffer to another. In order to produce plausible output rather than ! 45: gibberish, it insists on a certain amount of overlap between the end of ! 46: one run of consecutive words or characters and the start of the next. ! 47: That is, if it has just printed out `president' and then decides to ! 48: jump to a different point in the file, it might spot the `ent' in ! 49: `pentagon' and continue from there, producing `presidentagon'. Long ! 50: sample texts produce the best results. ! 51: ! 52: A positive argument to `M-x dissociated-press' tells it to operate ! 53: character by character, and specifies the number of overlap characters. ! 54: A negative argument tells it to operate word by word and specifies the ! 55: number of overlap words. In this mode, whole words are treated as the ! 56: elements to be permuted, rather than characters. No argument is ! 57: equivalent to an argument of two. For your againformation, the output ! 58: goes only into the buffer `*Dissociation*'. The buffer you start with ! 59: is not changed. ! 60: ! 61: Dissociated Press produces nearly the same results as a Markov chain ! 62: based on a frequency table constructed from the sample text. It is, ! 63: however, an independent, ignoriginal invention. Dissociated Press ! 64: techniquitously copies several consecutive characters from the sample ! 65: between random choices, whereas a Markov chain would choose randomly for ! 66: each word or character. This makes for more plausible sounding results, ! 67: and runs faster. ! 68: ! 69: It is a mustatement that too much use of Dissociated Press can be a ! 70: developediment to your real work. Sometimes to the point of outragedy. ! 71: And keep dissociwords out of your documentation, if you want it to be ! 72: well userenced and properbose. Have fun. Your buggestions are welcome. ! 73: ! 74: ! 75: File: emacs, Node: Amusements, Next: Emulation, Prev: Dissociated Press, Up: Top ! 76: ! 77: Other Amusements ! 78: ================ ! 79: ! 80: If you are a little bit bored, you can try `M-x hanoi'. If you are ! 81: considerably bored, give it a numeric argument. If you are very very ! 82: bored, try an argument of 9. Sit back and watch. ! 83: ! 84: When you are frustrated, try the famous Eliza program. Just do `M-x ! 85: doctor'. End each input by typing `RET' twice. ! 86: ! 87: When you are feeling strange, type `M-x yow'. ! 88: ! 89: ! 90: File: emacs, Node: Emulation, Next: Customization, Prev: Amusements, Up: Top ! 91: ! 92: Emulation ! 93: ========= ! 94: ! 95: GNU Emacs can be programmed to emulate (more or less) most other ! 96: editors. Standard facilities can emulate these: ! 97: ! 98: EDT (DEC VMS editor) ! 99: Turn on EDT emulation with `M-x edt-emulation-on'. `M-x ! 100: edt-emulation-off' restores normal Emacs command bindings. ! 101: ! 102: Most of the EDT emulation commands are keypad keys, and most ! 103: standard Emacs key bindings are still available. The EDT ! 104: emulation rebindings are done in the global keymap, so there is no ! 105: problem switching buffers or major modes while in EDT emulation. ! 106: ! 107: Gosling Emacs ! 108: Turn on emulation of Gosling Emacs (aka Unipress Emacs) with `M-x ! 109: set-gosmacs-bindings'. This redefines many keys, mostly on the ! 110: `C-x' and `ESC' prefixes, to work as they do in Gosmacs. `M-x ! 111: set-gnu-bindings' returns to normal GNU Emacs by rebinding the ! 112: same keys to the definitions they had at the time `M-x ! 113: set-gosmacs-bindings' was done. ! 114: ! 115: It is also possible to run Mocklisp code written for Gosling Emacs. ! 116: *Note Mocklisp::. ! 117: ! 118: vi (Berkeley Unix editor) ! 119: Turn on vi emulation with `M-x vi-mode'. This is a major mode ! 120: that replaces the previously established major mode. All of the ! 121: vi commands that, in real vi, enter "input" mode are programmed in ! 122: the Emacs emulator to return to the previous major mode. Thus, ! 123: ordinary Emacs serves as vi's "input" mode. ! 124: ! 125: Because vi emulation works through major modes, it does not work ! 126: to switch buffers during emulation. Return to normal Emacs first. ! 127: ! 128: If you plan to use vi emulation much, you probably want to bind a ! 129: key to the `vi-mode' command. ! 130: ! 131: vi (alternate emulator) ! 132: Another vi emulator said to resemble real vi more thoroughly is ! 133: invoked by `M-x vip-mode'. "Input" mode in this emulator is ! 134: changed from ordinary Emacs so you can use ESC to go back to ! 135: emulated vi command mode. To get from emulated vi command mode ! 136: back to ordinary Emacs, type `C-z'. ! 137: ! 138: This emulation does not work through major modes, and it is ! 139: possible to switch buffers in various ways within the emulator. ! 140: It is not so necessary to assign a key to the command `vip-mode' as ! 141: it is with `vi-mode' because terminating insert mode does not use ! 142: it. ! 143: ! 144: For full information, see the long comment at the beginning of the ! 145: source file, which is `lisp/vip.el' in the Emacs distribution. ! 146: ! 147: I am interested in hearing which vi emulator users prefer, as well ! 148: as in receiving more complete user documentation for either or both ! 149: emulators. Warning: loading both at once may cause name conficts; no ! 150: one has checked. ! 151: ! 152: ! 153: File: emacs, Node: Customization, Next: Quitting, Prev: Emulation, Up: Top ! 154: ! 155: Customization ! 156: ************* ! 157: ! 158: This chapter talks about various topics relevant to adapting the ! 159: behavior of Emacs in minor ways. ! 160: ! 161: All kinds of customization affect only the particular Emacs job that ! 162: you do them in. They are completely lost when you kill the Emacs job, ! 163: and have no effect on other Emacs jobs you may run at the same time or ! 164: later. The only way an Emacs job can affect anything outside of it is ! 165: by writing a file; in particular, the only way to make a customization ! 166: `permanent' is to put something in your `.emacs' file or other ! 167: appropriate file to do the customization in each session. *Note Init ! 168: File::. ! 169: ! 170: * Menu: ! 171: ! 172: * Minor Modes:: Each minor mode is one feature you can turn on ! 173: independently of any others. ! 174: * Variables:: Many Emacs commands examine Emacs variables ! 175: to decide what to do; by setting variables, ! 176: you can control their functioning. ! 177: * Keyboard Macros:: A keyboard macro records a sequence of keystrokes ! 178: to be replayed with a single command. ! 179: * Key Bindings:: The keymaps say what command each key runs. ! 180: By changing them, you can "redefine keys". ! 181: * Syntax:: The syntax table controls how words and expressions ! 182: are parsed. ! 183: * Init File:: How to write common customizations in the `.emacs' file. ! 184: ! 185: ! 186: File: emacs, Node: Minor Modes, Next: Variables, Prev: Customization, Up: Customization ! 187: ! 188: Minor Modes ! 189: =========== ! 190: ! 191: Minor modes are options which you can use or not. For example, Auto ! 192: Fill mode is a minor mode in which SPC breaks lines between words as you ! 193: type. All the minor modes are independent of each other and of the ! 194: selected major mode. Most minor modes say in the mode line when they ! 195: are on; for example, `Fill' in the mode line means that Auto Fill mode ! 196: is on. ! 197: ! 198: Append `-mode' to the name of a minor mode to get the name of a ! 199: command function that turns the mode on or off. Thus, the command to ! 200: enable or disable Auto Fill mode is called `M-x auto-fill-mode'. These ! 201: commands are usually invoked with `M-x', but you can bind keys to them ! 202: if you wish. With no argument, the function turns the mode on if it was ! 203: off and off if it was on. This is known as "toggling". A positive ! 204: argument always turns the mode on, and an explicit zero argument or a ! 205: negative argument always turns it off. ! 206: ! 207: Auto Fill mode allows you to enter filled text without breaking lines ! 208: explicitly. Emacs inserts newlines as necessary to prevent lines from ! 209: becoming too long. *Note Filling::. ! 210: ! 211: Overwrite mode causes ordinary printing characters to replace ! 212: existing text instead of shoving it over. For example, if the point is ! 213: in front of the `B' in `FOOBAR', then in Overwrite mode typing a `G' ! 214: changes it to `FOOGAR', instead of making it `FOOGBAR' as usual. ! 215: ! 216: Abbrev mode allows you to define abbreviations that automatically ! 217: expand as you type them. For example, `amd' might expand to `abbrev ! 218: mode'. *Note Abbrevs::, for full information. ! 219: ! 220: ! 221: File: emacs, Node: Variables, Next: Keyboard Macros, Prev: Minor Modes, Up: Customization ! 222: ! 223: Variables ! 224: ========= ! 225: ! 226: A "variable" is a Lisp symbol which has a value. The symbol's name ! 227: is also called the name of the variable. Variable names can contain any ! 228: characters, but conventionally they are chosen to be words separated by ! 229: hyphens. A variable can have a documentation string which describes ! 230: what kind of value it should have and how the value will be used. ! 231: ! 232: Lisp allows any variable to have any kind of value, but most ! 233: variables that Emacs uses require a value of a certain type. Often the ! 234: value should always be a string, or should always be a number. ! 235: Sometimes we say that a certain feature is turned on if a variable is ! 236: "non-`nil'," meaning that if the variable's value is `nil', the feature ! 237: is off, but the feature is on for any other value. The conventional ! 238: value to use to turn on the feature--since you have to pick one ! 239: particular value when you set the variable--is `t'. ! 240: ! 241: Emacs uses many Lisp variables for internal recordkeeping, as any ! 242: Lisp program must, but the most interesting variables for you are the ! 243: ones that exist for the sake of customization. Emacs does not ! 244: (usually) change the values of these variables; instead, you set the ! 245: values, and thereby alter and control the behavior of certain Emacs ! 246: commands. These variables are called "options". Most options are ! 247: documented in this manual, and appear in the Variable Index (*note ! 248: Variable Index::.). ! 249: ! 250: One example of a variable which is an option is `fill-column', which ! 251: specifies the position of the right margin (as a number of characters ! 252: from the left margin) to be used by the fill commands (*note ! 253: Filling::.). ! 254: ! 255: * Menu: ! 256: ! 257: * Examining:: Examining or setting one variable's value. ! 258: * Edit Options:: Examining or editing list of all variables' values. ! 259: * Locals:: Per-buffer values of variables. ! 260: * File Variables:: How files can specify variable values. ! 261: ! 262: ! 263: File: emacs, Node: Examining, Next: Edit Options, Prev: Variables, Up: Variables ! 264: ! 265: Examining and Setting Variables ! 266: ------------------------------- ! 267: ! 268: `C-h v' ! 269: `M-x describe-variable' ! 270: Print the value and documentation of a variable. ! 271: ! 272: `M-x set-variable' ! 273: Change the value of a variable. ! 274: ! 275: To examine the value of a single variable, type `C-h v' ! 276: (`describe-variable'), which reads a variable name using the ! 277: minibuffer, with completion. It prints both the value and the ! 278: documentation of the variable. ! 279: ! 280: C-h v fill-column RET ! 281: ! 282: prints something like ! 283: fill-column's value is 72 ! 284: ! 285: Documentation: ! 286: *Column beyond which automatic line-wrapping should happen. ! 287: Automatically becomes local when set in any fashion. ! 288: ! 289: The star at the beginning of the documentation indicates that this ! 290: variable is an option. `C-h v' is not restricted to options; it allows ! 291: any variable name. ! 292: ! 293: If you know which option you want to set, you can set it using `M-x ! 294: set-variable'. This reads the variable name with the minibuffer (with ! 295: completion), and then reads a Lisp expression for the new value using ! 296: the minibuffer a second time. For example, ! 297: ! 298: M-x set-variable RET fill-column RET 72 RET ! 299: ! 300: sets `fill-column' to 72, like executing the Lisp expression ! 301: ! 302: (setq fill-column 72) ! 303: ! 304: Setting variables in this way, like all means of customizing Emacs ! 305: except where explicitly stated, affects only the current Emacs session. ! 306: ! 307: ! 308: File: emacs, Node: Edit Options, Next: Locals, Prev: Examining, Up: Variables ! 309: ! 310: Editing Variable Values ! 311: ----------------------- ! 312: ! 313: `M-x list-options' ! 314: Display a buffer listing names, values and documentation of all ! 315: options. ! 316: ! 317: `M-x edit-options' ! 318: Change option values by editing a list of options. ! 319: ! 320: `M-x list-options' displays a list of all Emacs option variables, in ! 321: an Emacs buffer named `*List Options*'. Each option is shown with its ! 322: documentation and its current value. Here is what a portion of it might ! 323: look like: ! 324: ! 325: ;; exec-path: ! 326: ("." "/usr/local/bin" "/usr/ucb" "/bin" "/usr/bin" "/u2/emacs/etc") ! 327: *List of directories to search programs to run in subprocesses. ! 328: Each element is a string (directory name) ! 329: or nil (try the default directory). ! 330: ;; ! 331: ;; fill-column: ! 332: 72 ! 333: *Column beyond which automatic line-wrapping should happen. ! 334: Automatically becomes local when set in any fashion. ! 335: ;; ! 336: ! 337: `M-x edit-options' goes one step further and immediately selects the ! 338: `*List Options*' buffer; this buffer uses the major mode Options mode, ! 339: which provides commands that allow you to point at an option and change ! 340: its value: ! 341: ! 342: `s' ! 343: Set the variable point is in or near to a new value read using the ! 344: minibuffer. ! 345: ! 346: `x' ! 347: Toggle the variable point is in or near: if the value was `nil', ! 348: it becomes `t'; otherwise it becomes `nil'. ! 349: ! 350: `1' ! 351: Set the variable point is in or near to `t'. ! 352: ! 353: `0' ! 354: Set the variable point is in or near to `nil'. ! 355: ! 356: `n' ! 357: `p' ! 358: Move to the next or previous variable. ! 359: ! 360: Changes take effect immediately. ! 361: ! 362: ! 363: File: emacs, Node: Locals, Next: File Variables, Prev: Edit Options, Up: Variables ! 364: ! 365: Local Variables ! 366: --------------- ! 367: ! 368: `M-x make-local-variable' ! 369: Make a variable have a local value in the current buffer. ! 370: ! 371: `M-x kill-local-variable' ! 372: Make a variable use its global value in the current buffer. ! 373: ! 374: `M-x make-variable-buffer-local' ! 375: Mark a variable so that setting it will make it local to the ! 376: buffer that is current at that time. ! 377: ! 378: Any variable can be made "local" to a specific Emacs buffer. This ! 379: means that its value in that buffer is independent of its value in other ! 380: buffers. A few variables are always local in every buffer. Every other ! 381: Emacs variable has a "global" value which is in effect in all buffers ! 382: that have not made the variable local. ! 383: ! 384: Major modes always make the variables they set local to the buffer. ! 385: This is why changing major modes in one buffer has no effect on other ! 386: buffers. ! 387: ! 388: `M-x make-local-variable' reads the name of a variable and makes it ! 389: local to the current buffer. Further changes in this buffer will not ! 390: affect others, and further changes in the global value will not affect ! 391: this buffer. ! 392: ! 393: `M-x make-variable-buffer-local' reads the name of a variable and ! 394: changes the future behavior of the variable so that it will become local ! 395: automatically when it is set. More precisely, once a variable has been ! 396: marked in this way, the usual ways of setting the variable will ! 397: automatically do `make-local-variable' first. We call such variables ! 398: "per-buffer" variables. ! 399: ! 400: Some important variables have been marked per-buffer already. These ! 401: include `abbrev-mode', `auto-fill-hook', `case-fold-search', ! 402: `ctl-arrow', `comment-column', `fill-column', `fill-prefix', ! 403: `indent-tabs-mode', `left-margin', `mode-line-format', `overwrite-mode', ! 404: `selective-display', `tab-width', `selective-display-ellipses', and ! 405: `truncate-lines'. Some other variables are always local in every ! 406: buffer, but they are used for internal purposes. ! 407: ! 408: `M-x kill-local-variable' reads the name of a variable and makes it ! 409: cease to be local to the current buffer. The global value of the ! 410: variable henceforth is in effect in this buffer. Setting the major ! 411: mode kills all the local variables of the buffer. ! 412: ! 413: To set the global value of a variable, regardless of whether the ! 414: variable has a local value in the current buffer, you can use the Lisp ! 415: function `setq-default'. It works like `setq'. If there is a local ! 416: value in the current buffer, the local value is not affected by ! 417: `setq-default'; thus, the new global value may not be visible until you ! 418: switch to another buffer. For example, ! 419: ! 420: (setq-default fill-column 72) ! 421: ! 422: `setq-default' is the only way to set the global value of a variable ! 423: that has been marked with `make-variable-buffer-local'. ! 424: ! 425: Programs can look at a variable's default value with `default-value'. ! 426: This function takes a symbol as argument and returns its default value. ! 427: The argument is evaluated; usually you must quote it explicitly. For ! 428: example, ! 429: ! 430: (default-value 'fill-column) ! 431: ! 432: ! 433: File: emacs, Node: File Variables, Prev: Locals, Up: Variables ! 434: ! 435: Local Variables in Files ! 436: ------------------------ ! 437: ! 438: A file can contain a "local variables list", which specifies the ! 439: values to use for certain Emacs variables when that file is edited. ! 440: Visiting the file checks for a local variables list and makes each ! 441: variable in the list local to the buffer in which the file is visited, ! 442: with the value specified in the file. ! 443: ! 444: A local variables list goes near the end of the file, in the last ! 445: page. (It is often best to put it on a page by itself.) The local ! 446: variables list starts with a line containing the string `Local ! 447: Variables:', and ends with a line containing the string `End:'. In ! 448: between come the variable names and values, one set per line, as ! 449: `VARIABLE: VALUE'. The VALUEs are not evaluated; they are used ! 450: literally. ! 451: ! 452: The line which starts the local variables list does not have to say ! 453: just `Local Variables:'. If there is other text before `Local ! 454: Variables:', that text is called the "prefix", and if there is other ! 455: text after, that is called the "suffix". If these are present, each ! 456: entry in the local variables list should have the prefix before it and ! 457: the suffix after it. This includes the `End:' line. The prefix and ! 458: suffix are included to disguise the local variables list as a comment so ! 459: that the compiler or text formatter will not be perplexed by it. If ! 460: you do not need to disguise the local variables list as a comment in ! 461: this way, do not bother with a prefix or a suffix. ! 462: ! 463: Two "variable" names are special in a local variables list: a value ! 464: for the variable `mode' really sets the major mode, and a value for the ! 465: variable `eval' is simply evaluated as an expression and the value is ! 466: ignored. These are not real variables; setting such variables in any ! 467: other context has no such effect. If `mode' is used in a local ! 468: variables list, it should be the first entry in the list. ! 469: ! 470: Here is an example of a local variables list: ! 471: ! 472: ;;; Local Variables: *** ! 473: ;;; mode:lisp *** ! 474: ;;; comment-column:0 *** ! 475: ;;; comment-start: ";;; " *** ! 476: ;;; comment-end:"***" *** ! 477: ;;; End: *** ! 478: ! 479: Note that the prefix is `;;; ' and the suffix is ` ***'. Note also ! 480: that comments in the file begin with and end with the same strings. ! 481: Presumably the file contains code in a language which is like Lisp ! 482: (like it enough for Lisp mode to be useful) but in which comments start ! 483: and end in that way. The prefix and suffix are used in the local ! 484: variables list to make the list appear as comments when the file is read ! 485: by the compiler or interpreter for that language. ! 486: ! 487: The start of the local variables list must be no more than 3000 ! 488: characters from the end of the file, and must be in the last page if the ! 489: file is divided into pages. Otherwise, Emacs will not notice it is ! 490: there. The purpose of this is so that a stray `Local Variables:' not in ! 491: the last page does not confuse Emacs, and so that visiting a long file ! 492: that is all one page and has no local variables list need not take the ! 493: time to search the whole file. ! 494: ! 495: You may be tempted to try to turn on Auto Fill mode with a local ! 496: variable list. That is a mistake. The choice of Auto Fill mode or not ! 497: is a matter of individual taste, not a matter of the contents of ! 498: particular files. If you want to use Auto Fill, set up major mode hooks ! 499: with your `.emacs' file to turn it on (when appropriate) for you alone ! 500: (*note Init File::.). Don't try to use a local variable list that would ! 501: impose your taste on everyone. ! 502: ! 503: If you are concerned that you might visit a file containing a ! 504: Trojan-horse local variable specification, you can prevent local ! 505: variables processing by setting the variable `inhibit-local-variables' ! 506: to a non-`nil' value. Emacs will display the local variables ! 507: specification and then ask you whether to process it. ! 508: ! 509: ! 510: File: emacs, Node: Keyboard Macros, Next: Key Bindings, Prev: Variables, Up: Customization ! 511: ! 512: Keyboard Macros ! 513: =============== ! 514: ! 515: A "keyboard macro" is a command defined by the user to abbreviate a ! 516: sequence of keys. For example, if you discover that you are about to ! 517: type `C-n C-d' forty times, you can speed your work by defining a ! 518: keyboard macro to do `C-n C-d' and calling it with a repeat count of ! 519: forty. ! 520: ! 521: `C-x (' ! 522: Start defining a keyboard macro (`start-kbd-macro'). ! 523: ! 524: `C-x )' ! 525: End the definition of a keyboard macro (`end-kbd-macro'). ! 526: ! 527: `C-x e' ! 528: Execute the most recent keyboard macro (`call-last-kbd-macro'). ! 529: ! 530: `C-u C-x (' ! 531: Re-execute last keyboard macro, then add more keys to its ! 532: definition. ! 533: ! 534: `C-x q' ! 535: When this point is reached during macro execution, ask for ! 536: confirmation (`kbd-macro-query'). ! 537: ! 538: `M-x name-last-kbd-macro' ! 539: Give a command name (for the duration of the session) to the most ! 540: recently defined keyboard macro. ! 541: ! 542: `M-x insert-kbd-macro' ! 543: Insert in the buffer a keyboard macro's definition, as Lisp code. ! 544: ! 545: Keyboard macros differ from ordinary Emacs commands in that they are ! 546: written in the Emacs command language rather than in Lisp. This makes ! 547: it easier for the novice to write them, and makes them more convenient ! 548: as temporary hacks. However, the Emacs command language is not powerful ! 549: enough as a programming language to be useful for writing anything ! 550: intelligent or general. For such things, Lisp must be used. ! 551: ! 552: You define a keyboard macro while executing the commands which are ! 553: the definition. Put differently, as you are defining a keyboard macro, ! 554: the definition is being executed for the first time. This way, you can ! 555: see what the effects of your commands are, so that you don't have to ! 556: figure them out in your head. When you are finished, the keyboard ! 557: macro is defined and also has been, in effect, executed once. You can ! 558: then do the whole thing over again by invoking the macro. ! 559: ! 560: * Menu: ! 561: ! 562: * Basic Kbd Macro:: Defining and running keyboard macros. ! 563: * Save Kbd Macro:: Giving keyboard macros names; saving them in files. ! 564: * Kbd Macro Query:: Keyboard macros that do different things each use. ! 565: ! 566: ! 567: File: emacs, Node: Basic Kbd Macro, Next: Save Kbd Macro, Prev: Keyboard Macros, Up: Keyboard Macros ! 568: ! 569: Basic Use ! 570: --------- ! 571: ! 572: To start defining a keyboard macro, type the `C-x (' command ! 573: (`start-kbd-macro'). From then on, your keys continue to be executed, ! 574: but also become part of the definition of the macro. `Def' appears in ! 575: the mode line to remind you of what is going on. When you are ! 576: finished, the `C-x )' command (`end-kbd-macro') terminates the ! 577: definition (without becoming part of it!). ! 578: ! 579: For example, ! 580: ! 581: C-x ( M-F foo C-x ) ! 582: ! 583: defines a macro to move forward a word and then insert `foo'. ! 584: ! 585: The macro thus defined can be invoked again with the `C-x e' command ! 586: (`call-last-kbd-macro'), which may be given a repeat count as a numeric ! 587: argument to execute the macro many times. `C-x )' can also be given a ! 588: repeat count as an argument, in which case it repeats the macro that ! 589: many times right after defining it, but defining the macro counts as ! 590: the first repetition (since it is executed as you define it). So, ! 591: giving `C-x )' an argument of 4 executes the macro immediately 3 ! 592: additional times. An argument of zero to `C-x e' or `C-x )' means ! 593: repeat the macro indefinitely (until it gets an error or you type ! 594: `C-g'). ! 595: ! 596: If you wish to repeat an operation at regularly spaced places in the ! 597: text, define a macro and include as part of the macro the commands to ! 598: move to the next place you want to use it. For example, if you want to ! 599: change each line, you should position point at the start of a line, and ! 600: define a macro to change that line and leave point at the start of the ! 601: next line. Then repeating the macro will operate on successive lines. ! 602: ! 603: After you have terminated the definition of a keyboard macro, you ! 604: can add to the end of its definition by typing `C-u C-x ('. This is ! 605: equivalent to plain `C-x (' followed by retyping the whole definition ! 606: so far. As a consequence it re-executes the macro as previously ! 607: defined. ! 608: ! 609: One limitation on the use of keyboard macros is that if you exit a ! 610: recursive edit within a macro that was not entered within the macro, ! 611: then the execution of the macro stops at that point. In Emacs 18, View ! 612: mode uses a recursive edit, so exiting View mode is an occasion for such ! 613: a problem. ! 614: ! 615: ! 616: File: emacs, Node: Save Kbd Macro, Next: Kbd Macro Query, Prev: Basic Kbd Macro, Up: Keyboard Macros ! 617: ! 618: Naming and Saving Keyboard Macros ! 619: --------------------------------- ! 620: ! 621: If you wish to save a keyboard macro for longer than until you ! 622: define the next one, you must give it a name using `M-x ! 623: name-last-kbd-macro'. This reads a name as an argument using the ! 624: minibuffer and defines that name to execute the macro. The macro name ! 625: is a Lisp symbol, and defining it in this way makes it a valid command ! 626: name for calling with `M-x' or for binding a key to with ! 627: `global-set-key' (*note Keymaps::.). If you specify a name that has a ! 628: prior definition other than another keyboard macro, an error message is ! 629: printed and nothing is changed. ! 630: ! 631: Once a macro has a command name, you can save its definition in a ! 632: file. Then it can be used in another editing session. First visit the ! 633: file you want to save the definition in. Then use the command ! 634: ! 635: M-x insert-kbd-macro RET MACRONAME RET ! 636: ! 637: This inserts some Lisp code that, when executed later, will define the ! 638: same macro with the same definition it has now. You need not ! 639: understand Lisp code to do this, because `insert-kbd-macro' writes the ! 640: Lisp code for you. Then save the file. The file can be loaded with ! 641: `load-file' (*note Lisp Libraries::.). If the file you save in is your ! 642: init file `~/.emacs' (*note Init File::.) then the macro will be ! 643: defined each time you run Emacs. ! 644: ! 645: If you give `insert-kbd-macro' a prefix argument, it makes ! 646: additional Lisp code to record the keys (if any) that you have bound to ! 647: the keyboard macro, so that the macro will be reassigned the same keys ! 648: when you load the file. ! 649: ! 650: ! 651: File: emacs, Node: Kbd Macro Query, Prev: Save Kbd Macro, Up: Keyboard Macros ! 652: ! 653: Executing Macros with Variations ! 654: -------------------------------- ! 655: ! 656: Using `C-x q' (`kbd-macro-query'), you can get an effect similar to ! 657: that of `query-replace', where the macro asks you each time around ! 658: whether to make a change. When you are defining the macro, type `C-x ! 659: q' at the point where you want the query to occur. During macro ! 660: definition, the `C-x q' does nothing, but when the macro is invoked the ! 661: `C-x q' reads a character from the terminal to decide whether to ! 662: continue. ! 663: ! 664: The special answers are SPC, DEL, `C-d', `C-l' and `C-r'. Any other ! 665: character terminates execution of the keyboard macro and is then read ! 666: as a command. SPC means to continue. DEL means to skip the remainder ! 667: of this repetition of the macro, starting again from the beginning in ! 668: the next repetition. `C-d' means to skip the remainder of this ! 669: repetition and cancel further repetition. `C-l' redraws the screen and ! 670: asks you again for a character to say what to do. `C-r' enters a ! 671: recursive editing level, in which you can perform editing which is not ! 672: part of the macro. When you exit the recursive edit using `C-M-c', you ! 673: are asked again how to continue with the keyboard macro. If you type a ! 674: SPC at this time, the rest of the macro definition is executed. It is ! 675: up to you to leave point and the text in a state such that the rest of ! 676: the macro will do what you want. ! 677: ! 678: `C-u C-x q', which is `C-x q' with a numeric argument, performs a ! 679: different function. It enters a recursive edit reading input from the ! 680: keyboard, both when you type it during the definition of the macro, and ! 681: when it is executed from the macro. During definition, the editing you ! 682: do inside the recursive edit does not become part of the macro. During ! 683: macro execution, the recursive edit gives you a chance to do some ! 684: particularized editing. *Note Recursive Edit::. ! 685: ! 686: ! 687: File: emacs, Node: Key Bindings, Next: Syntax, Prev: Keyboard Macros, Up: Customization ! 688: ! 689: Customizing Key Bindings ! 690: ======================== ! 691: ! 692: This section deals with the "keymaps" which define the bindings ! 693: between keys and functions, and shows how you can customize these ! 694: bindings. ! 695: ! 696: A command is a Lisp function whose definition provides for ! 697: interactive use. Like every Lisp function, a command has a function ! 698: name, a Lisp symbol whose name usually consists of lower case letters ! 699: and hyphens. ! 700: ! 701: * Menu: ! 702: ! 703: * Keymaps:: Definition of the keymap data structure. ! 704: Names of Emacs's standard keymaps. ! 705: * Rebinding:: How to redefine one key's meaning conveniently. ! 706: * Disabling:: Disabling a command means confirmation is required ! 707: before it can be executed. This is done to protect ! 708: beginners from surprises. ! 709: ! 710: ! 711: File: emacs, Node: Keymaps, Next: Rebinding, Prev: Key Bindings, Up: Key Bindings ! 712: ! 713: Keymaps ! 714: ------- ! 715: ! 716: The bindings between characters and command functions are recorded in ! 717: data structures called "keymaps". Emacs has many of these. One, the ! 718: "global" keymap, defines the meanings of the single-character keys that ! 719: are defined regardless of major mode. It is the value of the variable ! 720: `global-map'. ! 721: ! 722: Each major mode has another keymap, its "local keymap", which ! 723: contains overriding definitions for the single-character keys that are ! 724: to be redefined in that mode. Each buffer records which local keymap is ! 725: installed for it at any time, and the current buffer's local keymap is ! 726: the only one that directly affects command execution. The local ! 727: keymaps for Lisp mode, C mode, and many other major modes always exist ! 728: even when not in use. They are the values of the variables ! 729: `lisp-mode-map', `c-mode-map', and so on. For major modes less often ! 730: used, the local keymap is sometimes constructed only when the mode is ! 731: used for the first time in a session. This is to save space. ! 732: ! 733: There are local keymaps for the minibuffer too; they contain various ! 734: completion and exit commands. ! 735: ! 736: * `minibuffer-local-map' is used for ordinary input (no completion). ! 737: ! 738: * `minibuffer-local-ns-map' is similar, except that SPC exits just ! 739: like RET. This is used mainly for Mocklisp compatibility. ! 740: ! 741: * `minibuffer-local-completion-map' is for permissive completion. ! 742: ! 743: * `minibuffer-local-must-match-map' is for strict completion and for ! 744: cautious completion. ! 745: ! 746: * `repeat-complex-command-map' is for use in `C-x ESC'. ! 747: ! 748: Finally, each prefix key has a keymap which defines the key sequences ! 749: that start with it. For example, `ctl-x-map' is the keymap used for ! 750: characters following a `C-x'. ! 751: ! 752: * `ctl-x-map' is the variable name for the map used for characters ! 753: that follow `C-x'. ! 754: ! 755: * `help-map' is used for characters that follow `C-h'. ! 756: ! 757: * `esc-map' is for characters that follow ESC. Thus, all Meta ! 758: characters are actually defined by this map. ! 759: ! 760: * `ctl-x-4-map' is for characters that follow `C-x 4'. ! 761: ! 762: * `mode-specific-map' is for characters that follow `C-c'. ! 763: ! 764: The definition of a prefix key is just the keymap to use for looking ! 765: up the following character. Actually, the definition is sometimes a ! 766: Lisp symbol whose function definition is the following character ! 767: keymap. The effect is the same, but it provides a command name for the ! 768: prefix key that can be used as a description of what the prefix key is ! 769: for. Thus, the binding of `C-x' is the symbol `Ctl-X-Prefix', whose ! 770: function definition is the keymap for `C-x' commands, the value of ! 771: `ctl-x-map'. ! 772: ! 773: Prefix key definitions of this sort can appear in either the global ! 774: map or a local map. The definitions of `C-c', `C-x', `C-h' and ESC as ! 775: prefix keys appear in the global map, so these prefix keys are always ! 776: available. Major modes can locally redefine a key as a prefix by ! 777: putting a prefix key definition for it in the local map. ! 778: ! 779: A mode can also put a prefix definition of a global prefix character ! 780: such as `C-x' into its local map. This is how major modes override the ! 781: definitions of certain keys that start with `C-x'. This case is ! 782: special, because the local definition does not entirely replace the ! 783: global one. When both the global and local definitions of a key are ! 784: other keymaps, the next character is looked up in both keymaps, with ! 785: the local definition overriding the global one as usual. So, the ! 786: character after the `C-x' is looked up in both the major mode's own ! 787: keymap for redefined `C-x' commands and in `ctl-x-map'. If the major ! 788: mode's own keymap for `C-x' commands contains `nil', the definition ! 789: from the global keymap for `C-x' commands is used. ! 790: ! 791: A keymap is actually a Lisp object. The simplest form of keymap is a ! 792: Lisp vector of length 128. The binding for a character in such a ! 793: keymap is found by indexing into the vector with the character as an ! 794: index. A keymap can also be a Lisp list whose CAR is the symbol ! 795: `keymap' and whose remaining elements are pairs of the form `(CHAR . ! 796: BINDING)'. Such lists are called "sparse keymaps" because they are used ! 797: when most of the characters' entries will be `nil'. Sparse keymaps are ! 798: used mainly for prefix characters. ! 799: ! 800: Keymaps are only of length 128, so what about Meta characters, whose ! 801: codes are from 128 to 255? A key that contains a Meta character ! 802: actually represents it as a sequence of two characters, the first of ! 803: which is ESC. So the key `M-a' is really represented as `ESC a', and ! 804: its binding is found at the slot for `a' in `esc-map'. ! 805: ! 806: ! 807: File: emacs, Node: Rebinding, Next: Disabling, Prev: Keymaps, Up: Key Bindings ! 808: ! 809: Changing Key Bindings Interactively ! 810: ----------------------------------- ! 811: ! 812: The way to redefine an Emacs key is to change its entry in a keymap. ! 813: You can change the global keymap, in which case the change is effective ! 814: in all major modes (except those that have their own overriding local ! 815: definitions for the same key). Or you can change the current buffer's ! 816: local map, which affects all buffers using the same major mode. ! 817: ! 818: `M-x global-set-key RET KEY CMD RET' ! 819: Defines KEY globally to run CMD. ! 820: ! 821: `M-x local-set-key RET KEY CMD RET' ! 822: Defines KEY locally (in the major mode now in effect) to run CMD. ! 823: ! 824: For example, ! 825: ! 826: M-x global-set-key RET C-f next-line RET ! 827: ! 828: would redefine `C-f' to move down a line. The fact that CMD is read ! 829: second makes it serve as a kind of confirmation for KEY. ! 830: ! 831: These functions offer no way to specify a particular prefix keymap ! 832: as the one to redefine in, but that is not necessary, as you can ! 833: include prefixes in KEY. KEY is read by reading characters one by one ! 834: until they amount to a complete key (that is, not a prefix key). Thus, ! 835: if you type `C-f' for KEY, that's the end; the minibuffer is entered ! 836: immediately to read CMD. But if you type `C-x', another character is ! 837: read; if that is `4', another character is read, and so on. For ! 838: example, ! 839: ! 840: M-x global-set-key RET C-x 4 $ spell-other-window RET ! 841: ! 842: would redefine `C-x 4 $' to run the (fictitious) command ! 843: `spell-other-window'. ! 844: ! 845: All the key sequences which consist of `C-c' followed by a letter ! 846: are supposed to be reserved for user customization. That is, Emacs Lisp ! 847: libraries should not define any of these commands. ! 848: ! 849: The most general way to modify a keymap is the function `define-key', ! 850: used in Lisp code (such as your `.emacs' file). `define-key' takes ! 851: three arguments: the keymap, the key to modify in it, and the new ! 852: definition. *Note Init File::, for an example. ! 853: `substitute-key-definition' is used similarly; it takes three ! 854: arguments, an old definition, a new definition and a keymap, and ! 855: redefines in that keymap all keys that were previously defined with the ! 856: old definition to have the new definition instead. ! 857: ! 858: ! 859: File: emacs, Node: Disabling, Prev: Rebinding, Up: Key Bindings ! 860: ! 861: Disabling Commands ! 862: ------------------ ! 863: ! 864: Disabling a command marks the command as requiring confirmation ! 865: before it can be executed. The purpose of disabling a command is to ! 866: prevent beginning users from executing it by accident and being ! 867: confused. ! 868: ! 869: The direct mechanism for disabling a command is to have a non-`nil' ! 870: `disabled' property on the Lisp symbol for the command. These ! 871: properties are normally set up by the user's `.emacs' file with Lisp ! 872: expressions such as ! 873: ! 874: (put 'delete-region 'disabled t) ! 875: ! 876: If the value of the `disabled' property is a string, that string is ! 877: included in the message printed when the command is used: ! 878: ! 879: (put 'delete-region 'disabled ! 880: "Text deleted this way cannot be yanked back!\n") ! 881: ! 882: You can make a command disabled either by editing the `.emacs' file ! 883: directly or with the command `M-x disable-command', which edits the ! 884: `.emacs' file for you. *Note Init File::. ! 885: ! 886: Attempting to invoke a disabled command interactively in Emacs ! 887: causes the display of a window containing the command's name, its ! 888: documentation, and some instructions on what to do immediately; then ! 889: Emacs asks for input saying whether to execute the command as ! 890: requested, enable it and execute, or cancel it. If you decide to ! 891: enable the command, you are asked whether to do this permanently or ! 892: just for the current session. Enabling permanently works by ! 893: automatically editing your `.emacs' file. You can use `M-x ! 894: enable-command' at any time to enable any command permanently. ! 895: ! 896: Whether a command is disabled is independent of what key is used to ! 897: invoke it; it also applies if the command is invoked using `M-x'. ! 898: Disabling a command has no effect on calling it as a function from Lisp ! 899: programs. ! 900: ! 901: ! 902: File: emacs, Node: Syntax, Next: Init File, Prev: Key Bindings, Up: Customization ! 903: ! 904: The Syntax Table ! 905: ================ ! 906: ! 907: All the Emacs commands which parse words or balance parentheses are ! 908: controlled by the "syntax table". The syntax table says which ! 909: characters are opening delimiters, which are parts of words, which are ! 910: string quotes, and so on. Actually, each major mode has its own syntax ! 911: table (though sometimes related major modes use the same one) which it ! 912: installs in each buffer that uses that major mode. The syntax table ! 913: installed in the current buffer is the one that all commands use, so we ! 914: call it "the" syntax table. A syntax table is a Lisp object, a vector ! 915: of length 256 whose elements are numbers. ! 916: ! 917: * Menu: ! 918: ! 919: * Entry: Syntax Entry. What the syntax table records for each character. ! 920: * Change: Syntax Change. How to change the information. ! 921: ! 922: ! 923: File: emacs, Node: Syntax Entry, Next: Syntax Change, Prev: Syntax, Up: Syntax ! 924: ! 925: Information about Each Character ! 926: -------------------------------- ! 927: ! 928: The syntax table entry for a character is a number that encodes six ! 929: pieces of information: ! 930: ! 931: * The syntactic class of the character, represented as a small ! 932: integer. ! 933: ! 934: * The matching delimiter, for delimiter characters only. The ! 935: matching delimiter of `(' is `)', and vice versa. ! 936: ! 937: * A flag saying whether the character is the first character of a ! 938: two-character comment starting sequence. ! 939: ! 940: * A flag saying whether the character is the second character of a ! 941: two-character comment starting sequence. ! 942: ! 943: * A flag saying whether the character is the first character of a ! 944: two-character comment ending sequence. ! 945: ! 946: * A flag saying whether the character is the second character of a ! 947: two-character comment ending sequence. ! 948: ! 949: The syntactic classes are stored internally as small integers, but ! 950: are usually described to or by the user with characters. For example, ! 951: `(' is used to specify the syntactic class of opening delimiters. Here ! 952: is a table of syntactic classes, with the characters that specify them. ! 953: ! 954: ` ' ! 955: The class of whitespace characters. ! 956: ! 957: `-' ! 958: Another name for the class of whitespace characters. ! 959: ! 960: `w' ! 961: The class of word-constituent characters. ! 962: ! 963: `_' ! 964: The class of characters that are part of symbol names but not ! 965: words. This class is represented by `_' because the character `_' ! 966: has this class in both C and Lisp. ! 967: ! 968: `.' ! 969: The class of punctuation characters that do not fit into any other ! 970: special class. ! 971: ! 972: `(' ! 973: The class of opening delimiters. ! 974: ! 975: `)' ! 976: The class of closing delimiters. ! 977: ! 978: `'' ! 979: The class of expression-adhering characters. These characters are ! 980: part of a symbol if found within or adjacent to one, and are part ! 981: of a following expression if immediately preceding one, but are ! 982: like whitespace if surrounded by whitespace. ! 983: ! 984: `"' ! 985: The class of string-quote characters. They match each other in ! 986: pairs, and the characters within the pair all lose their syntactic ! 987: significance except for the `\' and `/' classes of escape ! 988: characters, which can be used to include a string-quote inside the ! 989: string. ! 990: ! 991: `$' ! 992: The class of self-matching delimiters. This is intended for TeX's ! 993: `$', which is used both to enter and leave math mode. Thus, a ! 994: pair of matching `$' characters surround each piece of math mode ! 995: TeX input. A pair of adjacent `$' characters act like a single ! 996: one for purposes of matching. ! 997: ! 998: `/' ! 999: The class of escape characters that always just deny the following ! 1000: character its special syntactic significance. The character after ! 1001: one of these escapes is always treated as alphabetic. ! 1002: ! 1003: `\' ! 1004: The class of C-style escape characters. In practice, these are ! 1005: treated just like `/'-class characters, because the extra ! 1006: possibilities for C escapes (such as being followed by digits) ! 1007: have no effect on where the containing expression ends. ! 1008: ! 1009: `<' ! 1010: The class of comment-starting characters. Only single-character ! 1011: comment starters (such as `;' in Lisp mode) are represented this ! 1012: way. ! 1013: ! 1014: `>' ! 1015: The class of comment-ending characters. Newline has this syntax in ! 1016: Lisp mode. ! 1017: ! 1018: The characters flagged as part of two-character comment delimiters ! 1019: can have other syntactic functions most of the time. For example, `/' ! 1020: and `*' in C code, when found separately, have nothing to do with ! 1021: comments. The comment-delimiter significance overrides when the pair of ! 1022: characters occur together in the proper order. Only the list and sexp ! 1023: commands use the syntax table to find comments; the commands ! 1024: specifically for comments have other variables that tell them where to ! 1025: find comments. And the list and sexp commands notice comments only if ! 1026: `parse-sexp-ignore-comments' is non-`nil'. This variable is set to ! 1027: `nil' in modes where comment-terminator sequences are liable to appear ! 1028: where there is no comment; for example, in Lisp mode where the comment ! 1029: terminator is a newline but not every newline ends a comment. ! 1030: ! 1031: ! 1032: File: emacs, Node: Syntax Change, Prev: Syntax Entry, Up: Syntax ! 1033: ! 1034: Altering Syntax Information ! 1035: --------------------------- ! 1036: ! 1037: It is possible to alter a character's syntax table entry by storing ! 1038: a new number in the appropriate element of the syntax table, but it ! 1039: would be hard to determine what number to use. Therefore, Emacs ! 1040: provides a command that allows you to specify the syntactic properties ! 1041: of a character in a convenient way. ! 1042: ! 1043: `M-x modify-syntax-entry' is the command to change a character's ! 1044: syntax. It can be used interactively, and is also the means used by ! 1045: major modes to initialize their own syntax tables. Its first argument ! 1046: is the character to change. The second argument is a string that ! 1047: specifies the new syntax. When called from Lisp code, there is a ! 1048: third, optional argument, which specifies the syntax table in which to ! 1049: make the change. If not supplied, or if this command is called ! 1050: interactively, the third argument defaults to the current buffer's ! 1051: syntax table. ! 1052: ! 1053: 1. The first character in the string specifies the syntactic class. ! 1054: It is one of the characters in the previous table (*note Syntax ! 1055: Entry::.). ! 1056: ! 1057: 2. The second character is the matching delimiter. For a character ! 1058: that is not an opening or closing delimiter, this should be a ! 1059: space, and may be omitted if no following characters are needed. ! 1060: ! 1061: 3. The remaining characters are flags. The flag characters allowed ! 1062: are ! 1063: ! 1064: `1' ! 1065: Flag this character as the first of a two-character comment ! 1066: starting sequence. ! 1067: ! 1068: `2' ! 1069: Flag this character as the second of a two-character comment ! 1070: starting sequence. ! 1071: ! 1072: `3' ! 1073: Flag this character as the first of a two-character comment ! 1074: ending sequence. ! 1075: ! 1076: `4' ! 1077: Flag this character as the second of a two-character comment ! 1078: ending sequence. ! 1079: ! 1080: A description of the contents of the current syntax table can be ! 1081: displayed with `C-h s' (`describe-syntax'). The description of each ! 1082: character includes both the string you would have to give to ! 1083: `modify-syntax-entry' to set up that character's current syntax, and ! 1084: some English to explain that string if necessary. ! 1085: ! 1086: ! 1087: File: emacs, Node: Init File, Prev: Syntax, Up: Customization ! 1088: ! 1089: The Init File, .emacs ! 1090: ===================== ! 1091: ! 1092: When Emacs is started, it normally loads the file `.emacs' in your ! 1093: home directory. This file, if it exists, should contain Lisp code. It ! 1094: is called your "init file". The command line switches `-q' and `-u' ! 1095: can be used to tell Emacs whether to load an init file (*note Entering ! 1096: Emacs::.). ! 1097: ! 1098: There can also be a "default init file", which is the library named ! 1099: `default.el', found via the standard search path for libraries. The ! 1100: Emacs distribution contains no such library; your site may create one ! 1101: for local customizations. If this library exists, it is loaded ! 1102: whenever you start Emacs. But your init file, if any, is loaded first; ! 1103: if it sets `inhibit-default-init' non-`nil', then `default' is not ! 1104: loaded. ! 1105: ! 1106: If you have a large amount of code in your `.emacs' file, you should ! 1107: move it into another file named `SOMETHING.el', byte-compile it (*note ! 1108: Lisp Libraries::.), and make your `.emacs' file load the other file ! 1109: using `load'. ! 1110: ! 1111: * Menu: ! 1112: ! 1113: * Init Syntax:: Syntax of constants in Emacs Lisp. ! 1114: * Init Examples:: How to do some things with an init file. ! 1115: * Terminal Init:: Each terminal type can have an init file. ! 1116: * Debugging Init:: How to debug your `.emacs' file. ! 1117: ! 1118: ! 1119: File: emacs, Node: Init Syntax, Next: Init Examples, Prev: Init File, Up: Init File ! 1120: ! 1121: Init File Syntax ! 1122: ---------------- ! 1123: ! 1124: The `.emacs' file contains one or more Lisp function call ! 1125: expressions. Each of these consists of a function name followed by ! 1126: arguments, all surrounded by parentheses. For example, `(setq ! 1127: fill-column 60)' represents a call to the function `setq' which is used ! 1128: to set the variable `fill-column' (*note Filling::.) to 60. ! 1129: ! 1130: The second argument to `setq' is an expression for the new value of ! 1131: the variable. This can be a constant, a variable, or a function call ! 1132: expression. In `.emacs', constants are used most of the time. They ! 1133: can be: ! 1134: ! 1135: Numbers: ! 1136: Numbers are written in decimal, with an optional initial minus ! 1137: sign. ! 1138: ! 1139: Strings: ! 1140: Lisp string syntax is the same as C string syntax with a few extra ! 1141: features. Use a double-quote character to begin and end a string ! 1142: constant. ! 1143: ! 1144: Newlines and special characters may be present literally in ! 1145: strings. They can also be represented as backslash sequences: ! 1146: `\n' for newline, `\b' for backspace, `\r' for carriage return, ! 1147: `\t' for tab, `\f' for formfeed (control-l), `\e' for escape, `\\' ! 1148: for a backslash, `\"' for a double-quote, or `\OOO' for the ! 1149: character whose octal code is OOO. Backslash and double-quote are ! 1150: the only characters for which backslash sequences are mandatory. ! 1151: ! 1152: `\C-' can be used as a prefix for a control character, as in ! 1153: `\C-s' for ASCII Control-S, and `\M-' can be used as a prefix for ! 1154: a meta character, as in `\M-a' for Meta-A or `\M-\C-a' for ! 1155: Control-Meta-A. ! 1156: ! 1157: Characters: ! 1158: Lisp character constant syntax consists of a `?' followed by ! 1159: either a character or an escape sequence starting with `\'. ! 1160: Examples: `?x', `?\n', `?\"', `?\)'. Note that strings and ! 1161: characters are not interchangeable in Lisp; some contexts require ! 1162: one and some contexts require the other. ! 1163: ! 1164: True: ! 1165: `t' stands for `true'. ! 1166: ! 1167: False: ! 1168: `nil' stands for `false'. ! 1169: ! 1170: Other Lisp objects: ! 1171: Write a single-quote (') followed by the Lisp object you want. ! 1172: ! 1173:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.