|
|
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: Words, Next: Sentences, Prev: Text Mode, Up: Text
27:
28: Words
29: =====
30:
31: Emacs has commands for moving over or operating on words. By
32: convention, the keys for them are all `Meta-' characters.
33:
34: `M-f'
35: Move forward over a word (`forward-word').
36:
37: `M-b'
38: Move backward over a word (`backward-word').
39:
40: `M-d'
41: Kill up to the end of a word (`kill-word').
42:
43: `M-DEL'
44: Kill back to the beginning of a word (`backward-kill-word').
45:
46: `M-@'
47: Mark the end of the next word (`mark-word').
48:
49: `M-t'
50: Transpose two words; drag a word forward or backward across other
51: words (`transpose-words').
52:
53: Notice how these keys form a series that parallels the
54: character-based `C-f', `C-b', `C-d', `C-t' and DEL. `M-@' is related
55: to `C-@', which is an alias for `C-SPC'.
56:
57: The commands `Meta-f' (`forward-word') and `Meta-b'
58: (`backward-word') move forward and backward over words. They are thus
59: analogous to `Control-f' and `Control-b', which move over single
60: characters. Like their `Control-' analogues, `Meta-f' and `Meta-b'
61: move several words if given an argument. `Meta-f' with a negative
62: argument moves backward, and `Meta-b' with a negative argument moves
63: forward. Forward motion stops right after the last letter of the word,
64: while backward motion stops right before the first letter.
65:
66: `Meta-d' (`kill-word') kills the word after point. To be precise,
67: it kills everything from point to the place `Meta-f' would move to.
68: Thus, if point is in the middle of a word, `Meta-d' kills just the part
69: after point. If some punctuation comes between point and the next
70: word, it is killed along with the word. (If you wish to kill only the
71: next word but not the punctuation before it, simply do `Meta-f' to get
72: the end, and kill the word backwards with `Meta-DEL'.) `Meta-d' takes
73: arguments just like `Meta-f'.
74:
75: `Meta-DEL' (`backward-kill-word') kills the word before point. It
76: kills everything from point back to where `Meta-b' would move to. If
77: point is after the space in `FOO, BAR', then `FOO, ' is killed. (If
78: you wish to kill just `FOO', do `Meta-b Meta-d' instead of `Meta-DEL'.)
79:
80: `Meta-t' (`transpose-words') exchanges the word before or containing
81: point with the following word. The delimiter characters between the
82: words do not move. For example, `FOO, BAR' transposes into `BAR, FOO'
83: rather than `BAR FOO,'. *Note Transpose::, for more on transposition
84: and on arguments to transposition commands.
85:
86: To operate on the next N words with an operation which applies
87: between point and mark, you can either set the mark at point and then
88: move over the words, or you can use the command `Meta-@' (`mark-word')
89: which does not move point, but sets the mark where `Meta-f' would move
90: to. It can be given arguments just like `Meta-f'.
91:
92: The word commands' understanding of syntax is completely controlled
93: by the syntax table. Any character can, for example, be declared to be
94: a word delimiter. *Note Syntax::.
95:
96:
97: File: emacs, Node: Sentences, Next: Paragraphs, Prev: Words, Up: Text
98:
99: Sentences
100: =========
101:
102: The Emacs commands for manipulating sentences and paragraphs are
103: mostly on `Meta-' keys, so as to be like the word-handling commands.
104:
105: `M-a'
106: Move back to the beginning of the sentence
107: (`backward-sentence').
108:
109: `M-e'
110: Move forward to the end of the sentence (`forward-sentence').
111:
112: `M-k'
113: Kill forward to the end of the sentence (`kill-sentence').
114:
115: `C-x DEL'
116: Kill back to the beginning of the sentence
117: (`backward-kill-sentence').
118:
119: The commands `Meta-a' and `Meta-e' (`backward-sentence' and
120: `forward-sentence') move to the beginning and end of the current
121: sentence, respectively. They were chosen to resemble `Control-a' and
122: `Control-e', which move to the beginning and end of a line. Unlike
123: them, `Meta-a' and `Meta-e' if repeated or given numeric arguments move
124: over successive sentences. Emacs assumes that the typist's convention
125: is followed, and thus considers a sentence to end wherever there is a
126: `.', `?' or `!' followed by the end of a line or two spaces, with any
127: number of `)', `]', `'', or `"' characters allowed in between. A
128: sentence also begins or ends wherever a paragraph begins or ends.
129:
130: Neither `M-a' nor `M-e' moves past the newline or spaces beyond the
131: sentence edge at which it is stopping.
132:
133: Just as `C-a' and `C-e' have a kill command, `C-k', to go with them,
134: so `M-a' and `M-e' have a corresponding kill command `M-k'
135: (`kill-sentence') which kills from point to the end of the sentence.
136: With minus one as an argument it kills back to the beginning of the
137: sentence. Larger arguments serve as a repeat count.
138:
139: There is a special command, `C-x DEL' (`backward-kill-sentence') for
140: killing back to the beginning of a sentence, because this is useful
141: when you change your mind in the middle of composing text.
142:
143: The variable `sentence-end' controls recognition of the end of a
144: sentence. It is a regexp that matches the last few characters of a
145: sentence, together with the whitespace following the sentence. Its
146: normal value is
147:
148: "[.?!][]\"')]*\\($\\|\t\\| \\)[ \t\n]*"
149:
150: This example is explained in the section on regexps. *Note Regexps::.
151:
152:
153: File: emacs, Node: Paragraphs, Next: Pages, Prev: Sentences, Up: Text
154:
155: Paragraphs
156: ==========
157:
158: The Emacs commands for manipulating paragraphs are also `Meta-' keys.
159:
160: `M-['
161: Move back to previous paragraph beginning
162: (`backward-paragraph').
163:
164: `M-]'
165: Move forward to next paragraph end (`forward-paragraph').
166:
167: `M-h'
168: Put point and mark around this or next paragraph
169: (`mark-paragraph').
170:
171: `Meta-[' moves to the beginning of the current or previous paragraph,
172: while `Meta-]' moves to the end of the current or next paragraph. Blank
173: lines and text formatter command lines separate paragraphs and are not
174: part of any paragraph. Also, an indented line starts a new paragraph.
175:
176: In major modes for programs (as opposed to Text mode), paragraphs
177: begin and end only at blank lines. This makes the paragraph commands
178: continue to be useful even though there are no paragraphs per se.
179:
180: When there is a fill prefix, then paragraphs are delimited by all
181: lines which don't start with the fill prefix. *Note Filling::.
182:
183: When you wish to operate on a paragraph, you can use the command
184: `Meta-h' (`mark-paragraph') to set the region around it. This command
185: puts point at the beginning and mark at the end of the paragraph point
186: was in. If point is between paragraphs (in a run of blank lines, or at
187: a boundary), the paragraph following point is surrounded by point and
188: mark. If there are blank lines preceding the first line of the
189: paragraph, one of these blank lines is included in the region. Thus,
190: for example, `M-h C-w' kills the paragraph around or after point.
191:
192: The precise definition of a paragraph boundary is controlled by the
193: two variables `paragraph-separate' and `paragraph-start'. The value of
194: `paragraph-start' is a regexp that should match any line that either
195: starts or separates paragraphs. The value of `paragraph-separate' is
196: another regexp that should match only lines that separate paragraphs
197: without being part of any paragraph. Lines that start a new paragraph
198: and are contained in it must match both regexps. For example, normally
199: `paragraph-start' is `"^[ \t\n\f]"' and `paragraph-separate' is
200: `"^[ \t\f]*$"'.
201:
202: Normally it is desirable for page boundaries to separate paragraphs.
203: The default values of these variables recognize the usual separator for
204: pages.
205:
206:
207: File: emacs, Node: Pages, Next: Filling, Prev: Paragraphs, Up: Text
208:
209: Pages
210: =====
211:
212: Files are often thought of as divided into "pages" by the "formfeed"
213: character (ASCII Control-L, octal code 014). For example, if a file is
214: printed on a line printer, each page of the file, in this sense, will
215: start on a new page of paper. Emacs treats a page-separator character
216: just like any other character. It can be inserted with `C-q C-l', or
217: deleted with DEL. Thus, you are free to paginate your file or not.
218: However, since pages are often meaningful divisions of the file,
219: commands are provided to move over them and operate on them.
220:
221: `C-x ['
222: Move point to previous page boundary (`backward-page').
223:
224: `C-x ]'
225: Move point to next page boundary (`forward-page').
226:
227: `C-x C-p'
228: Put point and mark around this page (or another page)
229: (`mark-page').
230:
231: `C-x l'
232: Count the lines in this page (`count-lines-page').
233:
234: The `C-x [' (`backward-page') command moves point to immediately
235: after the previous page delimiter. If point is already right after a
236: page delimiter, it skips that one and stops at the previous one. A
237: numeric argument serves as a repeat count. The `C-x ]' (`forward-page')
238: command moves forward past the next page delimiter.
239:
240: The `C-x C-p' command (`mark-page') puts point at the beginning of
241: the current page and the mark at the end. The page delimiter at the end
242: is included (the mark follows it). The page delimiter at the front is
243: excluded (point follows it). This command can be followed by `C-w' to
244: kill a page which is to be moved elsewhere. If it is inserted after a
245: page delimiter, at a place where `C-x ]' or `C-x [' would take you, then
246: the page will be properly delimited before and after once again.
247:
248: A numeric argument to `C-x C-p' is used to specify which page to go
249: to, relative to the current one. Zero means the current page. One
250: means the next page, and -1 means the previous one.
251:
252: The `C-x l' command (`count-lines-page') is good for deciding where
253: to break a page in two. It prints in the echo area the total number of
254: lines in the current page, and then divides it up into those preceding
255: the current line and those following, as in
256:
257: Page has 96 (72+25) lines
258:
259: Notice that the sum is off by one; this is correct if point is not at
260: the beginning of a line.
261:
262: The variable `page-delimiter' should have as its value a regexp that
263: matches the beginning of a line that separates pages. This is what
264: defines where pages begin. The normal value of this variable is
265: `"^\f"', which matches a formfeed character at the beginning of a line.
266:
267:
268: File: emacs, Node: Filling, Next: Case, Prev: Pages, Up: Text
269:
270: Filling Text
271: ============
272:
273: With Auto Fill mode, text can be "filled" (broken up into lines that
274: fit in a specified width) as you insert it. If you alter existing text
275: it may no longer be properly filled; then explicit commands for filling
276: can be used. (Filling is sometimes called "wrapping" in the
277: terminology used for other text editors, but we don't use that term,
278: because it could just as well refer to the continuation of long lines
279: which happens in Emacs if you *don't* fill them.)
280:
281: * Menu:
282:
283: * Auto Fill:: Auto Fill mode breaks long lines automatically.
284: * Fill Commands:: Commands to refill paragraphs and center lines.
285: * Fill Prefix:: Filling when every line is indented or in a comment, etc.
286:
287:
288: File: emacs, Node: Auto Fill, Next: Fill Commands, Prev: Filling, Up: Filling
289:
290: Auto Fill Mode
291: --------------
292:
293: "Auto Fill" mode is a minor mode in which lines are broken
294: automatically when they become too wide. Breaking happens only when
295: you type a SPC or RET.
296:
297: `M-x auto-fill-mode'
298: Enable or disable Auto Fill mode.
299:
300: `SPC'
301: `RET'
302: In Auto Fill mode, break lines when appropriate.
303:
304: `M-x auto-fill-mode' turns Auto Fill mode on if it was off, or off if
305: it was on. With a positive numeric argument it always turns Auto Fill
306: mode on, and with a negative argument always turns it off. You can see
307: when Auto Fill mode is in effect by the presence of the word `Fill' in
308: the mode line, inside the parentheses. Auto Fill mode is a minor mode,
309: turned on or off for each buffer individually. *Note Minor Modes::.
310:
311: In Auto Fill mode, lines are broken automatically at spaces when
312: they get longer than the desired width. Line breaking and
313: rearrangement takes place only when you type SPC or RET. If you wish
314: to insert a space or newline without permitting line-breaking, type
315: `C-q SPC' or `C-q LFD' (recall that a newline is really a linefeed).
316: Also, `C-o' inserts a newline without line breaking.
317:
318: Auto Fill mode works well with Lisp mode, because when it makes a new
319: line in Lisp mode it indents that line with TAB. If a line ending in a
320: comment gets too long, the text of the comment is split into two
321: comment lines. Optionally new comment delimiters are inserted at the
322: end of the first line and the beginning of the second so that each line
323: is a separate comment; the variable `comment-multi-line' controls the
324: choice (*note Comments::.).
325:
326: Auto Fill mode does not refill entire paragraphs. It can break
327: lines but cannot merge lines. So editing in the middle of a paragraph
328: can result in a paragraph that is not correctly filled. The easiest
329: way to make the paragraph properly filled again is usually with the
330: explicit fill commands.
331:
332: Many users like Auto Fill mode and want to use it in all text files.
333: The section on init files says how to arrange this permanently for
334: yourself. *Note Init File::.
335:
336:
337: File: emacs, Node: Fill Commands, Next: Fill Prefix, Prev: Auto Fill, Up: Filling
338:
339: Explicit Fill Commands
340: ----------------------
341:
342: `M-q'
343: Fill current paragraph (`fill-paragraph').
344:
345: `M-g'
346: Fill each paragraph in the region (`fill-region').
347:
348: `C-x f'
349: Set the fill column (`set-fill-column').
350:
351: `M-x fill-region-as-paragraph.'
352: Fill the region, considering it as one paragraph.
353:
354: `M-s'
355: Center a line.
356:
357: To refill a paragraph, use the command `Meta-q' (`fill-paragraph').
358: It causes the paragraph that point is inside, or the one after point if
359: point is between paragraphs, to be refilled. All the line-breaks are
360: removed, and then new ones are inserted where necessary. `M-q' can be
361: undone with `C-_'. *Note Undo::.
362:
363: To refill many paragraphs, use `M-g' (`fill-region'), which divides
364: the region into paragraphs and fills each of them.
365:
366: `Meta-q' and `Meta-g' use the same criteria as `Meta-h' for finding
367: paragraph boundaries (*note Paragraphs::.). For more control, you can
368: use `M-x fill-region-as-paragraph', which refills everything between
369: point and mark. This command recognizes no paragraph separators; it
370: deletes any blank lines found within the region to be filled.
371:
372: A numeric argument to `M-g' or `M-q' causes it to "justify" the text
373: as well as filling it. This means that extra spaces are inserted to
374: make the right margin line up exactly at the fill column. To remove the
375: extra spaces, use `M-q' or `M-g' with no argument.
376:
377: The command `Meta-s' (`center-line') centers the current line within
378: the current fill column. With an argument, it centers several lines
379: individually and moves past them.
380:
381: The maximum line width for filling is in the variable `fill-column'.
382: Altering the value of `fill-column' makes it local to the current
383: buffer; until that time, the default value is in effect. The default is
384: initially 70. *Note Locals::.
385:
386: The easiest way to set `fill-column' is to use the command `C-x f'
387: (`set-fill-column'). With no argument, it sets `fill-column' to the
388: current horizontal position of point. With a numeric argument, it uses
389: that as the new fill column.
390:
391:
392: File: emacs, Node: Fill Prefix, Prev: Fill Commands, Up: Filling
393:
394: The Fill Prefix
395: ---------------
396:
397: To fill a paragraph in which each line starts with a special marker
398: (which might be a few spaces, giving an indented paragraph), use the
399: "fill prefix" feature. The fill prefix is a string which Emacs expects
400: every line to start with, and which is not included in filling.
401:
402: `C-x .'
403: Set the fill prefix (`set-fill-prefix').
404:
405: `M-q'
406: Fill a paragraph using current fill prefix (`fill-paragraph').
407:
408: `M-x fill-individual-paragraphs'
409: Fill the region, considering each change of indentation as
410: starting a new paragraph.
411:
412: To specify a fill prefix, move to a line that starts with the desired
413: prefix, put point at the end of the prefix, and give the command
414: `C-x .' (`set-fill-prefix'). That's a period after the `C-x'. To turn
415: off the fill prefix, specify an empty prefix: type `C-x .' with point
416: at the beginning of a line.
417:
418: When a fill prefix is in effect, the fill commands remove the fill
419: prefix from each line before filling and insert it on each line after
420: filling. The fill prefix is also inserted on new lines made
421: automatically by Auto Fill mode. Lines that do not start with the fill
422: prefix are considered to start paragraphs, both in `M-q' and the
423: paragraph commands; this is just right if you are using paragraphs with
424: hanging indentation (every line indented except the first one). Lines
425: which are blank or indented once the prefix is removed also separate or
426: start paragraphs; this is what you want if you are writing
427: multi-paragraph comments with a comment delimiter on each line.
428:
429: The fill prefix is stored in the variable `fill-prefix'. Its value
430: is a string, or `nil' when there is no fill prefix. This is a
431: per-buffer variable; altering the variable affects only the current
432: buffer, but there is a default value which you can change as well.
433: *Note Locals::.
434:
435: Another way to use fill prefixes is through `M-x
436: fill-individual-paragraphs'. This function divides the region into
437: groups of consecutive lines with the same amount and kind of
438: indentation and fills each group as a paragraph using its indentation
439: as a fill prefix.
440:
441:
442: File: emacs, Node: Case, Prev: Filling, Up: Text
443:
444: Case Conversion Commands
445: ========================
446:
447: Emacs has commands for converting either a single word or any
448: arbitrary range of text to upper case or to lower case.
449:
450: `M-l'
451: Convert following word to lower case (`downcase-word').
452:
453: `M-u'
454: Convert following word to upper case (`upcase-word').
455:
456: `M-c'
457: Capitalize the following word (`capitalize-word').
458:
459: `C-x C-l'
460: Convert region to lower case (`downcase-region').
461:
462: `C-x C-u'
463: Convert region to upper case (`upcase-region').
464:
465: The word conversion commands are the most useful. `Meta-l'
466: (`downcase-word') converts the word after point to lower case, moving
467: past it. Thus, repeating `Meta-l' converts successive words. `Meta-u'
468: (`upcase-word') converts to all capitals instead, while `Meta-c'
469: (`capitalize-word') puts the letter following point into upper case and
470: the rest of the letters in the word into lower case. All these
471: commands convert several words at once if given an argument. They are
472: especially convenient for converting a large amount of text from all
473: upper case to mixed case, because you can move through the text using
474: `M-l', `M-u' or `M-c' on each word as appropriate, occasionally using
475: `M-f' instead to skip a word.
476:
477: When given a negative argument, the word case conversion commands
478: apply to the appropriate number of words before point, but do not move
479: point. This is convenient when you have just typed a word in the wrong
480: case: you can give the case conversion command and continue typing.
481:
482: If a word case conversion command is given in the middle of a word,
483: it applies only to the part of the word which follows point. This is
484: just like what `Meta-d' (`kill-word') does. With a negative argument,
485: case conversion applies only to the part of the word before point.
486:
487: The other case conversion commands are `C-x C-u' (`upcase-region')
488: and `C-x C-l' (`downcase-region'), which convert everything between
489: point and mark to the specified case. Point and mark do not move.
490:
491:
492: File: emacs, Node: Programs, Next: Compiling/Testing, Prev: Text, Up: Top
493:
494: Editing Programs
495: ****************
496:
497: Emacs has many commands designed to understand the syntax of
498: programming languages such as Lisp and C. These commands can
499:
500: * Move over or kill balanced expressions or "sexps" (*note Lists::.).
501:
502: * Move over or mark top-level balanced expressions ("defuns", in
503: Lisp; functions, in C).
504:
505: * Show how parentheses balance (*note Matching::.).
506:
507: * Insert, kill or align comments (*note Comments::.).
508:
509: * Follow the usual indentation conventions of the language (*note
510: Grinding::.).
511:
512: The commands for words, sentences and paragraphs are very useful in
513: editing code even though their canonical application is for editing
514: human language text. Most symbols contain words (*note Words::.);
515: sentences can be found in strings and comments (*note Sentences::.).
516: Paragraphs per se are not present in code, but the paragraph commands
517: are useful anyway, because Lisp mode and C mode define paragraphs to
518: begin and end at blank lines (*note Paragraphs::.). Judicious use of
519: blank lines to make the program clearer will also provide interesting
520: chunks of text for the paragraph commands to work on.
521:
522: The selective display feature is useful for looking at the overall
523: structure of a function (*note Selective Display::.). This feature
524: causes only the lines that are indented less than a specified amount to
525: appear on the screen.
526:
527: * Menu:
528:
529: * Program Modes:: Major modes for editing programs.
530: * Lists:: Expressions with balanced parentheses.
531: There are editing commands to operate on them.
532: * Defuns:: Each program is made up of separate functions.
533: There are editing commands to operate on them.
534: * Grinding:: Adjusting indentation to show the nesting.
535: * Matching:: Insertion of a close-delimiter flashes matching open.
536: * Comments:: Inserting, killing and aligning comments.
537: * Macro Expansion:: How to see the results of C macro expansion.
538: * Balanced Editing:: Inserting two matching parentheses at once, etc.
539: * Lisp Completion:: Completion on symbol names in Lisp code.
540: * Documentation:: Getting documentation of functions you plan to call.
541: * Change Log:: Maintaining a change history for your program.
542: * Tags:: Go direct to any function in your program in one
543: command. Tags remembers which file it is in.
544: * Fortran:: Fortran mode and its special features.
545:
546:
547: File: emacs, Node: Program Modes, Next: Lists, Prev: Programs, Up: Programs
548:
549: Major Modes for Programming Languages
550: =====================================
551:
552: Emacs has major modes for the programming languages Lisp, Scheme (a
553: variant of Lisp), C, Fortran and Muddle. Ideally, a major mode should
554: be implemented for each programming language that you might want to
555: edit with Emacs; but often the mode for one language can serve for other
556: syntactically similar languages. The language modes that exist are
557: those that someone decided to take the trouble to write.
558:
559: There are several forms of Lisp mode, which differ in the way they
560: interface to Lisp execution. *Note Lisp Modes::.
561:
562: Each of the programming language modes defines the TAB key to run an
563: indentation function that knows the indentation conventions of that
564: language and updates the current line's indentation accordingly. For
565: example, in C mode TAB is bound to `c-indent-line'. LFD is normally
566: defined to do RET followed by TAB; thus, it too indents in a
567: mode-specific fashion.
568:
569: In most programming languages, indentation is likely to vary from
570: line to line. So the major modes for those languages rebind DEL to
571: treat a tab as if it were the equivalent number of spaces (using the
572: command `backward-delete-char-untabify'). This makes it possible to
573: rub out indentation one column at a time without worrying whether it is
574: made up of spaces or tabs. Use `C-b C-d' to delete a tab character
575: before point, in these modes.
576:
577: Programming language modes define paragraphs to be separated only by
578: blank lines, so that the paragraph commands remain useful. Auto Fill
579: mode, if enabled in a programming language major mode, indents the new
580: lines which it creates.
581:
582: Turning on a major mode calls a user-supplied function called the
583: "mode hook", which is the value of a Lisp variable. For example,
584: turning on C mode calls the value of the variable `c-mode-hook' if that
585: value exists and is non-`nil'. Mode hook variables for other
586: programming language modes include `lisp-mode-hook',
587: `emacs-lisp-mode-hook', `lisp-interaction-mode-hook',
588: `scheme-mode-hook' and `muddle-mode-hook'. The mode hook function
589: receives no arguments.
590:
591:
592: File: emacs, Node: Lists, Next: Defuns, Prev: Program Modes, Up: Programs
593:
594: Lists and Sexps
595: ===============
596:
597: By convention, Emacs keys for dealing with balanced expressions are
598: usually `Control-Meta-' characters. They tend to be analogous in
599: function to their `Control-' and `Meta-' equivalents. These commands
600: are usually thought of as pertaining to expressions in programming
601: languages, but can be useful with any language in which some sort of
602: parentheses exist (including English).
603:
604: These commands fall into two classes. Some deal only with "lists"
605: (parenthetical groupings). They see nothing except parentheses,
606: brackets, braces (whichever ones must balance in the language you are
607: working with), and escape characters that might be used to quote those.
608:
609: The other commands deal with expressions or "sexps". The word `sexp'
610: is derived from "s-expression", the ancient term for an expression in
611: Lisp. But in Emacs, the notion of `sexp' is not limited to Lisp. It
612: refers to an expression in whatever language your program is written in.
613: Each programming language has its own major mode, which customizes the
614: syntax tables so that expressions in that language count as sexps.
615:
616: Sexps typically include symbols, numbers, and string constants, as
617: well as anything contained in parentheses, brackets or braces.
618:
619: In languages that use prefix and infix operators, such as C, it is
620: not possible for all expressions to be sexps. For example, C mode does
621: not recognize `foo + bar' as a sexp, even though it is a C expression;
622: it recognizes `foo' as one sexp and `bar' as another, with the `+' as
623: punctuation between them. This is a fundamental ambiguity: both `foo +
624: bar' and `foo' are legitimate choices for the sexp to move over if
625: point is at the `f'. Note that `(foo + bar)' is a sexp in C mode.
626:
627: Some languages have obscure forms of syntax for expressions that
628: nobody has bothered to make Emacs understand properly.
629:
630: `C-M-f'
631: Move forward over a sexp (`forward-sexp').
632:
633: `C-M-b'
634: Move backward over a sexp (`backward-sexp').
635:
636: `C-M-k'
637: Kill sexp forward (`kill-sexp').
638:
639: `C-M-u'
640: Move up and backward in list structure (`backward-up-list').
641:
642: `C-M-d'
643: Move down and forward in list structure (`down-list').
644:
645: `C-M-n'
646: Move forward over a list (`forward-list').
647:
648: `C-M-p'
649: Move backward over a list (`backward-list').
650:
651: `C-M-t'
652: Transpose expressions (`transpose-sexps').
653:
654: `C-M-@'
655: Put mark after following expression (`mark-sexp').
656:
657: To move forward over a sexp, use `C-M-f' (`forward-sexp'). If the
658: first significant character after point is an opening delimiter (`(' in
659: Lisp; `(', `[' or `{' in C), `C-M-f' moves past the matching closing
660: delimiter. If the character begins a symbol, string, or number,
661: `C-M-f' moves over that. If the character after point is a closing
662: delimiter, `C-M-f' gets an error.
663:
664: The command `C-M-b' (`backward-sexp') moves backward over a sexp.
665: The detailed rules are like those above for `C-M-f', but with
666: directions reversed. If there are any prefix characters (singlequote,
667: backquote and comma, in Lisp) preceding the sexp, `C-M-b' moves back
668: over them as well.
669:
670: `C-M-f' or `C-M-b' with an argument repeats that operation the
671: specified number of times; with a negative argument, it moves in the
672: opposite direction.
673:
674: The sexp commands move across comments as if they were whitespace, in
675: languages such as C where the comment-terminator can be recognized. In
676: Lisp, and other languages where comments run until the end of a line,
677: it is very difficult to ignore comments when parsing backwards;
678: therefore, in such languages the sexp commands treat the text of
679: comments as if it were code.
680:
681: Killing a sexp at a time can be done with `C-M-k' (`kill-sexp').
682: `C-M-k' kills the characters that `C-M-f' would move over.
683:
684: The "list commands" move over lists like the sexp commands but skip
685: blithely over any number of other kinds of sexps (symbols, strings,
686: etc). They are `C-M-n' (`forward-list') and `C-M-p' (`backward-list').
687: The main reason they are useful is that they usually ignore comments
688: (since the comments usually do not contain any lists).
689:
690: `C-M-n' and `C-M-p' stay at the same level in parentheses, when
691: that's possible. To move up one (or N) levels, use `C-M-u'
692: (`backward-up-list'). `C-M-u' moves backward up past one unmatched
693: opening delimiter. A positive argument serves as a repeat count; a
694: negative argument reverses direction of motion and also requests
695: repetition, so it moves forward and up one or more levels.
696:
697: To move down in list structure, use `C-M-d' (`down-list'). In Lisp
698: mode, where `(' is the only opening delimiter, this is nearly the same
699: as searching for a `('. An argument specifies the number of levels of
700: parentheses to go down.
701:
702: A somewhat random-sounding command which is nevertheless easy to use
703: is `C-M-t' (`transpose-sexps'), which drags the previous sexp across
704: the next one. An argument serves as a repeat count, and a negative
705: argument drags backwards (thus canceling out the effect of `C-M-t' with
706: a positive argument). An argument of zero, rather than doing nothing,
707: transposes the sexps ending after point and the mark.
708:
709: To make the region be the next sexp in the buffer, use `C-M-@'
710: (`mark-sexp') which sets mark at the same place that `C-M-f' would move
711: to. `C-M-@' takes arguments like `C-M-f'. In particular, a negative
712: argument is useful for putting the mark at the beginning of the
713: previous sexp.
714:
715: The list and sexp commands' understanding of syntax is completely
716: controlled by the syntax table. Any character can, for example, be
717: declared to be an opening delimiter and act like an open parenthesis.
718: *Note Syntax::.
719:
720:
721: File: emacs, Node: Defuns, Next: Grinding, Prev: Lists, Up: Programs
722:
723: Defuns
724: ======
725:
726: In Emacs, a parenthetical grouping at the top level in the buffer is
727: called a "defun". The name derives from the fact that most top-level
728: lists in a Lisp file are instances of the special form `defun', but any
729: top-level parenthetical grouping counts as a defun in Emacs parlance
730: regardless of what its contents are, and regardless of the programming
731: language in use. For example, in C, the body of a function definition
732: is a defun.
733:
734: `C-M-a'
735: Move to beginning of current or preceding defun
736: (`beginning-of-defun').
737:
738: `C-M-e'
739: Move to end of current or following defun (`end-of-defun').
740:
741: `C-M-h'
742: Put region around whole current or following defun (`mark-defun').
743:
744: The commands to move to the beginning and end of the current defun
745: are `C-M-a' (`beginning-of-defun') and `C-M-e' (`end-of-defun').
746:
747: If you wish to operate on the current defun, use `C-M-h'
748: (`mark-defun') which puts point at the beginning and mark at the end of
749: the current or next defun. For example, this is the easiest way to get
750: ready to move the defun to a different place in the text. In C mode,
751: `C-M-h' runs the function `mark-c-function', which is almost the same
752: as `mark-defun'; the difference is that it backs up over the argument
753: declarations, function name and returned data type so that the entire C
754: function is inside the region.
755:
756: Emacs assumes that any open-parenthesis found in the leftmost column
757: is the start of a defun. Therefore, never put an open-parenthesis at
758: the left margin in a Lisp file unless it is the start of a top level
759: list. Never put an open-brace or other opening delimiter at the
760: beginning of a line of C code unless it starts the body of a function.
761: The most likely problem case is when you want an opening delimiter at
762: the start of a line inside a string. To avoid trouble, put an escape
763: character (`\', in C and Emacs Lisp, `/' in some other Lisp dialects)
764: before the opening delimiter. It will not affect the contents of the
765: string.
766:
767: In the remotest past, the original Emacs found defuns by moving
768: upward a level of parentheses until there were no more levels to go up.
769: This always required scanning all the way back to the beginning of the
770: buffer, even for a small function. To speed up the operation, Emacs
771: was changed to assume that any `(' (or other character assigned the
772: syntactic class of opening-delimiter) at the left margin is the start
773: of a defun. This heuristic was nearly always right and avoided the
774: costly scan; however, it mandated the convention described above.
775:
776:
777: File: emacs, Node: Grinding, Next: Matching, Prev: Defuns, Up: Programs
778:
779: Indentation for Programs
780: ========================
781:
782: The best way to keep a program properly indented ("ground") is to use
783: Emacs to re-indent it as you change it. Emacs has commands to indent
784: properly either a single line, a specified number of lines, or all of
785: the lines inside a single parenthetical grouping.
786:
787: * Menu:
788:
789: * Basic Indent::
790: * Multi-line Indent:: Commands to reindent many lines at once.
791: * Lisp Indent:: Specifying how each Lisp function should be indented.
792: * C Indent:: Choosing an indentation style for C code.
793:
794:
795: File: emacs, Node: Basic Indent, Next: Multi-line Indent, Prev: Grinding, Up: Grinding
796:
797: Basic Program Indentation Commands
798: ----------------------------------
799:
800: `TAB'
801: Adjust indentation of current line.
802:
803: `LFD'
804: Equivalent to RET followed by TAB (`newline-and-indent').
805:
806: The basic indentation command is TAB, which gives the current line
807: the correct indentation as determined from the previous lines. The
808: function that TAB runs depends on the major mode; it is
809: `lisp-indent-line' in Lisp mode, `c-indent-line' in C mode, etc. These
810: functions understand different syntaxes for different languages, but
811: they all do about the same thing. TAB in any programming language
812: major mode inserts or deletes whitespace at the beginning of the
813: current line, independent of where point is in the line. If point is
814: inside the whitespace at the beginning of the line, TAB leaves it at
815: the end of that whitespace; otherwise, TAB leaves point fixed with
816: respect to the characters around it.
817:
818: Use `C-q TAB' to insert a tab at point.
819:
820: When entering a large amount of new code, use LFD
821: (`newline-and-indent'), which is equivalent to a RET followed by a TAB.
822: LFD creates a blank line, and then gives it the appropriate
823: indentation.
824:
825: TAB indents the second and following lines of the body of a
826: parenthetical grouping each under the preceding one; therefore, if you
827: alter one line's indentation to be nonstandard, the lines below will
828: tend to follow it. This is the right behavior in cases where the
829: standard result of TAB is unaesthetic.
830:
831: Remember that an open-parenthesis, open-brace or other opening
832: delimiter at the left margin is assumed by Emacs (including the
833: indentation routines) to be the start of a function. Therefore, you
834: must never have an opening delimiter in column zero that is not the
835: beginning of a function, not even inside a string. This restriction is
836: vital for making the indentation commands fast; you must simply accept
837: it. *Note Defuns::, for more information on this.
838:
839:
840: File: emacs, Node: Multi-line Indent, Next: Lisp Indent, Prev: Basic Indent, Up: Grinding
841:
842: Indenting Several Lines
843: -----------------------
844:
845: When you wish to re-indent several lines of code which have been
846: altered or moved to a different level in the list structure, you have
847: several commands available.
848:
849: `C-M-q'
850: Re-indent all the lines within one list (`indent-sexp').
851:
852: `C-u TAB'
853: Shift an entire list rigidly sideways so that its first line is
854: properly indented.
855:
856: `C-M-\'
857: Re-indent all lines in the region (`indent-region').
858:
859: You can re-indent the contents of a single list by positioning point
860: before the beginning of it and typing `C-M-q' (`indent-sexp' in Lisp
861: mode, `indent-c-exp' in C mode; also bound to other suitable functions
862: in other modes). The indentation of the line the sexp starts on is not
863: changed; therefore, only the relative indentation within the list, and
864: not its position, is changed. To correct the position as well, type a
865: TAB before the `C-M-q'.
866:
867: If the relative indentation within a list is correct but the
868: indentation of its beginning is not, go to the line the list begins on
869: and type `C-u TAB'. When TAB is given a numeric argument, it moves all
870: the lines in the grouping starting on the current line sideways the
871: same amount that the current line moves. It is clever, though, and
872: does not move lines that start inside strings, or C preprocessor lines
873: when in C mode.
874:
875: Another way to specify the range to be re-indented is with point and
876: mark. The command `C-M-\' (`indent-region') applies TAB to every line
877: whose first character is between point and mark.
878:
879:
880: File: emacs, Node: Lisp Indent, Next: C Indent, Prev: Multi-line Indent, Up: Grinding
881:
882: Customizing Lisp Indentation
883: ----------------------------
884:
885: The indentation pattern for a Lisp expression can depend on the
886: function called by the expression. For each Lisp function, you can
887: choose among several predefined patterns of indentation, or define an
888: arbitrary one with a Lisp program.
889:
890: The standard pattern of indentation is as follows: the second line
891: of the expression is indented under the first argument, if that is on
892: the same line as the beginning of the expression; otherwise, the second
893: line is indented underneath the function name. Each following line is
894: indented under the previous line whose nesting depth is the same.
895:
896: If the variable `lisp-indent-offset' is non-`nil', it overrides the
897: usual indentation pattern for the second line of an expression, so that
898: such lines are always indented `lisp-indent-offset' more columns than
899: the containing list.
900:
901: The standard pattern is overridden for certain functions. Functions
902: whose names start with `def' always indent the second line by
903: `lisp-body-indention' extra columns beyond the open-parenthesis
904: starting the expression.
905:
906: The standard pattern can be overridden in various ways for individual
907: functions, according to the `lisp-indent-hook' property of the function
908: name. There are four possibilities for this property:
909:
910: `nil'
911: This is the same as no property; the standard indentation pattern
912: is used.
913:
914: `defun'
915: The pattern used for function names that start with `def' is used
916: for this function also.
917:
918: a number, NUMBER
919: The first NUMBER arguments of the function are "distinguished"
920: arguments; the rest are considered the "body" of the expression.
921: A line in the expression is indented according to whether the
922: first argument on it is distinguished or not. If the argument is
923: part of the body, the line is indented `lisp-body-indent' more
924: columns than the open-parenthesis starting the containing
925: expression. If the argument is distinguished and is either the
926: first or second argument, it is indented twice that many extra
927: columns. If the argument is distinguished and not the first or
928: second argument, the standard pattern is followed for that line.
929:
930: a symbol, SYMBOL
931: SYMBOL should be a function name; that function is called to
932: calculate the indentation of a line within this expression. The
933: function receives two arguments:
934: STATE
935: The value returned by `parse-partial-sexp' (a Lisp primitive
936: for indentation and nesting computation) when it parses up to
937: the beginning of this line.
938:
939: POS
940: The position at which the line being indented begins.
941:
942: It should return either a number, which is the number of columns of
943: indentation for that line, or a list whose CAR is such a number.
944: The difference between returning a number and returning a list is
945: that a number says that all following lines at the same nesting
946: level should be indented just like this one; a list says that
947: following lines might call for different indentations. This makes
948: a difference when the indentation is being computed by `C-M-q'; if
949: the value is a number, `C-M-q' need not recalculate indentation
950: for the following lines until the end of the list.
951:
952:
953: File: emacs, Node: C Indent, Prev: Lisp Indent, Up: Grinding
954:
955: Customizing C Indentation
956: -------------------------
957:
958: Two variables control which commands perform C indentation and when.
959:
960: If `c-auto-newline' is non-`nil', newlines are inserted both before
961: and after braces that you insert, and after colons and semicolons.
962: Correct C indentation is done on all the lines that are made this way.
963:
964: If `c-tab-always-indent' is `nil', the TAB command in C mode does
965: indentation only if point is at the left margin or within the line's
966: indentation. If there is non-whitespace to the left of point, then TAB
967: just inserts a tab character in the buffer. Normally, this variable is
968: `t', and TAB always reindents the current line.
969:
970: C does not have anything analogous to particular function names for
971: which special forms of indentation are desirable. However, it has a
972: different need for customization facilities: many different styles of C
973: indentation are in common use.
974:
975: There are six variables you can set to control the style that Emacs C
976: mode will use.
977:
978: `c-indent-level'
979: Indentation of C statements within surrounding block. The
980: surrounding block's indentation is the indentation of the line on
981: which the open-brace appears.
982:
983: `c-continued-statement-offset'
984: Extra indentation given to a substatement, such as the then-clause
985: of an if or body of a while.
986:
987: `c-brace-offset'
988: Extra indentation for line if it starts with an open brace.
989:
990: `c-brace-imaginary-offset'
991: An open brace following other text is treated as if it were this
992: far to the right of the start of its line.
993:
994: `c-argdecl-indent'
995: Indentation level of declarations of C function arguments.
996:
997: `c-label-offset'
998: Extra indentation for line that is a label, or case or default.
999:
1000: The variable `c-indent-level' controls the indentation for C
1001: statements with respect to the surrounding block. In the example
1002:
1003: {
1004: foo ();
1005:
1006: the difference in indentation between the lines is `c-indent-level'.
1007: Its standard value is 2.
1008:
1009: If the open-brace beginning the compound statement is not at the
1010: beginning of its line, the `c-indent-level' is added to the indentation
1011: of the line, not the column of the open-brace. For example,
1012:
1013: if (losing) {
1014: do_this ();
1015:
1016: One popular indentation style is that which results from setting
1017: `c-indent-level' to 8 and putting open-braces at the end of a line in
1018: this way. I prefer to put the open-brace on a separate line.
1019:
1020: In fact, the value of the variable `c-brace-imaginary-offset' is
1021: also added to the indentation of such a statement. Normally this
1022: variable is zero. Think of this variable as the imaginary position of
1023: the open brace, relative to the first nonblank character on the line.
1024: By setting this variable to 4 and `c-indent-level' to 0, you can get
1025: this style:
1026:
1027: if (x == y) {
1028: do_it ();
1029: }
1030:
1031: When `c-indent-level' is zero, the statements inside most braces
1032: will line up right under the open brace. But there is an exception made
1033: for braces in column zero, such as surrounding a function's body. The
1034: statements just inside it do not go at column zero. Instead,
1035: `c-brace-offset' and `c-continued-statement-offset' (see below) are
1036: added to produce a typical offset between brace levels, and the
1037: statements are indented that far.
1038:
1039: `c-continued-statement-offset' controls the extra indentation for a
1040: line that starts within a statement (but not within parentheses or
1041: brackets). These lines are usually statements that are within other
1042: statements, such as the then-clauses of `if' statements and the bodies
1043: of `while' statements. This parameter is the difference in indentation
1044: between the two lines in
1045:
1046: if (x == y)
1047: do_it ();
1048:
1049: Its standard value is 2. Some popular indentation styles correspond to
1050: a value of zero for `c-continued-statement-offset'.
1051:
1052: `c-brace-offset' is the extra indentation given to a line that
1053: starts with an open-brace. Its standard value is zero; compare
1054:
1055: if (x == y)
1056: {
1057:
1058: with
1059:
1060: if (x == y)
1061: do_it ();
1062:
1063: if `c-brace-offset' were set to 4, the first example would become
1064:
1065: if (x == y)
1066: {
1067:
1068: `c-argdecl-indent' controls the indentation of declarations of the
1069: arguments of a C function. It is absolute: argument declarations
1070: receive exactly `c-argdecl-indent' spaces. The standard value is 5,
1071: resulting in code like this:
1072:
1073: char *
1074: index (string, c)
1075: char *string;
1076: int c;
1077:
1078: `c-label-offset' is the extra indentation given to a line that
1079: contains a label, a case statement, or a `default:' statement. Its
1080: standard value is -2, resulting in code like this
1081:
1082: switch (c)
1083: {
1084: case 'x':
1085:
1086: If `c-label-offset' were zero, the same code would be indented as
1087:
1088: switch (c)
1089: {
1090: case 'x':
1091:
1092: This example assumes that the other variables above also have their
1093: standard values.
1094:
1095: I strongly recommend that you try out the indentation style produced
1096: by the standard settings of these variables, together with putting open
1097: braces on separate lines. You can see how it looks in all the C source
1098: files of GNU Emacs.
1099:
1100:
1101: File: emacs, Node: Matching, Next: Comments, Prev: Grinding, Up: Programs
1102:
1103: Automatic Display Of Matching Parentheses
1104: =========================================
1105:
1106: The Emacs parenthesis-matching feature is designed to show
1107: automatically how parentheses match in the text. Whenever a
1108: self-inserting character that is a closing delimiter is typed, the
1109: cursor moves momentarily to the location of the matching opening
1110: delimiter, provided that is on the screen. If it is not on the screen,
1111: some text starting with that opening delimiter is displayed in the echo
1112: area. Either way, you can tell what grouping is being closed off.
1113:
1114: In Lisp, automatic matching applies only to parentheses. In C, it
1115: applies to braces and brackets too. Emacs knows which characters to
1116: regard as matching delimiters based on the syntax table, which is set
1117: by the major mode. *Note Syntax::.
1118:
1119: If the opening delimiter and closing delimiter are mismatched--such
1120: as in `[x)'--a warning message is displayed in the echo area. The
1121: correct matches are specified in the syntax table.
1122:
1123: Two variables control parenthesis match display.
1124: `blink-matching-paren' turns the feature on or off; `nil' turns it off,
1125: but the default is `t' to turn match display on.
1126: `blink-matching-paren-distance' specifies how many characters back to
1127: search to find the matching opening delimiter. If the match is not
1128: found in that far, scanning stops, and nothing is displayed. This is
1129: to prevent scanning for the matching delimiter from wasting lots of
1130: time when there is no match. The default is 4000.
1131:
1132:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.