ada-mode: Automatic Smart Indentation

 
 9 Automatic Smart Indentation
 *****************************
 
 Ada mode comes with a full set of rules for automatic indentation.  You
 can also configure the indentation, via the following variables:
 
 ‘ada-broken-indent’ (default value: 2)
      Number of columns to indent the continuation of a broken line.
 
 ‘ada-indent’ (default value: 3)
      Number of columns for default indentation.
 
 ‘ada-indent-record-rel-type’ (default value: 3)
      Indentation for ‘record’ relative to ‘type’ or ‘use’.
 
 ‘ada-indent-return’ (default value: 0)
      Indentation for ‘return’ relative to ‘function’ (if
      ‘ada-indent-return’ is greater than 0), or the open parenthesis (if
      ‘ada-indent-return’ is negative or 0).  Note that in the second
      case, when there is no open parenthesis, the indentation is done
      relative to ‘function’ with the value of ‘ada-broken-indent’.
 
 ‘ada-label-indent’ (default value: -4)
      Number of columns to indent a label.
 
 ‘ada-stmt-end-indent’ (default value: 0)
      Number of columns to indent a statement ‘end’ keyword on a separate
      line.
 
 ‘ada-when-indent’ (default value: 3)
      Indentation for ‘when’ relative to ‘exception’ or ‘case’.
 
 ‘ada-indent-is-separate’ (default value: t)
      Non-‘nil’ means indent ‘is separate’ or ‘is abstract’ if on a
      single line.
 
 ‘ada-indent-to-open-paren’ (default value: t)
      Non-‘nil’ means indent according to the innermost open parenthesis.
 
 ‘ada-indent-after-return’ (default value: t)
      Non-‘nil’ means that the current line will also be re-indented
      before inserting a newline, when you press <RET>.
 
    Most of the time, the indentation will be automatic, i.e., when you
 press <RET>, the cursor will move to the correct column on the next
 line.
 
    You can also indent single lines, or the current region, with <TAB>.
 
    Another mode of indentation exists that helps you to set up your
 indentation scheme.  If you press ‘C-c <TAB>’, Ada mode will do the
 following:
 
    • Reindent the current line, as <TAB> would do.
    • Temporarily move the cursor to a reference line, i.e., the line
      that was used to calculate the current indentation.
    • Display in the message window the name of the variable that
      provided the offset for the indentation.
 
    The exact indentation of the current line is the same as the one for
 the reference line, plus an offset given by the variable.
 
 ‘<TAB>’
      Indent the current line or the current region.
 ‘C-M-\’
      Indent lines in the current region.
 ‘C-c <TAB>’
      Indent the current line and display the name of the variable used
      for indentation.