summaryrefslogtreecommitdiff
path: root/info/emacs-11
diff options
context:
space:
mode:
Diffstat (limited to 'info/emacs-11')
-rw-r--r--info/emacs-111173
1 files changed, 1173 insertions, 0 deletions
diff --git a/info/emacs-11 b/info/emacs-11
new file mode 100644
index 00000000000..7a4245aae77
--- /dev/null
+++ b/info/emacs-11
@@ -0,0 +1,1173 @@
+This is Info file ../info/emacs, produced by Makeinfo-1.49 from the
+input file emacs.texi.
+
+ This file documents the GNU Emacs editor.
+
+ Copyright (C) 1985, 1986, 1988, 1992 Richard M. Stallman.
+
+ Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice are
+preserved on all copies.
+
+ Permission is granted to copy and distribute modified versions of
+this manual under the conditions for verbatim copying, provided also
+that the sections entitled "The GNU Manifesto", "Distribution" and "GNU
+General Public License" are included exactly as in the original, and
+provided that the entire resulting derived work is distributed under the
+terms of a permission notice identical to this one.
+
+ Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that the sections entitled "The GNU Manifesto",
+"Distribution" and "GNU General Public License" may be included in a
+translation approved by the author instead of in the original English.
+
+
+File: emacs, Node: Dissociated Press, Next: Amusements, Prev: Hardcopy, Up: Top
+
+Dissociated Press
+=================
+
+ `M-x dissociated-press' is a command for scrambling a file of text
+either word by word or character by character. Starting from a buffer
+of straight English, it produces extremely amusing output. The input
+comes from the current Emacs buffer. Dissociated Press writes its
+output in a buffer named `*Dissociation*', and redisplays that buffer
+after every couple of lines (approximately) to facilitate reading it.
+
+ `dissociated-press' asks every so often whether to continue
+operating. Answer `n' to stop it. You can also stop at any time by
+typing `C-g'. The dissociation output remains in the `*Dissociation*'
+buffer for you to copy elsewhere if you wish.
+
+ Dissociated Press operates by jumping at random from one point in the
+buffer to another. In order to produce plausible output rather than
+gibberish, it insists on a certain amount of overlap between the end of
+one run of consecutive words or characters and the start of the next.
+That is, if it has just printed out `president' and then decides to
+jump to a different point in the file, it might spot the `ent' in
+`pentagon' and continue from there, producing `presidentagon'. Long
+sample texts produce the best results.
+
+ A positive argument to `M-x dissociated-press' tells it to operate
+character by character, and specifies the number of overlap characters.
+ A negative argument tells it to operate word by word and specifies the
+number of overlap words. In this mode, whole words are treated as the
+elements to be permuted, rather than characters. No argument is
+equivalent to an argument of two. For your againformation, the output
+goes only into the buffer `*Dissociation*'. The buffer you start with
+is not changed.
+
+ Dissociated Press produces nearly the same results as a Markov chain
+based on a frequency table constructed from the sample text. It is,
+however, an independent, ignoriginal invention. Dissociated Press
+techniquitously copies several consecutive characters from the sample
+between random choices, whereas a Markov chain would choose randomly for
+each word or character. This makes for more plausible sounding results,
+and runs faster.
+
+ It is a mustatement that too much use of Dissociated Press can be a
+developediment to your real work. Sometimes to the point of outragedy.
+And keep dissociwords out of your documentation, if you want it to be
+well userenced and properbose. Have fun. Your buggestions are welcome.
+
+
+File: emacs, Node: Amusements, Next: Emulation, Prev: Dissociated Press, Up: Top
+
+Other Amusements
+================
+
+ If you are a little bit bored, you can try `M-x hanoi'. If you are
+considerably bored, give it a numeric argument. If you are very very
+bored, try an argument of 9. Sit back and watch.
+
+ When you are frustrated, try the famous Eliza program. Just do `M-x
+doctor'. End each input by typing `RET' twice.
+
+ When you are feeling strange, type `M-x yow'.
+
+
+File: emacs, Node: Emulation, Next: Customization, Prev: Amusements, Up: Top
+
+Emulation
+=========
+
+ GNU Emacs can be programmed to emulate (more or less) most other
+editors. Standard facilities can emulate these:
+
+EDT (DEC VMS editor)
+ Turn on EDT emulation with `M-x edt-emulation-on'. `M-x
+ edt-emulation-off' restores normal Emacs command bindings.
+
+ Most of the EDT emulation commands are keypad keys, and most
+ standard Emacs key bindings are still available. The EDT
+ emulation rebindings are done in the global keymap, so there is no
+ problem switching buffers or major modes while in EDT emulation.
+
+Gosling Emacs
+ Turn on emulation of Gosling Emacs (aka Unipress Emacs) with `M-x
+ set-gosmacs-bindings'. This redefines many keys, mostly on the
+ `C-x' and `ESC' prefixes, to work as they do in Gosmacs. `M-x
+ set-gnu-bindings' returns to normal GNU Emacs by rebinding the
+ same keys to the definitions they had at the time `M-x
+ set-gosmacs-bindings' was done.
+
+ It is also possible to run Mocklisp code written for Gosling Emacs.
+ *Note Mocklisp::.
+
+vi (Berkeley Unix editor)
+ Turn on vi emulation with `M-x vi-mode'. This is a major mode
+ that replaces the previously established major mode. All of the
+ vi commands that, in real vi, enter "input" mode are programmed in
+ the Emacs emulator to return to the previous major mode. Thus,
+ ordinary Emacs serves as vi's "input" mode.
+
+ Because vi emulation works through major modes, it does not work
+ to switch buffers during emulation. Return to normal Emacs first.
+
+ If you plan to use vi emulation much, you probably want to bind a
+ key to the `vi-mode' command.
+
+vi (alternate emulator)
+ Another vi emulator said to resemble real vi more thoroughly is
+ invoked by `M-x vip-mode'. "Input" mode in this emulator is
+ changed from ordinary Emacs so you can use ESC to go back to
+ emulated vi command mode. To get from emulated vi command mode
+ back to ordinary Emacs, type `C-z'.
+
+ This emulation does not work through major modes, and it is
+ possible to switch buffers in various ways within the emulator.
+ It is not so necessary to assign a key to the command `vip-mode' as
+ it is with `vi-mode' because terminating insert mode does not use
+ it.
+
+ For full information, see the long comment at the beginning of the
+ source file, which is `lisp/vip.el' in the Emacs distribution.
+
+ I am interested in hearing which vi emulator users prefer, as well
+as in receiving more complete user documentation for either or both
+emulators. Warning: loading both at once may cause name conficts; no
+one has checked.
+
+
+File: emacs, Node: Customization, Next: Quitting, Prev: Emulation, Up: Top
+
+Customization
+*************
+
+ This chapter talks about various topics relevant to adapting the
+behavior of Emacs in minor ways.
+
+ All kinds of customization affect only the particular Emacs job that
+you do them in. They are completely lost when you kill the Emacs job,
+and have no effect on other Emacs jobs you may run at the same time or
+later. The only way an Emacs job can affect anything outside of it is
+by writing a file; in particular, the only way to make a customization
+`permanent' is to put something in your `.emacs' file or other
+appropriate file to do the customization in each session. *Note Init
+File::.
+
+* Menu:
+
+* Minor Modes:: Each minor mode is one feature you can turn on
+ independently of any others.
+* Variables:: Many Emacs commands examine Emacs variables
+ to decide what to do; by setting variables,
+ you can control their functioning.
+* Keyboard Macros:: A keyboard macro records a sequence of keystrokes
+ to be replayed with a single command.
+* Key Bindings:: The keymaps say what command each key runs.
+ By changing them, you can "redefine keys".
+* Syntax:: The syntax table controls how words and expressions
+ are parsed.
+* Init File:: How to write common customizations in the `.emacs' file.
+
+
+File: emacs, Node: Minor Modes, Next: Variables, Prev: Customization, Up: Customization
+
+Minor Modes
+===========
+
+ Minor modes are options which you can use or not. For example, Auto
+Fill mode is a minor mode in which SPC breaks lines between words as you
+type. All the minor modes are independent of each other and of the
+selected major mode. Most minor modes say in the mode line when they
+are on; for example, `Fill' in the mode line means that Auto Fill mode
+is on.
+
+ Append `-mode' to the name of a minor mode to get the name of a
+command function that turns the mode on or off. Thus, the command to
+enable or disable Auto Fill mode is called `M-x auto-fill-mode'. These
+commands are usually invoked with `M-x', but you can bind keys to them
+if you wish. With no argument, the function turns the mode on if it was
+off and off if it was on. This is known as "toggling". A positive
+argument always turns the mode on, and an explicit zero argument or a
+negative argument always turns it off.
+
+ Auto Fill mode allows you to enter filled text without breaking lines
+explicitly. Emacs inserts newlines as necessary to prevent lines from
+becoming too long. *Note Filling::.
+
+ Overwrite mode causes ordinary printing characters to replace
+existing text instead of shoving it over. For example, if the point is
+in front of the `B' in `FOOBAR', then in Overwrite mode typing a `G'
+changes it to `FOOGAR', instead of making it `FOOGBAR' as usual.
+
+ Abbrev mode allows you to define abbreviations that automatically
+expand as you type them. For example, `amd' might expand to `abbrev
+mode'. *Note Abbrevs::, for full information.
+
+
+File: emacs, Node: Variables, Next: Keyboard Macros, Prev: Minor Modes, Up: Customization
+
+Variables
+=========
+
+ A "variable" is a Lisp symbol which has a value. The symbol's name
+is also called the name of the variable. Variable names can contain any
+characters, but conventionally they are chosen to be words separated by
+hyphens. A variable can have a documentation string which describes
+what kind of value it should have and how the value will be used.
+
+ Lisp allows any variable to have any kind of value, but most
+variables that Emacs uses require a value of a certain type. Often the
+value should always be a string, or should always be a number.
+Sometimes we say that a certain feature is turned on if a variable is
+"non-`nil'," meaning that if the variable's value is `nil', the feature
+is off, but the feature is on for any other value. The conventional
+value to use to turn on the feature--since you have to pick one
+particular value when you set the variable--is `t'.
+
+ Emacs uses many Lisp variables for internal recordkeeping, as any
+Lisp program must, but the most interesting variables for you are the
+ones that exist for the sake of customization. Emacs does not
+(usually) change the values of these variables; instead, you set the
+values, and thereby alter and control the behavior of certain Emacs
+commands. These variables are called "options". Most options are
+documented in this manual, and appear in the Variable Index (*note
+Variable Index::.).
+
+ One example of a variable which is an option is `fill-column', which
+specifies the position of the right margin (as a number of characters
+from the left margin) to be used by the fill commands (*note
+Filling::.).
+
+* Menu:
+
+* Examining:: Examining or setting one variable's value.
+* Edit Options:: Examining or editing list of all variables' values.
+* Locals:: Per-buffer values of variables.
+* File Variables:: How files can specify variable values.
+
+
+File: emacs, Node: Examining, Next: Edit Options, Prev: Variables, Up: Variables
+
+Examining and Setting Variables
+-------------------------------
+
+`C-h v'
+`M-x describe-variable'
+ Print the value and documentation of a variable.
+
+`M-x set-variable'
+ Change the value of a variable.
+
+ To examine the value of a single variable, type `C-h v'
+(`describe-variable'), which reads a variable name using the
+minibuffer, with completion. It prints both the value and the
+documentation of the variable.
+
+ C-h v fill-column RET
+
+prints something like
+ fill-column's value is 72
+
+ Documentation:
+ *Column beyond which automatic line-wrapping should happen.
+ Automatically becomes local when set in any fashion.
+
+The star at the beginning of the documentation indicates that this
+variable is an option. `C-h v' is not restricted to options; it allows
+any variable name.
+
+ If you know which option you want to set, you can set it using `M-x
+set-variable'. This reads the variable name with the minibuffer (with
+completion), and then reads a Lisp expression for the new value using
+the minibuffer a second time. For example,
+
+ M-x set-variable RET fill-column RET 72 RET
+
+sets `fill-column' to 72, like executing the Lisp expression
+
+ (setq fill-column 72)
+
+ Setting variables in this way, like all means of customizing Emacs
+except where explicitly stated, affects only the current Emacs session.
+
+
+File: emacs, Node: Edit Options, Next: Locals, Prev: Examining, Up: Variables
+
+Editing Variable Values
+-----------------------
+
+`M-x list-options'
+ Display a buffer listing names, values and documentation of all
+ options.
+
+`M-x edit-options'
+ Change option values by editing a list of options.
+
+ `M-x list-options' displays a list of all Emacs option variables, in
+an Emacs buffer named `*List Options*'. Each option is shown with its
+documentation and its current value. Here is what a portion of it might
+look like:
+
+ ;; exec-path:
+ ("." "/usr/local/bin" "/usr/ucb" "/bin" "/usr/bin" "/u2/emacs/etc")
+ *List of directories to search programs to run in subprocesses.
+ Each element is a string (directory name)
+ or nil (try the default directory).
+ ;;
+ ;; fill-column:
+ 72
+ *Column beyond which automatic line-wrapping should happen.
+ Automatically becomes local when set in any fashion.
+ ;;
+
+ `M-x edit-options' goes one step further and immediately selects the
+`*List Options*' buffer; this buffer uses the major mode Options mode,
+which provides commands that allow you to point at an option and change
+its value:
+
+`s'
+ Set the variable point is in or near to a new value read using the
+ minibuffer.
+
+`x'
+ Toggle the variable point is in or near: if the value was `nil',
+ it becomes `t'; otherwise it becomes `nil'.
+
+`1'
+ Set the variable point is in or near to `t'.
+
+`0'
+ Set the variable point is in or near to `nil'.
+
+`n'
+`p'
+ Move to the next or previous variable.
+
+ Changes take effect immediately.
+
+
+File: emacs, Node: Locals, Next: File Variables, Prev: Edit Options, Up: Variables
+
+Local Variables
+---------------
+
+`M-x make-local-variable'
+ Make a variable have a local value in the current buffer.
+
+`M-x kill-local-variable'
+ Make a variable use its global value in the current buffer.
+
+`M-x make-variable-buffer-local'
+ Mark a variable so that setting it will make it local to the
+ buffer that is current at that time.
+
+ Any variable can be made "local" to a specific Emacs buffer. This
+means that its value in that buffer is independent of its value in other
+buffers. A few variables are always local in every buffer. Every other
+Emacs variable has a "global" value which is in effect in all buffers
+that have not made the variable local.
+
+ Major modes always make the variables they set local to the buffer.
+This is why changing major modes in one buffer has no effect on other
+buffers.
+
+ `M-x make-local-variable' reads the name of a variable and makes it
+local to the current buffer. Further changes in this buffer will not
+affect others, and further changes in the global value will not affect
+this buffer.
+
+ `M-x make-variable-buffer-local' reads the name of a variable and
+changes the future behavior of the variable so that it will become local
+automatically when it is set. More precisely, once a variable has been
+marked in this way, the usual ways of setting the variable will
+automatically do `make-local-variable' first. We call such variables
+"per-buffer" variables.
+
+ Some important variables have been marked per-buffer already. These
+include `abbrev-mode', `auto-fill-hook', `case-fold-search',
+`ctl-arrow', `comment-column', `fill-column', `fill-prefix',
+`indent-tabs-mode', `left-margin', `mode-line-format', `overwrite-mode',
+`selective-display', `tab-width', `selective-display-ellipses', and
+`truncate-lines'. Some other variables are always local in every
+buffer, but they are used for internal purposes.
+
+ `M-x kill-local-variable' reads the name of a variable and makes it
+cease to be local to the current buffer. The global value of the
+variable henceforth is in effect in this buffer. Setting the major
+mode kills all the local variables of the buffer.
+
+ To set the global value of a variable, regardless of whether the
+variable has a local value in the current buffer, you can use the Lisp
+function `setq-default'. It works like `setq'. If there is a local
+value in the current buffer, the local value is not affected by
+`setq-default'; thus, the new global value may not be visible until you
+switch to another buffer. For example,
+
+ (setq-default fill-column 72)
+
+`setq-default' is the only way to set the global value of a variable
+that has been marked with `make-variable-buffer-local'.
+
+ Programs can look at a variable's default value with `default-value'.
+This function takes a symbol as argument and returns its default value.
+The argument is evaluated; usually you must quote it explicitly. For
+example,
+
+ (default-value 'fill-column)
+
+
+File: emacs, Node: File Variables, Prev: Locals, Up: Variables
+
+Local Variables in Files
+------------------------
+
+ A file can contain a "local variables list", which specifies the
+values to use for certain Emacs variables when that file is edited.
+Visiting the file checks for a local variables list and makes each
+variable in the list local to the buffer in which the file is visited,
+with the value specified in the file.
+
+ A local variables list goes near the end of the file, in the last
+page. (It is often best to put it on a page by itself.) The local
+variables list starts with a line containing the string `Local
+Variables:', and ends with a line containing the string `End:'. In
+between come the variable names and values, one set per line, as
+`VARIABLE: VALUE'. The VALUEs are not evaluated; they are used
+literally.
+
+ The line which starts the local variables list does not have to say
+just `Local Variables:'. If there is other text before `Local
+Variables:', that text is called the "prefix", and if there is other
+text after, that is called the "suffix". If these are present, each
+entry in the local variables list should have the prefix before it and
+the suffix after it. This includes the `End:' line. The prefix and
+suffix are included to disguise the local variables list as a comment so
+that the compiler or text formatter will not be perplexed by it. If
+you do not need to disguise the local variables list as a comment in
+this way, do not bother with a prefix or a suffix.
+
+ Two "variable" names are special in a local variables list: a value
+for the variable `mode' really sets the major mode, and a value for the
+variable `eval' is simply evaluated as an expression and the value is
+ignored. These are not real variables; setting such variables in any
+other context has no such effect. If `mode' is used in a local
+variables list, it should be the first entry in the list.
+
+ Here is an example of a local variables list:
+
+ ;;; Local Variables: ***
+ ;;; mode:lisp ***
+ ;;; comment-column:0 ***
+ ;;; comment-start: ";;; " ***
+ ;;; comment-end:"***" ***
+ ;;; End: ***
+
+ Note that the prefix is `;;; ' and the suffix is ` ***'. Note also
+that comments in the file begin with and end with the same strings.
+Presumably the file contains code in a language which is like Lisp
+(like it enough for Lisp mode to be useful) but in which comments start
+and end in that way. The prefix and suffix are used in the local
+variables list to make the list appear as comments when the file is read
+by the compiler or interpreter for that language.
+
+ The start of the local variables list must be no more than 3000
+characters from the end of the file, and must be in the last page if the
+file is divided into pages. Otherwise, Emacs will not notice it is
+there. The purpose of this is so that a stray `Local Variables:' not in
+the last page does not confuse Emacs, and so that visiting a long file
+that is all one page and has no local variables list need not take the
+time to search the whole file.
+
+ You may be tempted to try to turn on Auto Fill mode with a local
+variable list. That is a mistake. The choice of Auto Fill mode or not
+is a matter of individual taste, not a matter of the contents of
+particular files. If you want to use Auto Fill, set up major mode hooks
+with your `.emacs' file to turn it on (when appropriate) for you alone
+(*note Init File::.). Don't try to use a local variable list that would
+impose your taste on everyone.
+
+ If you are concerned that you might visit a file containing a
+Trojan-horse local variable specification, you can prevent local
+variables processing by setting the variable `inhibit-local-variables'
+to a non-`nil' value. Emacs will display the local variables
+specification and then ask you whether to process it.
+
+
+File: emacs, Node: Keyboard Macros, Next: Key Bindings, Prev: Variables, Up: Customization
+
+Keyboard Macros
+===============
+
+ A "keyboard macro" is a command defined by the user to abbreviate a
+sequence of keys. For example, if you discover that you are about to
+type `C-n C-d' forty times, you can speed your work by defining a
+keyboard macro to do `C-n C-d' and calling it with a repeat count of
+forty.
+
+`C-x ('
+ Start defining a keyboard macro (`start-kbd-macro').
+
+`C-x )'
+ End the definition of a keyboard macro (`end-kbd-macro').
+
+`C-x e'
+ Execute the most recent keyboard macro (`call-last-kbd-macro').
+
+`C-u C-x ('
+ Re-execute last keyboard macro, then add more keys to its
+ definition.
+
+`C-x q'
+ When this point is reached during macro execution, ask for
+ confirmation (`kbd-macro-query').
+
+`M-x name-last-kbd-macro'
+ Give a command name (for the duration of the session) to the most
+ recently defined keyboard macro.
+
+`M-x insert-kbd-macro'
+ Insert in the buffer a keyboard macro's definition, as Lisp code.
+
+ Keyboard macros differ from ordinary Emacs commands in that they are
+written in the Emacs command language rather than in Lisp. This makes
+it easier for the novice to write them, and makes them more convenient
+as temporary hacks. However, the Emacs command language is not powerful
+enough as a programming language to be useful for writing anything
+intelligent or general. For such things, Lisp must be used.
+
+ You define a keyboard macro while executing the commands which are
+the definition. Put differently, as you are defining a keyboard macro,
+the definition is being executed for the first time. This way, you can
+see what the effects of your commands are, so that you don't have to
+figure them out in your head. When you are finished, the keyboard
+macro is defined and also has been, in effect, executed once. You can
+then do the whole thing over again by invoking the macro.
+
+* Menu:
+
+* Basic Kbd Macro:: Defining and running keyboard macros.
+* Save Kbd Macro:: Giving keyboard macros names; saving them in files.
+* Kbd Macro Query:: Keyboard macros that do different things each use.
+
+
+File: emacs, Node: Basic Kbd Macro, Next: Save Kbd Macro, Prev: Keyboard Macros, Up: Keyboard Macros
+
+Basic Use
+---------
+
+ To start defining a keyboard macro, type the `C-x (' command
+(`start-kbd-macro'). From then on, your keys continue to be executed,
+but also become part of the definition of the macro. `Def' appears in
+the mode line to remind you of what is going on. When you are
+finished, the `C-x )' command (`end-kbd-macro') terminates the
+definition (without becoming part of it!).
+
+For example,
+
+ C-x ( M-F foo C-x )
+
+defines a macro to move forward a word and then insert `foo'.
+
+ The macro thus defined can be invoked again with the `C-x e' command
+(`call-last-kbd-macro'), which may be given a repeat count as a numeric
+argument to execute the macro many times. `C-x )' can also be given a
+repeat count as an argument, in which case it repeats the macro that
+many times right after defining it, but defining the macro counts as
+the first repetition (since it is executed as you define it). So,
+giving `C-x )' an argument of 4 executes the macro immediately 3
+additional times. An argument of zero to `C-x e' or `C-x )' means
+repeat the macro indefinitely (until it gets an error or you type
+`C-g').
+
+ If you wish to repeat an operation at regularly spaced places in the
+text, define a macro and include as part of the macro the commands to
+move to the next place you want to use it. For example, if you want to
+change each line, you should position point at the start of a line, and
+define a macro to change that line and leave point at the start of the
+next line. Then repeating the macro will operate on successive lines.
+
+ After you have terminated the definition of a keyboard macro, you
+can add to the end of its definition by typing `C-u C-x ('. This is
+equivalent to plain `C-x (' followed by retyping the whole definition
+so far. As a consequence it re-executes the macro as previously
+defined.
+
+ One limitation on the use of keyboard macros is that if you exit a
+recursive edit within a macro that was not entered within the macro,
+then the execution of the macro stops at that point. In Emacs 18, View
+mode uses a recursive edit, so exiting View mode is an occasion for such
+a problem.
+
+
+File: emacs, Node: Save Kbd Macro, Next: Kbd Macro Query, Prev: Basic Kbd Macro, Up: Keyboard Macros
+
+Naming and Saving Keyboard Macros
+---------------------------------
+
+ If you wish to save a keyboard macro for longer than until you
+define the next one, you must give it a name using `M-x
+name-last-kbd-macro'. This reads a name as an argument using the
+minibuffer and defines that name to execute the macro. The macro name
+is a Lisp symbol, and defining it in this way makes it a valid command
+name for calling with `M-x' or for binding a key to with
+`global-set-key' (*note Keymaps::.). If you specify a name that has a
+prior definition other than another keyboard macro, an error message is
+printed and nothing is changed.
+
+ Once a macro has a command name, you can save its definition in a
+file. Then it can be used in another editing session. First visit the
+file you want to save the definition in. Then use the command
+
+ M-x insert-kbd-macro RET MACRONAME RET
+
+This inserts some Lisp code that, when executed later, will define the
+same macro with the same definition it has now. You need not
+understand Lisp code to do this, because `insert-kbd-macro' writes the
+Lisp code for you. Then save the file. The file can be loaded with
+`load-file' (*note Lisp Libraries::.). If the file you save in is your
+init file `~/.emacs' (*note Init File::.) then the macro will be
+defined each time you run Emacs.
+
+ If you give `insert-kbd-macro' a prefix argument, it makes
+additional Lisp code to record the keys (if any) that you have bound to
+the keyboard macro, so that the macro will be reassigned the same keys
+when you load the file.
+
+
+File: emacs, Node: Kbd Macro Query, Prev: Save Kbd Macro, Up: Keyboard Macros
+
+Executing Macros with Variations
+--------------------------------
+
+ Using `C-x q' (`kbd-macro-query'), you can get an effect similar to
+that of `query-replace', where the macro asks you each time around
+whether to make a change. When you are defining the macro, type `C-x
+q' at the point where you want the query to occur. During macro
+definition, the `C-x q' does nothing, but when the macro is invoked the
+`C-x q' reads a character from the terminal to decide whether to
+continue.
+
+ The special answers are SPC, DEL, `C-d', `C-l' and `C-r'. Any other
+character terminates execution of the keyboard macro and is then read
+as a command. SPC means to continue. DEL means to skip the remainder
+of this repetition of the macro, starting again from the beginning in
+the next repetition. `C-d' means to skip the remainder of this
+repetition and cancel further repetition. `C-l' redraws the screen and
+asks you again for a character to say what to do. `C-r' enters a
+recursive editing level, in which you can perform editing which is not
+part of the macro. When you exit the recursive edit using `C-M-c', you
+are asked again how to continue with the keyboard macro. If you type a
+SPC at this time, the rest of the macro definition is executed. It is
+up to you to leave point and the text in a state such that the rest of
+the macro will do what you want.
+
+ `C-u C-x q', which is `C-x q' with a numeric argument, performs a
+different function. It enters a recursive edit reading input from the
+keyboard, both when you type it during the definition of the macro, and
+when it is executed from the macro. During definition, the editing you
+do inside the recursive edit does not become part of the macro. During
+macro execution, the recursive edit gives you a chance to do some
+particularized editing. *Note Recursive Edit::.
+
+
+File: emacs, Node: Key Bindings, Next: Syntax, Prev: Keyboard Macros, Up: Customization
+
+Customizing Key Bindings
+========================
+
+ This section deals with the "keymaps" which define the bindings
+between keys and functions, and shows how you can customize these
+bindings.
+
+ A command is a Lisp function whose definition provides for
+interactive use. Like every Lisp function, a command has a function
+name, a Lisp symbol whose name usually consists of lower case letters
+and hyphens.
+
+* Menu:
+
+* Keymaps:: Definition of the keymap data structure.
+ Names of Emacs's standard keymaps.
+* Rebinding:: How to redefine one key's meaning conveniently.
+* Disabling:: Disabling a command means confirmation is required
+ before it can be executed. This is done to protect
+ beginners from surprises.
+
+
+File: emacs, Node: Keymaps, Next: Rebinding, Prev: Key Bindings, Up: Key Bindings
+
+Keymaps
+-------
+
+ The bindings between characters and command functions are recorded in
+data structures called "keymaps". Emacs has many of these. One, the
+"global" keymap, defines the meanings of the single-character keys that
+are defined regardless of major mode. It is the value of the variable
+`global-map'.
+
+ Each major mode has another keymap, its "local keymap", which
+contains overriding definitions for the single-character keys that are
+to be redefined in that mode. Each buffer records which local keymap is
+installed for it at any time, and the current buffer's local keymap is
+the only one that directly affects command execution. The local
+keymaps for Lisp mode, C mode, and many other major modes always exist
+even when not in use. They are the values of the variables
+`lisp-mode-map', `c-mode-map', and so on. For major modes less often
+used, the local keymap is sometimes constructed only when the mode is
+used for the first time in a session. This is to save space.
+
+ There are local keymaps for the minibuffer too; they contain various
+completion and exit commands.
+
+ * `minibuffer-local-map' is used for ordinary input (no completion).
+
+ * `minibuffer-local-ns-map' is similar, except that SPC exits just
+ like RET. This is used mainly for Mocklisp compatibility.
+
+ * `minibuffer-local-completion-map' is for permissive completion.
+
+ * `minibuffer-local-must-match-map' is for strict completion and for
+ cautious completion.
+
+ * `repeat-complex-command-map' is for use in `C-x ESC'.
+
+ Finally, each prefix key has a keymap which defines the key sequences
+that start with it. For example, `ctl-x-map' is the keymap used for
+characters following a `C-x'.
+
+ * `ctl-x-map' is the variable name for the map used for characters
+ that follow `C-x'.
+
+ * `help-map' is used for characters that follow `C-h'.
+
+ * `esc-map' is for characters that follow ESC. Thus, all Meta
+ characters are actually defined by this map.
+
+ * `ctl-x-4-map' is for characters that follow `C-x 4'.
+
+ * `mode-specific-map' is for characters that follow `C-c'.
+
+ The definition of a prefix key is just the keymap to use for looking
+up the following character. Actually, the definition is sometimes a
+Lisp symbol whose function definition is the following character
+keymap. The effect is the same, but it provides a command name for the
+prefix key that can be used as a description of what the prefix key is
+for. Thus, the binding of `C-x' is the symbol `Ctl-X-Prefix', whose
+function definition is the keymap for `C-x' commands, the value of
+`ctl-x-map'.
+
+ Prefix key definitions of this sort can appear in either the global
+map or a local map. The definitions of `C-c', `C-x', `C-h' and ESC as
+prefix keys appear in the global map, so these prefix keys are always
+available. Major modes can locally redefine a key as a prefix by
+putting a prefix key definition for it in the local map.
+
+ A mode can also put a prefix definition of a global prefix character
+such as `C-x' into its local map. This is how major modes override the
+definitions of certain keys that start with `C-x'. This case is
+special, because the local definition does not entirely replace the
+global one. When both the global and local definitions of a key are
+other keymaps, the next character is looked up in both keymaps, with
+the local definition overriding the global one as usual. So, the
+character after the `C-x' is looked up in both the major mode's own
+keymap for redefined `C-x' commands and in `ctl-x-map'. If the major
+mode's own keymap for `C-x' commands contains `nil', the definition
+from the global keymap for `C-x' commands is used.
+
+ A keymap is actually a Lisp object. The simplest form of keymap is a
+Lisp vector of length 128. The binding for a character in such a
+keymap is found by indexing into the vector with the character as an
+index. A keymap can also be a Lisp list whose CAR is the symbol
+`keymap' and whose remaining elements are pairs of the form `(CHAR .
+BINDING)'. Such lists are called "sparse keymaps" because they are used
+when most of the characters' entries will be `nil'. Sparse keymaps are
+used mainly for prefix characters.
+
+ Keymaps are only of length 128, so what about Meta characters, whose
+codes are from 128 to 255? A key that contains a Meta character
+actually represents it as a sequence of two characters, the first of
+which is ESC. So the key `M-a' is really represented as `ESC a', and
+its binding is found at the slot for `a' in `esc-map'.
+
+
+File: emacs, Node: Rebinding, Next: Disabling, Prev: Keymaps, Up: Key Bindings
+
+Changing Key Bindings Interactively
+-----------------------------------
+
+ The way to redefine an Emacs key is to change its entry in a keymap.
+You can change the global keymap, in which case the change is effective
+in all major modes (except those that have their own overriding local
+definitions for the same key). Or you can change the current buffer's
+local map, which affects all buffers using the same major mode.
+
+`M-x global-set-key RET KEY CMD RET'
+ Defines KEY globally to run CMD.
+
+`M-x local-set-key RET KEY CMD RET'
+ Defines KEY locally (in the major mode now in effect) to run CMD.
+
+ For example,
+
+ M-x global-set-key RET C-f next-line RET
+
+would redefine `C-f' to move down a line. The fact that CMD is read
+second makes it serve as a kind of confirmation for KEY.
+
+ These functions offer no way to specify a particular prefix keymap
+as the one to redefine in, but that is not necessary, as you can
+include prefixes in KEY. KEY is read by reading characters one by one
+until they amount to a complete key (that is, not a prefix key). Thus,
+if you type `C-f' for KEY, that's the end; the minibuffer is entered
+immediately to read CMD. But if you type `C-x', another character is
+read; if that is `4', another character is read, and so on. For
+example,
+
+ M-x global-set-key RET C-x 4 $ spell-other-window RET
+
+would redefine `C-x 4 $' to run the (fictitious) command
+`spell-other-window'.
+
+ All the key sequences which consist of `C-c' followed by a letter
+are supposed to be reserved for user customization. That is, Emacs Lisp
+libraries should not define any of these commands.
+
+ The most general way to modify a keymap is the function `define-key',
+used in Lisp code (such as your `.emacs' file). `define-key' takes
+three arguments: the keymap, the key to modify in it, and the new
+definition. *Note Init File::, for an example.
+`substitute-key-definition' is used similarly; it takes three
+arguments, an old definition, a new definition and a keymap, and
+redefines in that keymap all keys that were previously defined with the
+old definition to have the new definition instead.
+
+
+File: emacs, Node: Disabling, Prev: Rebinding, Up: Key Bindings
+
+Disabling Commands
+------------------
+
+ Disabling a command marks the command as requiring confirmation
+before it can be executed. The purpose of disabling a command is to
+prevent beginning users from executing it by accident and being
+confused.
+
+ The direct mechanism for disabling a command is to have a non-`nil'
+`disabled' property on the Lisp symbol for the command. These
+properties are normally set up by the user's `.emacs' file with Lisp
+expressions such as
+
+ (put 'delete-region 'disabled t)
+
+ If the value of the `disabled' property is a string, that string is
+included in the message printed when the command is used:
+
+ (put 'delete-region 'disabled
+ "Text deleted this way cannot be yanked back!\n")
+
+ You can make a command disabled either by editing the `.emacs' file
+directly or with the command `M-x disable-command', which edits the
+`.emacs' file for you. *Note Init File::.
+
+ Attempting to invoke a disabled command interactively in Emacs
+causes the display of a window containing the command's name, its
+documentation, and some instructions on what to do immediately; then
+Emacs asks for input saying whether to execute the command as
+requested, enable it and execute, or cancel it. If you decide to
+enable the command, you are asked whether to do this permanently or
+just for the current session. Enabling permanently works by
+automatically editing your `.emacs' file. You can use `M-x
+enable-command' at any time to enable any command permanently.
+
+ Whether a command is disabled is independent of what key is used to
+invoke it; it also applies if the command is invoked using `M-x'.
+Disabling a command has no effect on calling it as a function from Lisp
+programs.
+
+
+File: emacs, Node: Syntax, Next: Init File, Prev: Key Bindings, Up: Customization
+
+The Syntax Table
+================
+
+ All the Emacs commands which parse words or balance parentheses are
+controlled by the "syntax table". The syntax table says which
+characters are opening delimiters, which are parts of words, which are
+string quotes, and so on. Actually, each major mode has its own syntax
+table (though sometimes related major modes use the same one) which it
+installs in each buffer that uses that major mode. The syntax table
+installed in the current buffer is the one that all commands use, so we
+call it "the" syntax table. A syntax table is a Lisp object, a vector
+of length 256 whose elements are numbers.
+
+* Menu:
+
+* Entry: Syntax Entry. What the syntax table records for each character.
+* Change: Syntax Change. How to change the information.
+
+
+File: emacs, Node: Syntax Entry, Next: Syntax Change, Prev: Syntax, Up: Syntax
+
+Information about Each Character
+--------------------------------
+
+ The syntax table entry for a character is a number that encodes six
+pieces of information:
+
+ * The syntactic class of the character, represented as a small
+ integer.
+
+ * The matching delimiter, for delimiter characters only. The
+ matching delimiter of `(' is `)', and vice versa.
+
+ * A flag saying whether the character is the first character of a
+ two-character comment starting sequence.
+
+ * A flag saying whether the character is the second character of a
+ two-character comment starting sequence.
+
+ * A flag saying whether the character is the first character of a
+ two-character comment ending sequence.
+
+ * A flag saying whether the character is the second character of a
+ two-character comment ending sequence.
+
+ The syntactic classes are stored internally as small integers, but
+are usually described to or by the user with characters. For example,
+`(' is used to specify the syntactic class of opening delimiters. Here
+is a table of syntactic classes, with the characters that specify them.
+
+` '
+ The class of whitespace characters.
+
+`-'
+ Another name for the class of whitespace characters.
+
+`w'
+ The class of word-constituent characters.
+
+`_'
+ The class of characters that are part of symbol names but not
+ words. This class is represented by `_' because the character `_'
+ has this class in both C and Lisp.
+
+`.'
+ The class of punctuation characters that do not fit into any other
+ special class.
+
+`('
+ The class of opening delimiters.
+
+`)'
+ The class of closing delimiters.
+
+`''
+ The class of expression-adhering characters. These characters are
+ part of a symbol if found within or adjacent to one, and are part
+ of a following expression if immediately preceding one, but are
+ like whitespace if surrounded by whitespace.
+
+`"'
+ The class of string-quote characters. They match each other in
+ pairs, and the characters within the pair all lose their syntactic
+ significance except for the `\' and `/' classes of escape
+ characters, which can be used to include a string-quote inside the
+ string.
+
+`$'
+ The class of self-matching delimiters. This is intended for TeX's
+ `$', which is used both to enter and leave math mode. Thus, a
+ pair of matching `$' characters surround each piece of math mode
+ TeX input. A pair of adjacent `$' characters act like a single
+ one for purposes of matching.
+
+`/'
+ The class of escape characters that always just deny the following
+ character its special syntactic significance. The character after
+ one of these escapes is always treated as alphabetic.
+
+`\'
+ The class of C-style escape characters. In practice, these are
+ treated just like `/'-class characters, because the extra
+ possibilities for C escapes (such as being followed by digits)
+ have no effect on where the containing expression ends.
+
+`<'
+ The class of comment-starting characters. Only single-character
+ comment starters (such as `;' in Lisp mode) are represented this
+ way.
+
+`>'
+ The class of comment-ending characters. Newline has this syntax in
+ Lisp mode.
+
+ The characters flagged as part of two-character comment delimiters
+can have other syntactic functions most of the time. For example, `/'
+and `*' in C code, when found separately, have nothing to do with
+comments. The comment-delimiter significance overrides when the pair of
+characters occur together in the proper order. Only the list and sexp
+commands use the syntax table to find comments; the commands
+specifically for comments have other variables that tell them where to
+find comments. And the list and sexp commands notice comments only if
+`parse-sexp-ignore-comments' is non-`nil'. This variable is set to
+`nil' in modes where comment-terminator sequences are liable to appear
+where there is no comment; for example, in Lisp mode where the comment
+terminator is a newline but not every newline ends a comment.
+
+
+File: emacs, Node: Syntax Change, Prev: Syntax Entry, Up: Syntax
+
+Altering Syntax Information
+---------------------------
+
+ It is possible to alter a character's syntax table entry by storing
+a new number in the appropriate element of the syntax table, but it
+would be hard to determine what number to use. Therefore, Emacs
+provides a command that allows you to specify the syntactic properties
+of a character in a convenient way.
+
+ `M-x modify-syntax-entry' is the command to change a character's
+syntax. It can be used interactively, and is also the means used by
+major modes to initialize their own syntax tables. Its first argument
+is the character to change. The second argument is a string that
+specifies the new syntax. When called from Lisp code, there is a
+third, optional argument, which specifies the syntax table in which to
+make the change. If not supplied, or if this command is called
+interactively, the third argument defaults to the current buffer's
+syntax table.
+
+ 1. The first character in the string specifies the syntactic class.
+ It is one of the characters in the previous table (*note Syntax
+ Entry::.).
+
+ 2. The second character is the matching delimiter. For a character
+ that is not an opening or closing delimiter, this should be a
+ space, and may be omitted if no following characters are needed.
+
+ 3. The remaining characters are flags. The flag characters allowed
+ are
+
+ `1'
+ Flag this character as the first of a two-character comment
+ starting sequence.
+
+ `2'
+ Flag this character as the second of a two-character comment
+ starting sequence.
+
+ `3'
+ Flag this character as the first of a two-character comment
+ ending sequence.
+
+ `4'
+ Flag this character as the second of a two-character comment
+ ending sequence.
+
+ A description of the contents of the current syntax table can be
+displayed with `C-h s' (`describe-syntax'). The description of each
+character includes both the string you would have to give to
+`modify-syntax-entry' to set up that character's current syntax, and
+some English to explain that string if necessary.
+
+
+File: emacs, Node: Init File, Prev: Syntax, Up: Customization
+
+The Init File, .emacs
+=====================
+
+ When Emacs is started, it normally loads the file `.emacs' in your
+home directory. This file, if it exists, should contain Lisp code. It
+is called your "init file". The command line switches `-q' and `-u'
+can be used to tell Emacs whether to load an init file (*note Entering
+Emacs::.).
+
+ There can also be a "default init file", which is the library named
+`default.el', found via the standard search path for libraries. The
+Emacs distribution contains no such library; your site may create one
+for local customizations. If this library exists, it is loaded
+whenever you start Emacs. But your init file, if any, is loaded first;
+if it sets `inhibit-default-init' non-`nil', then `default' is not
+loaded.
+
+ If you have a large amount of code in your `.emacs' file, you should
+move it into another file named `SOMETHING.el', byte-compile it (*note
+Lisp Libraries::.), and make your `.emacs' file load the other file
+using `load'.
+
+* Menu:
+
+* Init Syntax:: Syntax of constants in Emacs Lisp.
+* Init Examples:: How to do some things with an init file.
+* Terminal Init:: Each terminal type can have an init file.
+* Debugging Init:: How to debug your `.emacs' file.
+
+
+File: emacs, Node: Init Syntax, Next: Init Examples, Prev: Init File, Up: Init File
+
+Init File Syntax
+----------------
+
+ The `.emacs' file contains one or more Lisp function call
+expressions. Each of these consists of a function name followed by
+arguments, all surrounded by parentheses. For example, `(setq
+fill-column 60)' represents a call to the function `setq' which is used
+to set the variable `fill-column' (*note Filling::.) to 60.
+
+ The second argument to `setq' is an expression for the new value of
+the variable. This can be a constant, a variable, or a function call
+expression. In `.emacs', constants are used most of the time. They
+can be:
+
+Numbers:
+ Numbers are written in decimal, with an optional initial minus
+ sign.
+
+Strings:
+ Lisp string syntax is the same as C string syntax with a few extra
+ features. Use a double-quote character to begin and end a string
+ constant.
+
+ Newlines and special characters may be present literally in
+ strings. They can also be represented as backslash sequences:
+ `\n' for newline, `\b' for backspace, `\r' for carriage return,
+ `\t' for tab, `\f' for formfeed (control-l), `\e' for escape, `\\'
+ for a backslash, `\"' for a double-quote, or `\OOO' for the
+ character whose octal code is OOO. Backslash and double-quote are
+ the only characters for which backslash sequences are mandatory.
+
+ `\C-' can be used as a prefix for a control character, as in
+ `\C-s' for ASCII Control-S, and `\M-' can be used as a prefix for
+ a meta character, as in `\M-a' for Meta-A or `\M-\C-a' for
+ Control-Meta-A.
+
+Characters:
+ Lisp character constant syntax consists of a `?' followed by
+ either a character or an escape sequence starting with `\'.
+ Examples: `?x', `?\n', `?\"', `?\)'. Note that strings and
+ characters are not interchangeable in Lisp; some contexts require
+ one and some contexts require the other.
+
+True:
+ `t' stands for `true'.
+
+False:
+ `nil' stands for `false'.
+
+Other Lisp objects:
+ Write a single-quote (') followed by the Lisp object you want.
+
+ \ No newline at end of file