Annotation of GNUtools/emacs/info/emacs-8, revision 1.1.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.