1 @node Indentation, Text, Major Modes, Top
8 Indent current line ``appropriately'' in a mode-dependent fashion.
10 Perform @key{RET} followed by @key{TAB} (@code{newline-and-indent}).
12 Merge two lines (@code{delete-indentation}). This would cancel out
13 the effect of @key{LFD}.
15 Split line at point; text on the line after point becomes a new line
16 indented to the same column that it now starts in (@code{split-line}).
18 Move (forward or back) to the first non-blank character on the current
19 line (@code{back-to-indentation}).
21 Indent several lines to same column (@code{indent-region}).
23 Shift block of lines rigidly right or left (@code{indent-rigidly}).
25 Indent from point to the next prespecified tab stop column
26 (@code{tab-to-tab-stop}).
27 @item M-x indent-relative
28 Indent from point to under an indentation point in the previous line.
33 Most programming languages have some indentation convention. For Lisp
34 code, lines are indented according to their nesting in parentheses. The
35 same general idea is used for C code, though details differ.
37 Use the @key{TAB} command to indent a line whatever the language.
38 Each major mode defines this command to perform indentation appropriate
39 for the particular language. In Lisp mode, @key{TAB} aligns a line
40 according to its depth in parentheses. No matter where in the line you
41 are when you type @key{TAB}, it aligns the line as a whole. In C mode,
42 @key{TAB} implements a subtle and sophisticated indentation style that
43 knows about many aspects of C syntax.
46 In Text mode, @key{TAB} runs the command @code{tab-to-tab-stop}, which
47 indents to the next tab stop column. You can set the tab stops with
48 @kbd{M-x edit-tab-stops}.
51 * Indentation Commands:: Various commands and techniques for indentation.
52 * Tab Stops:: You can set arbitrary "tab stops" and then
53 indent to the next tab stop when you want to.
54 * Just Spaces:: You can request indentation using just spaces.
57 @node Indentation Commands, Tab Stops, Indentation, Indentation
58 @section Indentation Commands and Techniques
59 @c ??? Explain what Emacs has instead of space-indent-flag.
61 If you just want to insert a tab character in the buffer, you can type
65 @findex back-to-indentation
66 To move over the indentation on a line, type @kbd{Meta-m}
67 (@code{back-to-indentation}). This command, given anywhere on a line,
68 positions point at the first non-blank character on the line.
70 To insert an indented line before the current line, type @kbd{C-a C-o
71 @key{TAB}}. To make an indented line after the current line, use
76 @kbd{C-M-o} (@code{split-line}) moves the text from point to the end of
77 the line vertically down, so that the current line becomes two lines.
78 @kbd{C-M-o} first moves point forward over any spaces and tabs. Then it
79 inserts after point a newline and enough indentation to reach the same
80 column point is on. Point remains before the inserted newline; in this
81 regard, @kbd{C-M-o} resembles @kbd{C-o}.
85 @findex delete-horizontal-space
86 @findex delete-indentation
87 To join two lines cleanly, use the @kbd{Meta-^}
88 (@code{delete-indentation}) command to delete the indentation at the
89 front of the current line, and the line boundary as well. Empty spaces
90 are replaced by a single space, or by no space if at the beginning of a
91 line, before a close parenthesis, or after an open parenthesis.
92 To delete just the indentation of a line, go to the beginning of the
93 line and use @kbd{Meta-\} (@code{delete-horizontal-space}), which
94 deletes all spaces and tabs around the cursor.
99 @findex indent-rigidly
100 There are also commands for changing the indentation of several lines at
101 once. @kbd{Control-Meta-\} (@code{indent-region}) gives each line which
102 begins in the region the ``usual'' indentation by invoking @key{TAB} at the
103 beginning of the line. A numeric argument specifies the column to indent
104 to. Each line is shifted left or right so that its first non-blank
105 character appears in that column. @kbd{C-x @key{TAB}}
106 (@code{indent-rigidly}) moves all the lines in the region right by its
107 argument (left, for negative arguments). The whole group of lines moves
108 rigidly sideways, which is how the command gets its name.@refill
110 @findex indent-relative
111 @kbd{M-x indent-relative} indents at point based on the previous line
112 (actually, the last non-empty line.) It inserts whitespace at point, moving
113 point, until it is underneath an indentation point in the previous line.
114 An indentation point is the end of a sequence of whitespace or the end of
115 the line. If point is farther right than any indentation point in the
116 previous line, the whitespace before point is deleted and the first
117 indentation point then applicable is used. If no indentation point is
118 applicable even then, @code{tab-to-tab-stop} is run (see next section).
120 @code{indent-relative} is the definition of @key{TAB} in Indented Text
123 @node Tab Stops, Just Spaces, Indentation Commands, Indentation
127 @findex tab-to-tab-stop
128 For typing in tables, you can use Text mode's definition of @key{TAB},
129 @code{tab-to-tab-stop}. This command inserts indentation before point,
130 enough to reach the next tab stop column. Even if you are not in Text mode,
131 this function is associated with @kbd{M-i} anyway.
133 @findex edit-tab-stops
134 @findex edit-tab-stops-note-changes
135 @kindex C-c C-c (Edit Tab Stops)
136 @vindex tab-stop-list
137 You can arbitrarily set the tab stops used by @kbd{M-i}. They are
138 stored as a list of column-numbers in increasing order in the variable
139 @code{tab-stop-list}.
141 The convenient way to set the tab stops is using @kbd{M-x edit-tab-stops},
142 which creates and selects a buffer containing a description of the tab stop
143 settings. You can edit this buffer to specify different tab stops, and
144 then type @kbd{C-c C-c} to make those new tab stops take effect. In the
145 tab stop buffer, @kbd{C-c C-c} runs the function
146 @code{edit-tab-stops-note-changes} rather than the default
147 @code{save-buffer}. @code{edit-tab-stops} records which buffer was current
148 when you invoked it, and stores the tab stops in that buffer. Normally
149 all buffers share the same tab stops and changing them in one buffer
150 affects all. If you make @code{tab-stop-list} local in one
151 buffer @code{edit-tab-stops} in that buffer edits only the local
154 Below is the text representing ordinary tab stops every eight columns:
159 0123456789012345678901234567890123456789012345678
160 To install changes, type C-c C-c
163 The first line contains a colon at each tab stop. The remaining lines
164 help you see where the colons are and tell you what to do.
166 Note that the tab stops that control @code{tab-to-tab-stop} have nothing
167 to do with displaying tab characters in the buffer. @xref{Display Vars},
168 for more information on that.
170 @node Just Spaces,, Tab Stops, Indentation
171 @section Tabs vs. Spaces
173 @vindex indent-tabs-mode
174 Emacs normally uses both tabs and spaces to indent lines. If you prefer,
175 all indentation can be made from spaces only. To request this, set
176 @code{indent-tabs-mode} to @code{nil}. This is a per-buffer variable;
177 altering the variable affects only the current buffer, but there is a
178 default value which you can change as well. @xref{Locals}.
182 There are also commands to convert tabs to spaces or vice versa, always
183 preserving the columns of all non-blank text. @kbd{M-x tabify} scans the
184 region for sequences of spaces, and converts sequences of at least three
185 spaces to tabs if that is possible without changing indentation. @kbd{M-x
186 untabify} changes all tabs in the region to corresponding numbers of spaces.