Annotation of GNUtools/emacs/info/emacs-11, revision 1.1

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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.