elisp: Region Indent

 
 31.17.3 Indenting an Entire Region
 ----------------------------------
 
 This section describes commands that indent all the lines in the region.
 They return unpredictable values.
 
  -- Command: indent-region start end &optional to-column
      This command indents each nonblank line starting between START
      (inclusive) and END (exclusive).  If TO-COLUMN is ‘nil’,
      ‘indent-region’ indents each nonblank line by calling the current
      mode’s indentation function, the value of ‘indent-line-function’.
 
      If TO-COLUMN is non-‘nil’, it should be an integer specifying the
      number of columns of indentation; then this function gives each
      line exactly that much indentation, by either adding or deleting
      whitespace.
 
      If there is a fill prefix, ‘indent-region’ indents each line by
      making it start with the fill prefix.
 
  -- Variable: indent-region-function
      The value of this variable is a function that can be used by
      ‘indent-region’ as a short cut.  It should take two arguments, the
      start and end of the region.  You should design the function so
      that it will produce the same results as indenting the lines of the
      region one by one, but presumably faster.
 
      If the value is ‘nil’, there is no short cut, and ‘indent-region’
      actually works line by line.
 
      A short-cut function is useful in modes such as C mode and Lisp
      mode, where the ‘indent-line-function’ must scan from the beginning
      of the function definition: applying it to each line would be
      quadratic in time.  The short cut can update the scan information
      as it moves through the lines indenting them; this takes linear
      time.  In a mode where indenting a line individually is fast, there
      is no need for a short cut.
 
      ‘indent-region’ with a non-‘nil’ argument TO-COLUMN has a different
      meaning and does not use this variable.
 
  -- Command: indent-rigidly start end count
      This function indents all lines starting between START (inclusive)
      and END (exclusive) sideways by COUNT columns.  This preserves the
      shape of the affected region, moving it as a rigid unit.
 
      This is useful not only for indenting regions of unindented text,
      but also for indenting regions of formatted code.  For example, if
      COUNT is 3, this command adds 3 columns of indentation to every
      line that begins in the specified region.
 
      If called interactively with no prefix argument, this command
      invokes a transient mode for adjusting indentation rigidly.  See
      (emacs)Indentation Commands.
 
  -- Command: indent-code-rigidly start end columns &optional
           nochange-regexp
      This is like ‘indent-rigidly’, except that it doesn’t alter lines
      that start within strings or comments.
 
      In addition, it doesn’t alter a line if NOCHANGE-REGEXP matches at
      the beginning of the line (if NOCHANGE-REGEXP is non-‘nil’).