The basic indentation command is <TAB>
indent-for-tab-command), which was documented in
Indentation. In programming language modes, <TAB> indents
the current line, based on the indentation and syntactic content of
the preceding lines; if the region is active, <TAB> indents each
line within the region, not just the current line.
The command <RET> (
newline), which was documented in
Inserting Text, does the same as C-j followed by
<TAB>: it inserts a new line, then adjusts the line's indentation.
When indenting a line that starts within a parenthetical grouping, Emacs usually places the start of the line under the preceding line within the group, or under the text after the parenthesis. If you manually give one of these lines a nonstandard indentation (e.g., for aesthetic purposes), the lines below will follow it.
The indentation commands for most programming language modes assume
that a open-parenthesis, open-brace or other opening delimiter at the
left margin is the start of a function. If the code you are editing
violates this assumption—even if the delimiters occur in strings or
comments—you must set
nil for indentation to work properly. See Left Margin Paren.