indent.texi 8.0 KB

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