Annotation of GNUtools/emacs/info/emacs-8, 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: Comments,  Next: Macro Expansion,  Prev: Matching,  Up: Programs
        !            27: 
        !            28: Manipulating Comments
        !            29: =====================
        !            30: 
        !            31:    The comment commands insert, kill and align comments.
        !            32: 
        !            33: `M-;'
        !            34:      Insert or align comment (`indent-for-comment').
        !            35: 
        !            36: `C-x ;'
        !            37:      Set comment column (`set-comment-column').
        !            38: 
        !            39: `C-u - C-x ;'
        !            40:      Kill comment on current line (`kill-comment').
        !            41: 
        !            42: `M-LFD'
        !            43:      Like RET followed by inserting and aligning a comment
        !            44:      (`indent-new-comment-line').
        !            45: 
        !            46:    The command that creates a comment is `Meta-;'
        !            47: (`indent-for-comment'). If there is no comment already on the line, a
        !            48: new comment is created, aligned at a specific column called the
        !            49: "comment column".  The comment is created by inserting the string Emacs
        !            50: thinks comments should start with (the value of `comment-start'; see
        !            51: below).  Point is left after that string.  If the text of the line
        !            52: extends past the comment column, then the indentation is done to a
        !            53: suitable boundary (usually, at least one space is inserted).  If the
        !            54: major mode has specified a string to terminate comments, that is
        !            55: inserted after point, to keep the syntax valid.
        !            56: 
        !            57:    `Meta-;' can also be used to align an existing comment.  If a line
        !            58: already contains the string that starts comments, then `M-;' just moves
        !            59: point after it and re-indents it to the conventional place.  Exception:
        !            60: comments starting in column 0 are not moved.
        !            61: 
        !            62:    Some major modes have special rules for indenting certain kinds of
        !            63: comments in certain contexts.  For example, in Lisp code, comments which
        !            64: start with two semicolons are indented as if they were lines of code,
        !            65: instead of at the comment column.  Comments which start with three
        !            66: semicolons are supposed to start at the left margin.  Emacs understands
        !            67: these conventions by indenting a double-semicolon comment using TAB,
        !            68: and by not changing the indentation of a triple-semicolon comment at
        !            69: all.
        !            70: 
        !            71:      ;; This function is just an example
        !            72:      ;;; Here either two or three semicolons are appropriate.
        !            73:      (defun foo (x)
        !            74:      ;;; And now, the first part of the function:
        !            75:        ;; The following line adds one.
        !            76:        (1+ x))           ; This line adds one.
        !            77: 
        !            78:    In C code, a comment preceded on its line by nothing but whitespace
        !            79: is indented like a line of code.
        !            80: 
        !            81:    Even when an existing comment is properly aligned, `M-;' is still
        !            82: useful for moving directly to the start of the comment.
        !            83: 
        !            84:    `C-u - C-x ;' (`kill-comment') kills the comment on the current line,
        !            85: if there is one.  The indentation before the start of the comment is
        !            86: killed as well.  If there does not appear to be a comment in the line,
        !            87: nothing is done.  To reinsert the comment on another line, move to the
        !            88: end of that line, do `C-y', and then do `M-;' to realign it.  Note that
        !            89: `C-u - C-x ;' is not a distinct key; it is `C-x ;'
        !            90: (`set-comment-column') with a negative argument.  That command is
        !            91: programmed so that when it receives a negative argument it calls
        !            92: `kill-comment'.  However, `kill-comment' is a valid command which you
        !            93: could bind directly to a key if you wanted to.
        !            94: 
        !            95: Multiple Lines of Comments
        !            96: --------------------------
        !            97: 
        !            98:    If you are typing a comment and find that you wish to continue it on
        !            99: another line, you can use the command `Meta-LFD'
        !           100: (`indent-new-comment-line'), which terminates the comment you are
        !           101: typing, creates a new blank line afterward, and begins a new comment
        !           102: indented under the old one.  When Auto Fill mode is on, going past the
        !           103: fill column while typing a comment causes the comment to be continued
        !           104: in just this fashion.  If point is not at the end of the line when
        !           105: `M-LFD' is typed, the text on the rest of the line becomes part of the
        !           106: new comment line.
        !           107: 
        !           108: Options Controlling Comments
        !           109: ----------------------------
        !           110: 
        !           111:    The comment column is stored in the variable `comment-column'.  You
        !           112: can set it to a number explicitly.  Alternatively, the command `C-x ;'
        !           113: (`set-comment-column') sets the comment column to the column point is
        !           114: at.  `C-u C-x ;' sets the comment column to match the last comment
        !           115: before point in the buffer, and then does a `Meta-;' to align the
        !           116: current line's comment under the previous one.  Note that `C-u - C-x ;'
        !           117: runs the function `kill-comment' as described above.
        !           118: 
        !           119:    `comment-column' is a per-buffer variable; altering the variable
        !           120: affects only the current buffer, but there is a default value which you
        !           121: can change as well.  *Note Locals::.  Many major modes initialize this
        !           122: variable for the current buffer.
        !           123: 
        !           124:    The comment commands recognize comments based on the regular
        !           125: expression that is the value of the variable `comment-start-skip'. 
        !           126: This regexp should not match the null string.  It may match more than
        !           127: the comment starting delimiter in the strictest sense of the word; for
        !           128: example, in C mode the value of the variable is `"/\\*+ *"', which
        !           129: matches extra stars and spaces after the `/*' itself.  (Note that `\\'
        !           130: is needed in Lisp syntax to include a `\' in the string, which is needed
        !           131: to deny the first star its special meaning in regexp syntax.  *Note
        !           132: Regexps::.)
        !           133: 
        !           134:    When a comment command makes a new comment, it inserts the value of
        !           135: `comment-start' to begin it.  The value of `comment-end' is inserted
        !           136: after point, so that it will follow the text that you will insert into
        !           137: the comment.  In C mode, `comment-start' has the value `"/* "' and
        !           138: `comment-end' has the value `" */"'.
        !           139: 
        !           140:    `comment-multi-line' controls how `M-LFD' (`indent-new-comment-line')
        !           141: behaves when used inside a comment.  If `comment-multi-line' is `nil',
        !           142: as it normally is, then the comment on the starting line is terminated
        !           143: and a new comment is started on the new following line.  If
        !           144: `comment-multi-line' is not `nil', then the new following line is set
        !           145: up as part of the same comment that was found on the starting line.
        !           146: This is done by not inserting a terminator on the old line, and not
        !           147: inserting a starter on the new line.  In languages where multi-line
        !           148: comments work, the choice of value for this variable is a matter of
        !           149: taste.
        !           150: 
        !           151:    The variable `comment-indent-hook' should contain a function that
        !           152: will be called to compute the indentation for a newly inserted comment
        !           153: or for aligning an existing comment.  It is set differently by various
        !           154: major modes.  The function is called with no arguments, but with point
        !           155: at the beginning of the comment, or at the end of a line if a new
        !           156: comment is to be inserted.  It should return the column in which the
        !           157: comment ought to start. For example, in Lisp mode, the indent hook
        !           158: function bases its decision on how many semicolons begin an existing
        !           159: comment, and on the code in the preceding lines.
        !           160: 
        !           161: 
        !           162: File: emacs,  Node: Macro Expansion,  Next: Balanced Editing,  Prev: Comments,  Up: Programs
        !           163: 
        !           164: Viewing How C Macros Expand
        !           165: ===========================
        !           166: 
        !           167:    When you are debugging C code that uses macros, sometimes it is hard
        !           168: to figure out precisely how the macros expand.  The command `M-x
        !           169: c-macro-expand'.  It runs the C preprocessor and shows you what
        !           170: expansion results from the region.  The portion of the buffer before the
        !           171: region is also included in preprocessing, for the sake of macros defined
        !           172: there, but the output from this part isn't shown.
        !           173: 
        !           174: 
        !           175: File: emacs,  Node: Balanced Editing,  Next: Lisp Completion,  Prev: Macro Expansion,  Up: Programs
        !           176: 
        !           177: Editing Without Unbalanced Parentheses
        !           178: ======================================
        !           179: 
        !           180: `M-('
        !           181:      Put parentheses around next sexp(s) (`insert-parentheses').
        !           182: 
        !           183: `M-)'
        !           184:      Move past next close parenthesis and re-indent
        !           185:      (`move-over-close-and-reindent').
        !           186: 
        !           187:    The two commands, `M-(' (`insert-parentheses') and `M-)'
        !           188: (`move-over-close-and-reindent'), are designed to facilitate a style of
        !           189: editing which keeps parentheses balanced at all times.  `M-(' inserts a
        !           190: pair of parentheses, either together as in `()', or, if given an
        !           191: argument, around the next several sexps, and leaves point after the open
        !           192: parenthesis.  Instead of typing `( F O O )', you can type `M-( F O O',
        !           193: which has the same effect except for leaving the cursor before the
        !           194: close parenthesis.  Then you would type `M-)', which moves past the
        !           195: close parenthesis, deleting any indentation preceding it (in this
        !           196: example there is none), and indenting with LFD after it.
        !           197: 
        !           198: 
        !           199: File: emacs,  Node: Lisp Completion,  Next: Documentation,  Prev: Balanced Editing,  Up: Programs
        !           200: 
        !           201: Completion for Lisp Symbols
        !           202: ===========================
        !           203: 
        !           204:    Usually completion happens in the minibuffer.  But one kind of
        !           205: completion is available in all buffers: completion for Lisp symbol
        !           206: names.
        !           207: 
        !           208:    The command `M-TAB' (`lisp-complete-symbol') takes the partial Lisp
        !           209: symbol before point to be an abbreviation, and compares it against all
        !           210: nontrivial Lisp symbols currently known to Emacs.  Any additional
        !           211: characters that they all have in common are inserted at point.
        !           212: Nontrivial symbols are those that have function definitions, values or
        !           213: properties.
        !           214: 
        !           215:    If there is an open-parenthesis immediately before the beginning of
        !           216: the partial symbol, only symbols with function definitions are
        !           217: considered as completions.
        !           218: 
        !           219:    If the partial name in the buffer has more than one possible
        !           220: completion and they have no additional characters in common, a list of
        !           221: all possible completions is displayed in another window.
        !           222: 
        !           223: 
        !           224: File: emacs,  Node: Documentation,  Next: Change Log,  Prev: Lisp Completion,  Up: Programs
        !           225: 
        !           226: Documentation Commands
        !           227: ======================
        !           228: 
        !           229:    As you edit Lisp code to be run in Emacs, the commands `C-h f'
        !           230: (`describe-function') and `C-h v' (`describe-variable') can be used to
        !           231: print documentation of functions and variables that you want to call. 
        !           232: These commands use the minibuffer to read the name of a function or
        !           233: variable to document, and display the documentation in a window.
        !           234: 
        !           235:    For extra convenience, these commands provide default arguments
        !           236: based on the code in the neighborhood of point.  `C-h f' sets the
        !           237: default to the function called in the innermost list containing point. 
        !           238: `C-h v' uses the symbol name around or adjacent to point as its default.
        !           239: 
        !           240:    Documentation on Unix commands, system calls and libraries can be
        !           241: obtained with the `M-x manual-entry' command.  This reads a topic as an
        !           242: argument, and displays the text on that topic from the Unix manual.
        !           243: `manual-entry' always searches all 8 sections of the manual, and
        !           244: concatenates all the entries that are found.  For example, the topic
        !           245: `termcap' finds the description of the termcap library from section 3,
        !           246: followed by the description of the termcap data base from section 5.
        !           247: 
        !           248: 
        !           249: File: emacs,  Node: Change Log,  Next: Tags,  Prev: Documentation,  Up: Programs
        !           250: 
        !           251: Change Logs
        !           252: ===========
        !           253: 
        !           254:    The Emacs command `M-x add-change-log-entry' helps you keep a record
        !           255: of when and why you have changed a program.  It assumes that you have a
        !           256: file in which you write a chronological sequence of entries describing
        !           257: individual changes.  The default is to store the change entries in a
        !           258: file called `ChangeLog' in the same directory as the file you are
        !           259: editing. The same `ChangeLog' file therefore records changes for all
        !           260: the files in the directory.
        !           261: 
        !           262:    A change log entry starts with a header line that contains your name
        !           263: and the current date.  Aside from these header lines, every line in the
        !           264: change log starts with a tab.  One entry can describe several changes;
        !           265: each change starts with a line starting with a tab and a star. `M-x
        !           266: add-change-log-entry' visits the change log file and creates a new
        !           267: entry unless the most recent entry is for today's date and your name. 
        !           268: In either case, it adds a new line to start the description of another
        !           269: change just after the header line of the entry.  When `M-x
        !           270: add-change-log-entry' is finished, all is prepared for you to edit in
        !           271: the description of what you changed and how.  You must then save the
        !           272: change log file yourself.
        !           273: 
        !           274:    The change log file is always visited in Indented Text mode, which
        !           275: means that LFD and auto-filling indent each new line like the previous
        !           276: line.  This is convenient for entering the contents of an entry, which
        !           277: must all be indented.  *Note Text Mode::.
        !           278: 
        !           279:    An alternative convenient command for starting a change log entry is
        !           280: `C-x 4 a' (`add-change-log-entry-other-window').  It resembles
        !           281: `add-change-log-entry' except that it visits the change log in another
        !           282: window, and always uses the file `./ChangeLog'--it does not ask you for
        !           283: the file name.
        !           284: 
        !           285:    Here is an example of the formatting conventions used in the change
        !           286: log for Emacs:
        !           287: 
        !           288:      Wed Jun 26 19:29:32 1985  Richard M. Stallman  (rms at mit-prep)
        !           289:      
        !           290:              * xdisp.c (try_window_id):
        !           291:              If C-k is done at end of next-to-last line,
        !           292:              this fn updates window_end_vpos and cannot leave
        !           293:              window_end_pos nonnegative (it is zero, in fact).
        !           294:              If display is preempted before lines are output,
        !           295:              this is inconsistent.  Fix by setting
        !           296:              blank_end_of_window to nonzero.
        !           297: 
        !           298:      Tue Jun 25 05:25:33 1985  Richard M. Stallman  (rms at mit-prep)
        !           299:      
        !           300:              * cmds.c (Fnewline):
        !           301:              Call the auto fill hook if appropriate.
        !           302: 
        !           303:      * xdisp.c (try_window_id):
        !           304:              If point is found by compute_motion after xp, record that
        !           305:              permanently.  If display_text_line sets point position wrong
        !           306:              (case where line is killed, point is at eob and that line is
        !           307:              not displayed), set it again in final compute_motion.
        !           308: 
        !           309: 
        !           310: File: emacs,  Node: Tags,  Next: Fortran,  Prev: Change Log,  Up: Programs
        !           311: 
        !           312: Tag Tables
        !           313: ==========
        !           314: 
        !           315:    A "tag table" is a description of how a multi-file program is broken
        !           316: up into files.  It lists the names of the component files and the names
        !           317: and positions of the functions in each file.  Grouping the related
        !           318: files makes it possible to search or replace through all the files with
        !           319: one command. Recording the function names and positions makes possible
        !           320: the `Meta-.' command which you can use to find the definition of a
        !           321: function without having to know which of the files it is in.
        !           322: 
        !           323:    Tag tables are stored in files called "tag table files".  The
        !           324: conventional name for a tag table file is `TAGS'.
        !           325: 
        !           326:    Each entry in the tag table records the name of one tag, the name of
        !           327: the file that the tag is defined in (implicitly), and the position in
        !           328: that file of the tag's definition.
        !           329: 
        !           330:    Just what names from the described files are recorded in the tag
        !           331: table depends on the programming language of the described file.  They
        !           332: normally include all functions and subroutines, and may also include
        !           333: global variables, data types, and anything else convenient.  In any
        !           334: case, each name recorded is called a "tag".
        !           335: 
        !           336: * Menu:
        !           337: 
        !           338: * Tag Syntax::
        !           339: * Create Tag Table::
        !           340: * Select Tag Table::
        !           341: * Find Tag::
        !           342: * Tags Search::
        !           343: * Tags Stepping::
        !           344: * List Tags::
        !           345: 
        !           346: 
        !           347: File: emacs,  Node: Tag Syntax,  Next: Create Tag Table,  Prev: Tags,  Up: Tags
        !           348: 
        !           349: Source File Tag Syntax
        !           350: ----------------------
        !           351: 
        !           352:    In Lisp code, any function defined with `defun', any variable
        !           353: defined with `defvar' or `defconst', and in general the first argument
        !           354: of any expression that starts with `(def' in column zero, is a tag.
        !           355: 
        !           356:    In C code, any C function is a tag, and so is any typedef if `-t' is
        !           357: specified when the tag table is constructed.
        !           358: 
        !           359:    In Fortran code, functions and subroutines are tags.
        !           360: 
        !           361:    In LaTeX text, the argument of any of the commands `\chapter',
        !           362: `\section', `\subsection', `\subsubsection', `\eqno', `\label', `\ref',
        !           363: `\cite', `\bibitem' and `\typeout' is a tag.
        !           364: 
        !           365: 
        !           366: File: emacs,  Node: Create Tag Table,  Next: Select Tag Table,  Prev: Tag Syntax,  Up: Tags
        !           367: 
        !           368: Creating Tag Tables
        !           369: -------------------
        !           370: 
        !           371:    The `etags' program is used to create a tag table file.  It knows
        !           372: the syntax of C, Fortran, LaTeX, Scheme and Emacs Lisp/Common Lisp.  To
        !           373: use `etags', type
        !           374: 
        !           375:      etags INPUTFILES...
        !           376: 
        !           377: as a shell command.  It reads the specified files and writes a tag table
        !           378: named `TAGS' in the current working directory.  `etags' recognizes the
        !           379: language used in an input file based on its file name and contents;
        !           380: there are no switches for specifying the language.  The `-t' switch
        !           381: tells `etags' to record typedefs in C code as tags.
        !           382: 
        !           383:    If the tag table data become outdated due to changes in the files
        !           384: described in the table, the way to update the tag table is the same way
        !           385: it was made in the first place.  It is not necessary to do this often.
        !           386: 
        !           387:    If the tag table fails to record a tag, or records it for the wrong
        !           388: file, then Emacs cannot possibly find its definition.  However, if the
        !           389: position recorded in the tag table becomes a little bit wrong (due to
        !           390: some editing in the file that the tag definition is in), the only
        !           391: consequence is to slow down finding the tag slightly.  Even if the
        !           392: stored position is very wrong, Emacs will still find the tag, but it
        !           393: must search the entire file for it.
        !           394: 
        !           395:    So you should update a tag table when you define new tags that you
        !           396: want to have listed, or when you move tag definitions from one file to
        !           397: another, or when changes become substantial.  Normally there is no need
        !           398: to update the tag table after each edit, or even every day.
        !           399: 
        !           400: 
        !           401: File: emacs,  Node: Select Tag Table,  Next: Find Tag,  Prev: Create Tag Table,  Up: Tags
        !           402: 
        !           403: Selecting a Tag Table
        !           404: ---------------------
        !           405: 
        !           406:    Emacs has at any time one "selected" tag table, and all the commands
        !           407: for working with tag tables use the selected one.  To select a tag
        !           408: table, type `M-x visit-tags-table', which reads the tag table file name
        !           409: as an argument.  The name `TAGS' in the default directory is used as the
        !           410: default file name.
        !           411: 
        !           412:    All this command does is store the file name in the variable
        !           413: `tags-file-name'.  Emacs does not actually read in the tag table
        !           414: contents until you try to use them.  Setting this variable yourself is
        !           415: just as good as using `visit-tags-table'.  The variable's initial value
        !           416: is `nil'; this value tells all the commands for working with tag tables
        !           417: that they must ask for a tag table file name to use.
        !           418: 
        !           419: 
        !           420: File: emacs,  Node: Find Tag,  Next: Tags Search,  Prev: Select Tag Table,  Up: Tags
        !           421: 
        !           422: Finding a Tag
        !           423: -------------
        !           424: 
        !           425:    The most important thing that a tag table enables you to do is to
        !           426: find the definition of a specific tag.
        !           427: 
        !           428: `M-. TAG'
        !           429:      Find first definition of TAG (`find-tag').
        !           430: 
        !           431: `C-u M-.'
        !           432:      Find next alternate definition of last tag specified.
        !           433: 
        !           434: `C-x 4 . TAG'
        !           435:      Find first definition of TAG, but display it in another window
        !           436:      (`find-tag-other-window').
        !           437: 
        !           438:    `M-.' (`find-tag') is the command to find the definition of a
        !           439: specified tag.  It searches through the tag table for that tag, as a
        !           440: string, and then uses the tag table info to determine the file that the
        !           441: definition is in and the approximate character position in the file of
        !           442: the definition.  Then `find-tag' visits that file, moves point to the
        !           443: approximate character position, and starts searching ever-increasing
        !           444: distances away for the the text that should appear at the beginning of
        !           445: the definition.
        !           446: 
        !           447:    If an empty argument is given (just type RET), the sexp in the
        !           448: buffer before or around point is used as the name of the tag to find.
        !           449: *Note Lists::, for info on sexps.
        !           450: 
        !           451:    The argument to `find-tag' need not be the whole tag name; it can be
        !           452: a substring of a tag name.  However, there can be many tag names
        !           453: containing the substring you specify.  Since `find-tag' works by
        !           454: searching the text of the tag table, it finds the first tag in the
        !           455: table that the specified substring appears in.
        !           456: 
        !           457:    The way to find other tags that match the substring is to give
        !           458: `find-tag' a numeric argument, as in `C-u M-.'; this does not read a
        !           459: tag name, but continues searching the tag table's text for another tag
        !           460: containing the same substring last used.  If you have a real META key,
        !           461: `M-0 M-.' is an easier alternative to `C-u M-.'. (That is a zero in
        !           462: `M-0'.)
        !           463: 
        !           464:    Like most commands that can switch buffers, `find-tag' has another
        !           465: similar command that displays the new buffer in another window.  `C-x 4
        !           466: .' invokes the function `find-tag-other-window'.  (This key sequence
        !           467: ends with a period.)
        !           468: 
        !           469:    Emacs comes with a tag table file `TAGS', in the `src' subdirectory,
        !           470: which includes all the Lisp libraries and all the C sources of Emacs. 
        !           471: By specifying this file with `visit-tags-table' and then using `M-.'
        !           472: you can quickly look at the source of any Emacs function.
        !           473: 
        !           474: 
        !           475: File: emacs,  Node: Tags Search,  Next: Tags Stepping,  Prev: Find Tag,  Up: Tags
        !           476: 
        !           477: Searching and Replacing with Tag Tables
        !           478: ---------------------------------------
        !           479: 
        !           480:    The commands in this section visit and search all the files listed
        !           481: in the selected tag table, one by one.  For these commands, the tag
        !           482: table serves only to specify a sequence of files to search.  A related
        !           483: command is `M-x grep' (*note Compilation::.).
        !           484: 
        !           485: `M-x tags-search'
        !           486:      Search for the specified regexp through the files in the selected
        !           487:      tag table.
        !           488: 
        !           489: `M-x tags-query-replace'
        !           490:      Perform a `query-replace' on each file in the selected tag table.
        !           491: 
        !           492: `M-,'
        !           493:      Restart one of the commands above, from the current location of
        !           494:      point (`tags-loop-continue').
        !           495: 
        !           496:    `M-x tags-search' reads a regexp using the minibuffer, then visits
        !           497: the files of the selected tag table one by one, and searches through
        !           498: each one for that regexp.  It displays the name of the file being
        !           499: searched so you can follow its progress.  As soon as an occurrence is
        !           500: found, `tags-search' returns.
        !           501: 
        !           502:    Having found one match, you probably want to find all the rest.  To
        !           503: find one more match, type `M-,' (`tags-loop-continue') to resume the
        !           504: `tags-search'.  This searches the rest of the current buffer, followed
        !           505: by the remaining files of the tag table.
        !           506: 
        !           507:    `M-x tags-query-replace' performs a single `query-replace' through
        !           508: all the files in the tag table.  It reads a string to search for and a
        !           509: string to replace with, just like ordinary `M-x query-replace'. It
        !           510: searches much like `M-x tags-search' but repeatedly, processing matches
        !           511: according to your input.  *Note Replace::, for more information on
        !           512: `query-replace'.
        !           513: 
        !           514:    It is possible to get through all the files in the tag table with a
        !           515: single invocation of `M-x tags-query-replace'.  But since any
        !           516: unrecognized character causes the command to exit, you may need to
        !           517: continue where you left off.  `M-,' can be used for this.  It resumes
        !           518: the last tags search or replace command that you did.
        !           519: 
        !           520:    It may have struck you that `tags-search' is a lot like `grep'. You
        !           521: can also run `grep' itself as an inferior of Emacs and have Emacs show
        !           522: you the matching lines one by one.  This works mostly the same as
        !           523: running a compilation and having Emacs show you where the errors were.
        !           524: *Note Compilation::.
        !           525: 
        !           526: 
        !           527: File: emacs,  Node: Tags Stepping,  Next: List Tags,  Prev: Tags Search,  Up: Tags
        !           528: 
        !           529: Stepping Through a Tag Table
        !           530: ----------------------------
        !           531: 
        !           532:    If you wish to process all the files in the selected tag table, but
        !           533: `M-x tags-search' and `M-x tags-query-replace' in particular are not
        !           534: what you want, you can use `M-x next-file'.
        !           535: 
        !           536: `C-u M-x next-file'
        !           537:      With a numeric argument, regardless of its value, visit the first
        !           538:      file in the tag table, and prepare to advance sequentially by
        !           539:      files.
        !           540: 
        !           541: `M-x next-file'
        !           542:      Visit the next file in the selected tag table.
        !           543: 
        !           544: 
        !           545: File: emacs,  Node: List Tags,  Prev: Tags Stepping,  Up: Tags
        !           546: 
        !           547: Tag Table Inquiries
        !           548: -------------------
        !           549: 
        !           550: `M-x list-tags'
        !           551:      Display a list of the tags defined in a specific program file.
        !           552: 
        !           553: `M-x tags-apropos'
        !           554:      Display a list of all tags matching a specified regexp.
        !           555: 
        !           556:    `M-x list-tags' reads the name of one of the files described by the
        !           557: selected tag table, and displays a list of all the tags defined in that
        !           558: file.  The "file name" argument is really just a string to compare
        !           559: against the names recorded in the tag table; it is read as a string
        !           560: rather than as a file name.  Therefore, completion and defaulting are
        !           561: not available, and you must enter the string the same way it appears in
        !           562: the tag table.  Do not include a directory as part of the file name
        !           563: unless the file name recorded in the tag table includes a directory.
        !           564: 
        !           565:    `M-x tags-apropos' is like `apropos' for tags.  It reads a regexp,
        !           566: then finds all the tags in the selected tag table whose entries match
        !           567: that regexp, and displays the tag names found.
        !           568: 
        !           569: 
        !           570: File: emacs,  Node: Fortran,  Prev: Tags,  Up: Programs
        !           571: 
        !           572: Fortran Mode
        !           573: ============
        !           574: 
        !           575:    Fortran mode provides special motion commands for Fortran statements
        !           576: and subprograms, and indentation commands that understand Fortran
        !           577: conventions of nesting, line numbers and continuation statements.
        !           578: 
        !           579:    Special commands for comments are provided because Fortran comments
        !           580: are unlike those of other languages.
        !           581: 
        !           582:    Built-in abbrevs optionally save typing when you insert Fortran
        !           583: keywords.
        !           584: 
        !           585:    Use `M-x fortran-mode' to switch to this major mode.  Doing so calls
        !           586: the value of `fortran-mode-hook' as a function of no arguments if that
        !           587: variable has a value that is not `nil'.
        !           588: 
        !           589: * Menu:
        !           590: 
        !           591: * Motion: Fortran Motion.     Moving point by statements or subprograms.
        !           592: * Indent: Fortran Indent.     Indentation commands for Fortran.
        !           593: * Comments: Fortran Comments. Inserting and aligning comments.
        !           594: * Columns: Fortran Columns.   Measuring columns for valid Fortran.
        !           595: * Abbrev: Fortran Abbrev.     Built-in abbrevs for Fortran keywords.
        !           596: 
        !           597:    Fortran mode was contributed by Michael Prange.
        !           598: 
        !           599: 
        !           600: File: emacs,  Node: Fortran Motion,  Next: Fortran Indent,  Prev: Fortran,  Up: Fortran
        !           601: 
        !           602: Motion Commands
        !           603: ---------------
        !           604: 
        !           605:    Fortran mode provides special commands to move by subprograms
        !           606: (functions and subroutines) and by statements.  There is also a command
        !           607: to put the region around one subprogram, convenient for killing it or
        !           608: moving it.
        !           609: 
        !           610: `C-M-a'
        !           611:      Move to beginning of subprogram
        !           612:      (`beginning-of-fortran-subprogram').
        !           613: 
        !           614: `C-M-e'
        !           615:      Move to end of subprogram (`end-of-fortran-subprogram').
        !           616: 
        !           617: `C-M-h'
        !           618:      Put point at beginning of subprogram and mark at end
        !           619:      (`mark-fortran-subprogram').
        !           620: 
        !           621: `C-c C-n'
        !           622:      Move to beginning of current or next statement
        !           623:      (`fortran-next-statement').
        !           624: 
        !           625: `C-c C-p'
        !           626:      Move to beginning of current or previous statement
        !           627:      (`fortran-previous-statement').
        !           628: 
        !           629: 
        !           630: File: emacs,  Node: Fortran Indent,  Next: Fortran Comments,  Prev: Fortran Motion,  Up: Fortran
        !           631: 
        !           632: Fortran Indentation
        !           633: -------------------
        !           634: 
        !           635:    Special commands and features are needed for indenting Fortran code
        !           636: in order to make sure various syntactic entities (line numbers, comment
        !           637: line indicators and continuation line flags) appear in the columns that
        !           638: are required for standard Fortran.
        !           639: 
        !           640: * Menu:
        !           641: 
        !           642: * Commands: ForIndent Commands. Commands for indenting Fortran.
        !           643: * Numbers:  ForIndent Num.      How line numbers auto-indent.
        !           644: * Conv:     ForIndent Conv.     Conventions you must obey to avoid trouble.
        !           645: * Vars:     ForIndent Vars.     Variables controlling Fortran indent style.
        !           646: 
        !           647: 
        !           648: File: emacs,  Node: ForIndent Commands,  Next: ForIndent Num,  Prev: Fortran Indent,  Up: Fortran Indent
        !           649: 
        !           650: Fortran Indentation Commands
        !           651: ............................
        !           652: 
        !           653: `TAB'
        !           654:      Indent the current line (`fortran-indent-line').
        !           655: 
        !           656: `M-LFD'
        !           657:      Break the current line and set up a continuation line.
        !           658: 
        !           659: `C-M-q'
        !           660:      Indent all the lines of the subprogram point is in
        !           661:      (`fortran-indent-subprogram').
        !           662: 
        !           663:    TAB is redefined by Fortran mode to reindent the current line for
        !           664: Fortran (`fortran-indent-line').  Line numbers and continuation markers
        !           665: are indented to their required columns, and the body of the statement
        !           666: is independently indented based on its nesting in the program.
        !           667: 
        !           668:    The key `C-M-q' is redefined as `fortran-indent-subprogram', a
        !           669: command to reindent all the lines of the Fortran subprogram (function or
        !           670: subroutine) containing point.
        !           671: 
        !           672:    The key `M-LFD' is redefined as `fortran-split-line', a command to
        !           673: split a line in the appropriate fashion for Fortran.  In a non-comment
        !           674: line, the second half becomes a continuation line and is indented
        !           675: accordingly.  In a comment line, both halves become separate comment
        !           676: lines.
        !           677: 
        !           678: 
        !           679: File: emacs,  Node: ForIndent Num,  Next: ForIndent Conv,  Prev: ForIndent Commands,  Up: Fortran Indent
        !           680: 
        !           681: Line Numbers and Continuation
        !           682: .............................
        !           683: 
        !           684:    If a number is the first non-whitespace in the line, it is assumed
        !           685: to be a line number and is moved to columns 0 through 4.  (Columns are
        !           686: always counted from 0 in GNU Emacs.)  If the text on the line starts
        !           687: with the conventional Fortran continuation marker `$', it is moved to
        !           688: column 5. If the text begins with any non whitespace character in
        !           689: column 5, it is assumed to be an unconventional continuation marker and
        !           690: remains in column 5.
        !           691: 
        !           692:    Line numbers of four digits or less are normally indented one space.
        !           693: This amount is controlled by the variable `fortran-line-number-indent'
        !           694: which is the maximum indentation a line number can have.  Line numbers
        !           695: are indented to right-justify them to end in column 4 unless that would
        !           696: require more than this maximum indentation.  The default value of the
        !           697: variable is 1.
        !           698: 
        !           699:    Simply inserting a line number is enough to indent it according to
        !           700: these rules.  As each digit is inserted, the indentation is recomputed.
        !           701:  To turn off this feature, set the variable
        !           702: `fortran-electric-line-number' to `nil'.  Then inserting line numbers
        !           703: is like inserting anything else.
        !           704: 
        !           705: 
        !           706: File: emacs,  Node: ForIndent Conv,  Next: ForIndent Vars,  Prev: ForIndent Num,  Up: Fortran Indent
        !           707: 
        !           708: Syntactic Conventions
        !           709: .....................
        !           710: 
        !           711:    Fortran mode assumes that you follow certain conventions that
        !           712: simplify the task of understanding a Fortran program well enough to
        !           713: indent it properly:
        !           714: 
        !           715:    * Two nested `do' loops never share a `continue' statement.
        !           716: 
        !           717:    * The same character appears in column 5 of all continuation lines,
        !           718:      and this character is the value of the variable
        !           719:      `fortran-continuation-char'. By default, this character is `$'.
        !           720: 
        !           721: If you fail to follow these conventions, the indentation commands may
        !           722: indent some lines unaesthetically.  However, a correct Fortran program
        !           723: will retain its meaning when reindented even if the conventions are not
        !           724: followed.
        !           725: 
        !           726: 
        !           727: File: emacs,  Node: ForIndent Vars,  Prev: ForIndent Conv,  Up: Fortran Indent
        !           728: 
        !           729: Variables for Fortran Indentation
        !           730: .................................
        !           731: 
        !           732:    Several additional variables control how Fortran indentation works.
        !           733: 
        !           734: `fortran-do-indent'
        !           735:      Extra indentation within each level of `do' statement
        !           736:      (default 3).
        !           737: 
        !           738: `fortran-if-indent'
        !           739:      Extra indentation within each level of `if' statement
        !           740:      (default 3).
        !           741: 
        !           742: `fortran-continuation-indent'
        !           743:      Extra indentation for bodies of continuation lines (default 5).
        !           744: 
        !           745: `fortran-check-all-num-for-matching-do'
        !           746:      If this is `nil', indentation assumes that each `do' statement
        !           747:      ends on a `continue' statement.  Therefore, when computing
        !           748:      indentation for a statement other than `continue', it can save
        !           749:      time by not checking for a `do' statement ending there. If this is
        !           750:      non-`nil', indenting any numbered statement must check for a `do'
        !           751:      that ends there.  The default is `nil'.
        !           752: 
        !           753: `fortran-minimum-statement-indent'
        !           754:      Minimum indentation for fortran statements.  For standard Fortran,
        !           755:      this is 6.  Statement bodies will never be indented less than this
        !           756:      much.
        !           757: 
        !           758: 
        !           759: File: emacs,  Node: Fortran Comments,  Next: Fortran Columns,  Prev: Fortran Indent,  Up: Fortran
        !           760: 
        !           761: Comments
        !           762: --------
        !           763: 
        !           764:    The usual Emacs comment commands assume that a comment can follow a
        !           765: line of code.  In Fortran, the standard comment syntax requires an
        !           766: entire line to be just a comment.  Therefore, Fortran mode replaces the
        !           767: standard Emacs comment commands and defines some new variables.
        !           768: 
        !           769:    Fortran mode can also handle a nonstandard comment syntax where
        !           770: comments start with `!' and can follow other text.  Because only some
        !           771: Fortran compilers accept this syntax, Fortran mode will not insert such
        !           772: comments unless you have said in advance to do so.  To do this, set the
        !           773: variable `comment-start' to `"!"' (*note Variables::.).
        !           774: 
        !           775: `M-;'
        !           776:      Align comment or insert new comment (`fortran-comment-indent').
        !           777: 
        !           778: `C-x ;'
        !           779:      Applies to nonstandard `!' comments only.
        !           780: 
        !           781: `C-c ;'
        !           782:      Turn all lines of the region into comments, or (with arg) turn
        !           783:      them back into real code (`fortran-comment-region').
        !           784: 
        !           785:    `M-;' in Fortran mode is redefined as the command
        !           786: `fortran-comment-indent'.  Like the usual `M-;' command, this
        !           787: recognizes any kind of existing comment and aligns its text
        !           788: appropriately; if there is no existing comment, a comment is inserted
        !           789: and aligned.  But inserting and aligning comments are not the same in
        !           790: Fortran mode as in other modes.
        !           791: 
        !           792:    When a new comment must be inserted, if the current line is blank, a
        !           793: full-line comment is inserted.  On a non-blank line, a nonstandard `!'
        !           794: comment is inserted if you have said you want to use them.  Otherwise a
        !           795: full-line comment is inserted on a new line before the current line.
        !           796: 
        !           797:    Nonstandard `!' comments are aligned like comments in other
        !           798: languages, but full-line comments are different.  In a standard
        !           799: full-line comment, the comment delimiter itself must always appear in
        !           800: column zero. What can be aligned is the text within the comment.  You
        !           801: can choose from three styles of alignment by setting the variable
        !           802: `fortran-comment-indent-style' to one of these values:
        !           803: 
        !           804: `fixed'
        !           805:      The text is aligned at a fixed column, which is the value of
        !           806:      `fortran-comment-line-column'.  This is the default.
        !           807: 
        !           808: `relative'
        !           809:      The text is aligned as if it were a line of code, but with an
        !           810:      additional `fortran-comment-line-column' columns of indentation.
        !           811: 
        !           812: `nil'
        !           813:      Text in full-line columns is not moved automatically.
        !           814: 
        !           815:    In addition, you can specify the character to be used to indent
        !           816: within full-line comments by setting the variable
        !           817: `fortran-comment-indent-char' to the character you want to use.
        !           818: 
        !           819:    Fortran mode introduces the two variables, `comment-line-start' and
        !           820: `comment-line-start-skip', which play for full-line comments the same
        !           821: roles played by `comment-start' and `comment-start-skip' for ordinary
        !           822: text-following comments.  Normally these are set properly by Fortran
        !           823: mode so you do not need to change them.
        !           824: 
        !           825:    The normal Emacs comment command `C-x ;' has not been redefined. If
        !           826: you use `!' comments, this command can be used with them.  Otherwise it
        !           827: is useless in Fortran mode.
        !           828: 
        !           829:    The command `C-c ;' (`fortran-comment-region') turns all the lines
        !           830: of the region into comments by inserting the string `C$$$' at the front
        !           831: of each one.  With a numeric arg, the region is turned back into live
        !           832: code by deleting `C$$$' from the front of each line in it.  The string
        !           833: used for these comments can be controlled by setting the variable
        !           834: `fortran-comment-region'.  Note that here we have an example of a
        !           835: command and a variable with the same name; these two uses of the name
        !           836: never conflict because in Lisp and in Emacs it is always clear from the
        !           837: context which one is meant.
        !           838: 
        !           839: 
        !           840: File: emacs,  Node: Fortran Columns,  Next: Fortran Abbrev,  Prev: Fortran Comments,  Up: Fortran
        !           841: 
        !           842: Columns
        !           843: -------
        !           844: 
        !           845: `C-c C-r'
        !           846:      Displays a "column ruler" momentarily above the current line
        !           847:      (`fortran-column-ruler').
        !           848: 
        !           849: `C-c C-w'
        !           850:      Splits the current window horizontally so that it is 72 columns
        !           851:      wide. This may help you avoid going over that limit
        !           852:      (`fortran-window-create').
        !           853: 
        !           854:    The command `C-c C-r' (`fortran-column-ruler') shows a column ruler
        !           855: momentarily above the current line.  The comment ruler is two lines of
        !           856: text that show you the locations of columns with special significance
        !           857: in Fortran programs.  Square brackets show the limits of the columns for
        !           858: line numbers, and curly brackets show the limits of the columns for the
        !           859: statement body.  Column numbers appear above them.
        !           860: 
        !           861:    Note that the column numbers count from zero, as always in GNU
        !           862: Emacs.  As a result, the numbers may not be those you are familiar
        !           863: with; but the actual positions in the line are standard Fortran.
        !           864: 
        !           865:    The text used to display the column ruler is the value of the
        !           866: variable `fortran-comment-ruler'.  By changing this variable, you can
        !           867: change the display.
        !           868: 
        !           869:    For even more help, use `C-c C-w' (`fortran-window-create'), a
        !           870: command which splits the current window horizontally, making a window 72
        !           871: columns wide.  By editing in this window you can immediately see when
        !           872: you make a line too wide to be correct Fortran.
        !           873: 
        !           874: 
        !           875: File: emacs,  Node: Fortran Abbrev,  Prev: Fortran Columns,  Up: Fortran
        !           876: 
        !           877: Fortran Keyword Abbrevs
        !           878: -----------------------
        !           879: 
        !           880:    Fortran mode provides many built-in abbrevs for common keywords and
        !           881: declarations.  These are the same sort of abbrev that you can define
        !           882: yourself.  To use them, you must turn on Abbrev mode (*note Abbrevs::.).
        !           883: 
        !           884:    The built-in abbrevs are unusual in one way: they all start with a
        !           885: semicolon.  You cannot normally use semicolons in an abbrev, but Fortran
        !           886: mode makes this possible by changing the syntax of semicolon to "word
        !           887: constituent".
        !           888: 
        !           889:    For example, one built-in Fortran abbrev is `;c' for `continue'.  If
        !           890: you insert `;c' and then insert a punctuation character such as a space
        !           891: or a newline, the `;c' will change automatically to `continue',
        !           892: provided Abbrev mode is enabled.
        !           893: 
        !           894:    Type `;?' or `;C-h' to display a list of all the built-in Fortran
        !           895: abbrevs and what they stand for.
        !           896: 
        !           897: 
        !           898: File: emacs,  Node: Compiling/Testing,  Next: Abbrevs,  Prev: Programs,  Up: Top
        !           899: 
        !           900: Compiling and Testing Programs
        !           901: ******************************
        !           902: 
        !           903:    The previous chapter discusses the Emacs commands that are useful for
        !           904: making changes in programs.  This chapter deals with commands that
        !           905: assist in the larger process of developing and maintaining programs.
        !           906: 
        !           907: * Menu:
        !           908: 
        !           909: * Compilation::        Compiling programs in languages other than Lisp
        !           910:                         (C, Pascal, etc.)
        !           911: * Modes: Lisp Modes.   Various modes for editing Lisp programs, with
        !           912:                        different facilities for running the Lisp programs.
        !           913: * Libraries: Lisp Libraries.      Creating Lisp programs to run in Emacs.
        !           914: * Interaction: Lisp Interaction.  Executing Lisp in an Emacs buffer.
        !           915: * Eval: Lisp Eval.     Executing a single Lisp expression in Emacs.
        !           916: * Debug: Lisp Debug.   Debugging Lisp programs running in Emacs.
        !           917: * External Lisp::      Communicating through Emacs with a separate Lisp.
        !           918: 
        !           919: 
        !           920: File: emacs,  Node: Compilation,  Next: Lisp Modes,  Prev: Compiling/Testing,  Up: Compiling/Testing
        !           921: 
        !           922: Running `make', or Compilers Generally
        !           923: ======================================
        !           924: 
        !           925:    Emacs can run compilers for noninteractive languages such as C and
        !           926: Fortran as inferior processes, feeding the error log into an Emacs
        !           927: buffer. It can also parse the error messages and visit the files in
        !           928: which errors are found, moving point right to the line where the error
        !           929: occurred.
        !           930: 
        !           931: `M-x compile'
        !           932:      Run a compiler asynchronously under Emacs, with error messages to
        !           933:      `*compilation*' buffer.
        !           934: 
        !           935: `M-x grep'
        !           936:      Run `grep' asynchronously under Emacs, with matching lines listed
        !           937:      in the buffer named `*compilation*'.
        !           938: 
        !           939: `M-x kill-compilation'
        !           940: `M-x kill-grep'
        !           941:      Kill the running compilation or `grep' subprocess.
        !           942: 
        !           943: `C-x `'
        !           944:      Visit the locus of the next compiler error message or `grep' match.
        !           945: 
        !           946:    To run `make' or another compiler, do `M-x compile'.  This command
        !           947: reads a shell command line using the minibuffer, and then executes the
        !           948: specified command line in an inferior shell with output going to the
        !           949: buffer named `*compilation*'.  The current buffer's default directory
        !           950: is used as the working directory for the execution of the command;
        !           951: normally, therefore, the makefile comes from this directory.
        !           952: 
        !           953:    When the shell command line is read, the minibuffer appears
        !           954: containing a default command line, which is the command you used the
        !           955: last time you did `M-x compile'.  If you type just RET, the same
        !           956: command line is used again.  The first `M-x compile' provides `make -k'
        !           957: as the default. The default is taken from the variable
        !           958: `compile-command'; if the appropriate compilation command for a file is
        !           959: something other than `make -k', it can be useful to have the file
        !           960: specify a local value for `compile-command' (*note File Variables::.).
        !           961: 
        !           962:    Starting a compilation causes the buffer `*compilation*' to be
        !           963: displayed in another window but not selected.  Its mode line tells you
        !           964: whether compilation is finished, with the word `run' or `exit' inside
        !           965: the parentheses.  You do not have to keep this buffer visible;
        !           966: compilation continues in any case.
        !           967: 
        !           968:    To kill the compilation process, do `M-x kill-compilation'.  You will
        !           969: see that the mode line of the `*compilation*' buffer changes to say
        !           970: `signal' instead of `run'.  Starting a new compilation also kills any
        !           971: running compilation, as only one can exist at any time.  However, this
        !           972: requires confirmation before actually killing a compilation that is
        !           973: running.
        !           974: 
        !           975:    To parse the compiler error messages, type `C-x `' (`next-error'). 
        !           976: The character following the `C-x' is the grave accent, not the single
        !           977: quote.  This command displays the buffer `*compilation*' in one window
        !           978: and the buffer in which the next error occurred in another window. 
        !           979: Point in that buffer is moved to the line where the error was found. 
        !           980: The corresponding error message is scrolled to the top of the window in
        !           981: which `*compilation*' is displayed.
        !           982: 
        !           983:    The first time `C-x `' is used after the start of a compilation, it
        !           984: parses all the error messages, visits all the files that have error
        !           985: messages, and makes markers pointing at the lines that the error
        !           986: messages refer to.  Then it moves to the first error message location. 
        !           987: Subsequent uses of `C-x `' advance down the data set up by the first
        !           988: use.  When the preparsed error messages are exhausted, the next `C-x `'
        !           989: checks for any more error messages that have come in; this is useful if
        !           990: you start editing the compiler errors while the compilation is still
        !           991: going on.  If no more error messages have come in, `C-x `' reports an
        !           992: error.
        !           993: 
        !           994:    `C-u C-x `' discards the preparsed error message data and parses the
        !           995: `*compilation*' buffer over again, then displaying the first error.
        !           996: This way, you can process the same set of errors again.
        !           997: 
        !           998:    Instead of running a compiler, you can run `grep' and see the lines
        !           999: on which matches were found.  To do this, type `M-x grep' with an
        !          1000: argument line that contains the same arguments you would give `grep'
        !          1001: when running it normally: a `grep'-style regexp (usually in
        !          1002: singlequotes to quote the shell's special characters) followed by
        !          1003: filenames which may use wildcards. The output from `grep' goes in the
        !          1004: `*compilation*' buffer and the lines that matched can be found with
        !          1005: `C-x `' as if they were compilation errors.
        !          1006: 
        !          1007:    Note: a shell is used to run the compile command, but the shell is
        !          1008: told that it should be noninteractive.  This means in particular that
        !          1009: the shell starts up with no prompt.  If you find your usual shell
        !          1010: prompt making an unsightly appearance in the `*compilation*' buffer, it
        !          1011: means you have made a mistake in your shell's init file (`.cshrc' or
        !          1012: `.shrc' or ...) by setting the prompt unconditionally.  The shell init
        !          1013: file should set the prompt only if there already is a prompt.
        !          1014: 
        !          1015:    Here is how to do it in `csh':
        !          1016: 
        !          1017:      if ($?prompt) set prompt = ...
        !          1018: 
        !          1019:    Here is how to do it in the Bourne-Again shell:
        !          1020: 
        !          1021:      if [ ! "$PS1" ]; then
        !          1022:         PS1=...
        !          1023:      fi
        !          1024: 
        !          1025: 
        !          1026: File: emacs,  Node: Lisp Modes,  Next: Lisp Libraries,  Prev: Compilation,  Up: Compiling/Testing
        !          1027: 
        !          1028: Major Modes for Lisp
        !          1029: ====================
        !          1030: 
        !          1031:    Emacs has four different major modes for Lisp.  They are the same in
        !          1032: terms of editing commands, but differ in the commands for executing Lisp
        !          1033: expressions.
        !          1034: 
        !          1035: Emacs-Lisp mode
        !          1036:      The mode for editing source files of programs to run in Emacs Lisp.
        !          1037:      This mode defines `C-M-x' to evaluate the current defun. *Note
        !          1038:      Lisp Libraries::.
        !          1039: 
        !          1040: Lisp Interaction mode
        !          1041:      The mode for an interactive session with Emacs Lisp.  It defines
        !          1042:      LFD to evaluate the sexp before point and insert its value in the
        !          1043:      buffer.  *Note Lisp Interaction::.
        !          1044: 
        !          1045: Lisp mode
        !          1046:      The mode for editing source files of programs that run in Lisps
        !          1047:      other than Emacs Lisp.  This mode defines `C-M-x' to send the
        !          1048:      current defun to an inferior Lisp process.  *Note External Lisp::.
        !          1049: 
        !          1050: Inferior Lisp mode
        !          1051:      The mode for an interactive session with an inferior Lisp process.
        !          1052:      This mode combines the special features of Lisp mode and Shell mode
        !          1053:      (*note Shell Mode::.).
        !          1054: 
        !          1055: Scheme mode
        !          1056:      Like Lisp mode but for Scheme programs.
        !          1057: 
        !          1058: Inferior Scheme mode
        !          1059:      The mode for an interactive session with an inferior Scheme
        !          1060:      process.
        !          1061: 
        !          1062: 
        !          1063: File: emacs,  Node: Lisp Libraries,  Next: Lisp Eval,  Prev: Lisp Modes,  Up: Compiling/Testing
        !          1064: 
        !          1065: Libraries of Lisp Code for Emacs
        !          1066: ================================
        !          1067: 
        !          1068:    Lisp code for Emacs editing commands is stored in files whose names
        !          1069: conventionally end in `.el'.  This ending tells Emacs to edit them in
        !          1070: Emacs-Lisp mode (*note Lisp Modes::.).
        !          1071: 
        !          1072: * Menu:
        !          1073: 
        !          1074: * Loading::            Loading libraries of Lisp code into Emacs for use.
        !          1075: * Compiling Libraries:: Compiling a library makes it load and run faster.
        !          1076: * Mocklisp::           Converting Mocklisp to Lisp so GNU Emacs can run it.
        !          1077: 
        !          1078: 
        !          1079: File: emacs,  Node: Loading,  Next: Compiling Libraries,  Prev: Lisp Libraries,  Up: Lisp Libraries
        !          1080: 
        !          1081: Loading Libraries
        !          1082: -----------------
        !          1083: 
        !          1084:    To execute a file of Emacs Lisp, use `M-x load-file'.  This command
        !          1085: reads a file name using the minibuffer and then executes the contents of
        !          1086: that file as Lisp code.  It is not necessary to visit the file first;
        !          1087: in any case, this command reads the file as found on disk, not text in
        !          1088: an Emacs buffer.
        !          1089: 
        !          1090:    Once a file of Lisp code is installed in the Emacs Lisp library
        !          1091: directories, users can load it using `M-x load-library'.  Programs can
        !          1092: load it by calling `load-library', or with `load', a more primitive
        !          1093: function that is similar but accepts some additional arguments.
        !          1094: 
        !          1095:    `M-x load-library' differs from `M-x load-file' in that it searches
        !          1096: a sequence of directories and tries three file names in each directory.
        !          1097:  The three names are, first, the specified name with `.elc' appended;
        !          1098: second, with `.el' appended; third, the specified name alone.  A `.elc'
        !          1099: file would be the result of compiling the Lisp file into byte code; it
        !          1100: is loaded if possible in preference to the Lisp file itself because the
        !          1101: compiled file will load and run faster.
        !          1102: 
        !          1103:    Because the argument to `load-library' is usually not in itself a
        !          1104: valid file name, file name completion is not available.  Indeed, when
        !          1105: using this command, you usually do not know exactly what file name will
        !          1106: be used.
        !          1107: 
        !          1108:    The sequence of directories searched by `M-x load-library' is
        !          1109: specified by the variable `load-path', a list of strings that are
        !          1110: directory names.  The default value of the list contains the directory
        !          1111: where the Lisp code for Emacs itself is stored.  If you have libraries
        !          1112: of your own, put them in a single directory and add that directory to
        !          1113: `load-path'.  `nil' in this list stands for the current default
        !          1114: directory, but it is probably not a good idea to put `nil' in the list.
        !          1115:  If you find yourself wishing that `nil' were in the list, most likely
        !          1116: what you really want to do is use `M-x load-file' this once.
        !          1117: 
        !          1118:    Often you do not have to give any command to load a library, because
        !          1119: the commands defined in the library are set up to "autoload" that
        !          1120: library. Running any of those commands causes `load' to be called to
        !          1121: load the library; this replaces the autoload definitions with the real
        !          1122: ones from the library.
        !          1123: 
        !          1124:    If autoloading a file does not finish, either because of an error or
        !          1125: because of a `C-g' quit, all function definitions made by the file are
        !          1126: undone automatically.  So are any calls to `provide'.  As a consequence,
        !          1127: if you use one of the autoloadable commands again, the entire file will
        !          1128: be loaded a second time.  This prevents problems where the command is no
        !          1129: longer autoloading but it works wrong because not all the file was
        !          1130: loaded. Function definitions are undone only for autoloading; explicit
        !          1131: calls to `load' do not undo anything if loading is not completed.
        !          1132: 
        !          1133: 
        !          1134: File: emacs,  Node: Compiling Libraries,  Next: Mocklisp,  Prev: Loading,  Up: Lisp Libraries
        !          1135: 
        !          1136: Compiling Libraries
        !          1137: -------------------
        !          1138: 
        !          1139:    Emacs Lisp code can be compiled into byte-code which loads faster,
        !          1140: takes up less space when loaded, and executes faster.
        !          1141: 
        !          1142:    The way to make a byte-code compiled file from an Emacs-Lisp source
        !          1143: file is with `M-x byte-compile-file'.  The default argument for this
        !          1144: function is the file visited in the current buffer.  It reads the
        !          1145: specified file, compiles it into byte code, and writes an output file
        !          1146: whose name is made by appending `c' to the input file name.  Thus, the
        !          1147: file `rmail.el' would be compiled into `rmail.elc'.
        !          1148: 
        !          1149:    To recompile the changed Lisp files in a directory, use `M-x
        !          1150: byte-recompile-directory'.  Specify just the directory name as an
        !          1151: argument. Each `.el' file that has been byte-compiled before is
        !          1152: byte-compiled again if it has changed since the previous compilation. 
        !          1153: A numeric argument to this command tells it to offer to compile each
        !          1154: `.el' file that has not already been compiled.  You must answer `y' or
        !          1155: `n' to each offer.
        !          1156: 
        !          1157:    Emacs can be invoked noninteractively from the shell to do byte
        !          1158: compilation with the aid of the function `batch-byte-compile'.  In this
        !          1159: case, the files to be compiled are specified with command-line
        !          1160: arguments. Use a shell command of the form
        !          1161: 
        !          1162:      emacs -batch -f batch-byte-compile FILES...
        !          1163: 
        !          1164:    Directory names may also be given as arguments;
        !          1165: `byte-recompile-directory' is invoked (in effect) on each such
        !          1166: directory. `batch-byte-compile' uses all the remaining command-line
        !          1167: arguments as file or directory names, then kills the Emacs process.
        !          1168: 
        !          1169:    `M-x disassemble' explains the result of byte compilation.  Its
        !          1170: argument is a function name.  It displays the byte-compiled code in a
        !          1171: help window in symbolic form, one instruction per line.  If the
        !          1172: instruction refers to a variable or constant, that is shown too.
        !          1173: 
        !          1174: 
        !          1175: File: emacs,  Node: Mocklisp,  Prev: Compiling Libraries,  Up: Lisp Libraries
        !          1176: 
        !          1177: Converting Mocklisp to Lisp
        !          1178: ---------------------------
        !          1179: 
        !          1180:    GNU Emacs can run Mocklisp files by converting them to Emacs Lisp
        !          1181: first. To convert a Mocklisp file, visit it and then type `M-x
        !          1182: convert-mocklisp-buffer'.  Then save the resulting buffer of Lisp file
        !          1183: in a file whose name ends in `.el' and use the new file as a Lisp
        !          1184: library.
        !          1185: 
        !          1186:    It does not currently work to byte-compile converted Mocklisp code.
        !          1187: This is because converted Mocklisp code uses some special Lisp features
        !          1188: to deal with Mocklisp's incompatible ideas of how arguments are
        !          1189: evaluated and which values signify "true" or "false".
        !          1190: 
        !          1191: 

unix.superglobalmegacorp.com

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