X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=info%2Fxemacs.info-11;h=b8daf71d757352f767f4562d3163ba5c5de15be2;hb=0b6cc849a8a353d01b8e5b001fcc27284d50ded8;hp=e6173be0c8161829c9da691d4976b1298593e7a6;hpb=f52a96980ed9280f8f906a20d4b899dc0b027644;p=chise%2Fxemacs-chise.git diff --git a/info/xemacs.info-11 b/info/xemacs.info-11 index e6173be..b8daf71 100644 --- a/info/xemacs.info-11 +++ b/info/xemacs.info-11 @@ -30,6 +30,165 @@ versions, except that the sections entitled "The GNU Manifesto", translation approved by the author instead of in the original English.  +File: xemacs.info, Node: Basic Indent, Next: Multi-line Indent, Prev: Grinding, Up: Grinding + +Basic Program Indentation Commands +---------------------------------- + +`' + Adjust indentation of current line. + +`' + Equivalent to followed by (`newline-and-indent'). + + The basic indentation command is , which gives the current line +the correct indentation as determined from the previous lines. The +function that runs depends on the major mode; it is +`lisp-indent-line' in Lisp mode, `c-indent-line' in C mode, etc. These +functions understand different syntaxes for different languages, but +they all do about the same thing. in any programming language +major mode inserts or deletes whitespace at the beginning of the +current line, independent of where point is in the line. If point is +inside the whitespace at the beginning of the line, leaves it at +the end of that whitespace; otherwise, leaves point fixed with +respect to the characters around it. + + Use `C-q ' to insert a tab at point. + + When entering a large amount of new code, use +(`newline-and-indent'), which is equivalent to a followed by a +. creates a blank line, then gives it the appropriate +indentation. + + indents the second and following lines of the body of a +parenthetical grouping each under the preceding one; therefore, if you +alter one line's indentation to be nonstandard, the lines below tend to +follow it. This is the right behavior in cases where the standard +result of does not look good. + + Remember that Emacs assumes that an open-parenthesis, open-brace, or +other opening delimiter at the left margin (including the indentation +routines) is the start of a function. You should therefore never have +an opening delimiter in column zero that is not the beginning of a +function, not even inside a string. This restriction is vital for +making the indentation commands fast. *Note Defuns::, for more +information on this behavior. + + +File: xemacs.info, Node: Multi-line Indent, Next: Lisp Indent, Prev: Basic Indent, Up: Grinding + +Indenting Several Lines +----------------------- + + Several commands are available to re-indent several lines of code +which have been altered or moved to a different level in a list +structure. + +`C-M-q' + Re-indent all the lines within one list (`indent-sexp'). + +`C-u ' + Shift an entire list rigidly sideways so that its first line is + properly indented. + +`C-M-\' + Re-indent all lines in the region (`indent-region'). + + To re-indent the contents of a single list, position point before the +beginning of it and type `C-M-q'. This key is bound to `indent-sexp' in +Lisp mode, `indent-c-exp' in C mode, and bound to other suitable +functions in other modes. The indentation of the line the sexp starts +on is not changed; therefore, only the relative indentation within the +list, and not its position, is changed. To correct the position as +well, type a before `C-M-q'. + + If the relative indentation within a list is correct but the +indentation of its beginning is not, go to the line on which the list +begins and type `C-u '. When you give a numeric argument, +it moves all the lines in the group, starting on the current line, +sideways the same amount that the current line moves. The command does +not move lines that start inside strings, or C preprocessor lines when +in C mode. + + Another way to specify a range to be re-indented is with point and +mark. The command `C-M-\' (`indent-region') applies to every +line whose first character is between point and mark. + + +File: xemacs.info, Node: Lisp Indent, Next: C Indent, Prev: Multi-line Indent, Up: Grinding + +Customizing Lisp Indentation +---------------------------- + + The indentation pattern for a Lisp expression can depend on the +function called by the expression. For each Lisp function, you can +choose among several predefined patterns of indentation, or define an +arbitrary one with a Lisp program. + + The standard pattern of indentation is as follows: the second line +of the expression is indented under the first argument, if that is on +the same line as the beginning of the expression; otherwise, the second +line is indented underneath the function name. Each following line is +indented under the previous line whose nesting depth is the same. + + If the variable `lisp-indent-offset' is non-`nil', it overrides the +usual indentation pattern for the second line of an expression, so that +such lines are always indented `lisp-indent-offset' more columns than +the containing list. + + Certain functions override the standard pattern. Functions whose +names start with `def' always indent the second line by +`lisp-body-indention' extra columns beyond the open-parenthesis +starting the expression. + + Individual functions can override the standard pattern in various +ways, according to the `lisp-indent-function' property of the function +name. (Note: `lisp-indent-function' was formerly called +`lisp-indent-hook'). There are four possibilities for this property: + +`nil' + This is the same as no property; the standard indentation pattern + is used. + +`defun' + The pattern used for function names that start with `def' is used + for this function also. + +a number, NUMBER + The first NUMBER arguments of the function are "distinguished" + arguments; the rest are considered the "body" of the expression. + A line in the expression is indented according to whether the + first argument on it is distinguished or not. If the argument is + part of the body, the line is indented `lisp-body-indent' more + columns than the open-parenthesis starting the containing + expression. If the argument is distinguished and is either the + first or second argument, it is indented twice that many extra + columns. If the argument is distinguished and not the first or + second argument, the standard pattern is followed for that line. + +a symbol, SYMBOL + SYMBOL should be a function name; that function is called to + calculate the indentation of a line within this expression. The + function receives two arguments: + STATE + The value returned by `parse-partial-sexp' (a Lisp primitive + for indentation and nesting computation) when it parses up to + the beginning of this line. + + POS + The position at which the line being indented begins. + + It should return either a number, which is the number of columns of + indentation for that line, or a list whose first element is such a + number. The difference between returning a number and returning a + list is that a number says that all following lines at the same + nesting level should be indented just like this one; a list says + that following lines might call for different indentations. This + makes a difference when the indentation is computed by `C-M-q'; if + the value is a number, `C-M-q' need not recalculate indentation + for the following lines until the end of the list. + + File: xemacs.info, Node: C Indent, Prev: Lisp Indent, Up: Grinding Customizing C Indentation @@ -958,241 +1117,3 @@ the C sources of Emacs. By specifying this file with `visit-tags-table' and then using `M-.' you can quickly look at the source of any Emacs function. - -File: xemacs.info, Node: Tags Search, Next: List Tags, Prev: Find Tag, Up: Tags - -Searching and Replacing with Tags Tables ----------------------------------------- - - The commands in this section visit and search all the files listed -in the selected tags table, one by one. For these commands, the tags -table serves only to specify a sequence of files to search. A related -command is `M-x grep' (*note Compilation::). - -`M-x tags-search REGEXP ' - Search for REGEXP through the files in the selected tags table. - -`M-x tags-query-replace REGEXP REPLACEMENT ' - Perform a `query-replace-regexp' on each file in the selected tags - table. - -`M-,' - Restart one of the commands above, from the current location of - point (`tags-loop-continue'). - - `M-x tags-search' reads a regexp using the minibuffer, then searches -for matches in all the files in the selected tags table, one file at a -time. It displays the name of the file being searched so you can -follow its progress. As soon as it finds an occurrence, `tags-search' -returns. - - Having found one match, you probably want to find all the rest. To -find one more match, type `M-,' (`tags-loop-continue') to resume the -`tags-search'. This searches the rest of the current buffer, followed -by the remaining files of the tags table. - - `M-x tags-query-replace' performs a single `query-replace-regexp' -through all the files in the tags table. It reads a regexp to search -for and a string to replace with, just like ordinary `M-x -query-replace-regexp'. It searches much like `M-x tags-search', but -repeatedly, processing matches according to your input. *Note -Replace::, for more information on query replace. - - It is possible to get through all the files in the tags table with a -single invocation of `M-x tags-query-replace'. But often it is useful -to exit temporarily, which you can do with any input event that has no -special query replace meaning. You can resume the query replace -subsequently by typing `M-,'; this command resumes the last tags search -or replace command that you did. - - The commands in this section carry out much broader searches than the -`find-tag' family. The `find-tag' commands search only for definitions -of tags that match your substring or regexp. The commands -`tags-search' and `tags-query-replace' find every occurrence of the -regexp, as ordinary search commands and replace commands do in the -current buffer. - - These commands create buffers only temporarily for the files that -they have to search (those which are not already visited in Emacs -buffers). Buffers in which no match is found are quickly killed; the -others continue to exist. - - It may have struck you that `tags-search' is a lot like `grep'. You -can also run `grep' itself as an inferior of Emacs and have Emacs show -you the matching lines one by one. This works much like running a -compilation; finding the source locations of the `grep' matches works -like finding the compilation errors. *Note Compilation::. - - If you wish to process all the files in a selected tags table, but -`M-x tags-search' and `M-x tags-query-replace' are not giving you the -desired result, you can use `M-x next-file'. - -`C-u M-x next-file' - With a numeric argument, regardless of its value, visit the first - file in the tags table and prepare to advance sequentially by - files. - -`M-x next-file' - Visit the next file in the selected tags table. - - -File: xemacs.info, Node: List Tags, Prev: Tags Search, Up: Tags - -Tags Table Inquiries --------------------- - -`M-x list-tags' - Display a list of the tags defined in a specific program file. - -`M-x tags-apropos' - Display a list of all tags matching a specified regexp. - - `M-x list-tags' reads the name of one of the files described by the -selected tags table, and displays a list of all the tags defined in that -file. The "file name" argument is really just a string to compare -against the names recorded in the tags table; it is read as a string -rather than a file name. Therefore, completion and defaulting are not -available, and you must enter the string the same way it appears in the -tag table. Do not include a directory as part of the file name unless -the file name recorded in the tags table contains that directory. - - `M-x tags-apropos' is like `apropos' for tags. It reads a regexp, -then finds all the tags in the selected tags table whose entries match -that regexp, and displays the tag names found. - - -File: xemacs.info, Node: Fortran, Next: Asm Mode, Prev: Tags, Up: Programs - -Fortran Mode -============ - - Fortran mode provides special motion commands for Fortran statements -and subprograms, and indentation commands that understand Fortran -conventions of nesting, line numbers, and continuation statements. - - Special commands for comments are provided because Fortran comments -are unlike those of other languages. - - Built-in abbrevs optionally save typing when you insert Fortran -keywords. - - Use `M-x fortran-mode' to switch to this major mode. Doing so calls -the value of `fortran-mode-hook' as a function of no arguments if that -variable has a non-`nil' value. - -* Menu: - -* Motion: Fortran Motion. Moving point by statements or subprograms. -* Indent: Fortran Indent. Indentation commands for Fortran. -* Comments: Fortran Comments. Inserting and aligning comments. -* Columns: Fortran Columns. Measuring columns for valid Fortran. -* Abbrev: Fortran Abbrev. Built-in abbrevs for Fortran keywords. - - Fortran mode was contributed by Michael Prange. - - -File: xemacs.info, Node: Fortran Motion, Next: Fortran Indent, Prev: Fortran, Up: Fortran - -Motion Commands ---------------- - - Fortran mode provides special commands to move by subprograms -(functions and subroutines) and by statements. There is also a command -to put the region around one subprogram, which is convenient for -killing it or moving it. - -`C-M-a' - Move to beginning of subprogram - (`beginning-of-fortran-subprogram'). - -`C-M-e' - Move to end of subprogram (`end-of-fortran-subprogram'). - -`C-M-h' - Put point at beginning of subprogram and mark at end - (`mark-fortran-subprogram'). - -`C-c C-n' - Move to beginning of current or next statement (`fortran-next- - statement'). - -`C-c C-p' - Move to beginning of current or previous statement (`fortran- - previous-statement'). - - -File: xemacs.info, Node: Fortran Indent, Next: Fortran Comments, Prev: Fortran Motion, Up: Fortran - -Fortran Indentation -------------------- - - Special commands and features are available for indenting Fortran -code. They make sure various syntactic entities (line numbers, comment -line indicators, and continuation line flags) appear in the columns -that are required for standard Fortran. - -* Menu: - -* Commands: ForIndent Commands. Commands for indenting Fortran. -* Numbers: ForIndent Num. How line numbers auto-indent. -* Conv: ForIndent Conv. Conventions you must obey to avoid trouble. -* Vars: ForIndent Vars. Variables controlling Fortran indent style. - - -File: xemacs.info, Node: ForIndent Commands, Next: ForIndent Num, Prev: Fortran Indent, Up: Fortran Indent - -Fortran Indentation Commands -............................ - -`' - Indent the current line (`fortran-indent-line'). - -`M-' - Break the current line and set up a continuation line. - -`C-M-q' - Indent all the lines of the subprogram point is in - (`fortran-indent-subprogram'). - - is redefined by Fortran mode to reindent the current line for -Fortran (`fortran-indent-line'). Line numbers and continuation markers -are indented to their required columns, and the body of the statement -is independently indented, based on its nesting in the program. - - The key `C-M-q' is redefined as `fortran-indent-subprogram', a -command that reindents all the lines of the Fortran subprogram -(function or subroutine) containing point. - - The key `M-' is redefined as `fortran-split-line', a command to -split a line in the appropriate fashion for Fortran. In a non-comment -line, the second half becomes a continuation line and is indented -accordingly. In a comment line, both halves become separate comment -lines. - - -File: xemacs.info, Node: ForIndent Num, Next: ForIndent Conv, Prev: ForIndent Commands, Up: Fortran Indent - -Line Numbers and Continuation -............................. - - If a number is the first non-whitespace in the line, it is assumed -to be a line number and is moved to columns 0 through 4. (Columns are -always counted from 0 in XEmacs.) If the text on the line starts with -the conventional Fortran continuation marker `$', it is moved to column -5. If the text begins with any non whitespace character in column 5, -it is assumed to be an unconventional continuation marker and remains -in column 5. - - Line numbers of four digits or less are normally indented one space. -This amount is controlled by the variable `fortran-line-number-indent', -which is the maximum indentation a line number can have. Line numbers -are indented to right-justify them to end in column 4 unless that would -require more than the maximum indentation. The default value of the -variable is 1. - - Simply inserting a line number is enough to indent it according to -these rules. As each digit is inserted, the indentation is recomputed. -To turn off this feature, set the variable -`fortran-electric-line-number' to `nil'. Then inserting line numbers -is like inserting anything else. -