idlwave: Continued Statement Indentation
4.1.2 Continued Statement Indentation
-------------------------------------
Continuation lines (following a line ending with ‘$’) can receive a
fixed indentation offset from the main level, but in several situations
IDLWAVE can use a special form of indentation which aligns continued
statements more naturally. Special indentation is calculated for
continued routine definition statements and calls, enclosing parentheses
(like function calls, structure/class definitions, explicit structures
or lists, etc.), and continued assignments. An attempt is made to line
up with the first non-whitespace character after the relevant opening
punctuation mark (‘,’,‘(’,‘{’,‘[’,‘=’). For lines without any
non-comment characters on the line with the opening punctuation, the
continued line(s) are aligned just past the punctuation. An example:
function foo, a, b, $
c, d
bar = sin( a + b + $
c + d)
end
The only drawback to this special continued statement indentation is
that it consumes more space, e.g., for long function names or left hand
sides of an assignment:
function thisfunctionnameisverylongsoitwillleavelittleroom, a, b, $
c, d
You can instruct IDLWAVE when to avoid using this special
continuation indentation by setting the variable
‘idlwave-max-extra-continuation-indent’, which specifies the maximum
additional indentation beyond the basic indent to be tolerated,
otherwise defaulting to a fixed-offset from the enclosing indent (the
size of which offset is set in ‘idlwave-continuation-indent’). As a
special case, continuations of routine calls without any arguments or
keywords will _not_ align the continued line, under the assumption that
you continued because you needed the space.
Also, since the indentation level can be somewhat dynamic in
continued statements with special continuation indentation, especially
if ‘idlwave-max-extra-continuation-indent’ is small, the key ‘C-u <TAB>’
will re-indent all lines in the current statement. Note that
‘idlwave-indent-to-open-paren’, if non-‘nil’, overrides the
‘idlwave-max-extra-continuation-indent’ limit, for parentheses only,
forcing them always to line up.
-- User Option: idlwave-continuation-indent (‘2’)
Extra indentation applied to normal continuation lines.
-- User Option: idlwave-max-extra-continuation-indent (‘20’)
The maximum additional indentation (over the basic
continuation-indent) that will be permitted for special continues.
To effectively disable special continuation indentation, set to
‘0’. To enable it constantly, set to a large number (like ‘100’).
Note that the indentation in a long continued statement never
decreases from line to line, outside of nested parentheses
statements.
-- User Option: idlwave-indent-to-open-paren (‘t’)
Non-‘nil’ means indent continuation lines to innermost open
parenthesis, regardless of whether the
‘idlwave-max-extra-continuation-indent’ limit is satisfied.