Often there are cases when a simple offset setting on a syntactic symbol isn’t enough to get the desired indentation—for example, you might want to line up a closing parenthesis with the matching opening one rather than indenting relative to its “anchor point”. CC Mode provides this flexibility with line-up functions.
The way you associate a line-up function with a syntactic symbol is
described in c-offsets-alist. CC Mode comes with many
predefined line-up functions for common situations. If none of these
does what you want, you can write your own. See Custom Line-Up Functions.
Sometimes, it is easier to tweak the standard indentation by adding a
function to c-special-indent-hook
(see Other Special Indentations).
The line-up functions haven’t been adapted for AWK buffers or tested with them. Some of them might work serendipitously. There shouldn’t be any problems writing custom line-up functions for AWK mode.
The calling convention for line-up functions is described fully in
Custom Line-Up Functions. Roughly speaking, the return value is either an
offset itself (such as +
or [0]
), another line-up
function, or it’s nil
, meaning “this function is inappropriate
in this case - try a different one”. See c-offsets-alist.
The subsections below describe all the standard line-up functions, categorized by the sort of token the lining-up centers around. For each of these functions there is a “works with” list that indicates which syntactic symbols the function is intended to be used with.
• Brace/Paren Line-Up: | ||
• List Line-Up: | ||
• Operator Line-Up: | ||
• Comment Line-Up: | ||
• Misc Line-Up: |