ccmode: Hanging Semicolons and Commas

 
 8.3 Hanging Semicolons and Commas
 =================================
 
  -- User Option: c-hanging-semi&comma-criteria
      This style variable takes a list of functions; these get called
      when you type a semicolon or comma.  The functions are called in
      order without arguments.  When these functions are entered, point
      is just after the newly inserted ‘;’ or ‘,’ and they must preserve
      point (e.g., by using ‘save-excursion’).  During the call, the
      variable ‘c-syntactic-context’ is bound to the syntactic context of
      the current line(1) SeeCustom Braces.  These functions don’t
      insert newlines themselves, rather they direct CC Mode whether or
      not to do so.  They should return one of the following values:
 
      ‘t’
           A newline is to be inserted after the ‘;’ or ‘,’, and no more
           functions from the list are to be called.
      ‘stop’
           No more functions from the list are to be called, and no
           newline is to be inserted.
      ‘nil’
           No determination has been made, and the next function in the
           list is to be called.
 
      Note that auto-newlines are never inserted _before_ a semicolon or
      comma.  If every function in the list is called without a
      determination being made, then no newline is added.
 
      In AWK mode, this variable is set by default to ‘nil’.  In the
      other modes, the default value is a list containing a single
      function, ‘c-semi&comma-inside-parenlist’.  This inserts newlines
      after all semicolons, apart from those separating ‘for’-clause
      statements.
 
  -- Function: c-semi&comma-no-newlines-before-nonblanks
      This is an example of a criteria function, provided by CC Mode.  It
      prevents newlines from being inserted after semicolons when there
      is a non-blank following line.  Otherwise, it makes no
      determination.  To use, add this function to the front of the
      ‘c-hanging-semi&comma-criteria’ list.
 
           (defun c-semi&comma-no-newlines-before-nonblanks ()
             (save-excursion
               (if (and (= (c-last-command-char) ?\;)
           	     (zerop (forward-line 1))
           	     (bolp)      ; forward-line has funny behavior at eob.
           	     (not (looking-at "^[ \t]*$")))
           	'stop
                 nil)))
 
  -- Function: c-semi&comma-inside-parenlist
  -- Function: c-semi&comma-no-newlines-for-oneline-inliners
      The function ‘c-semi&comma-inside-parenlist’ is what prevents
      newlines from being inserted inside the parenthesis list of ‘for’
      statements.  In addition to
      ‘c-semi&comma-no-newlines-before-nonblanks’ described above, CC
      Mode also comes with the criteria function
      ‘c-semi&comma-no-newlines-for-oneline-inliners’, which suppresses
      newlines after semicolons inside one-line inline method definitions
      (e.g., in C++ or Java).
 
    ---------- Footnotes ----------
 
    (1) This was first introduced in CC Mode 5.31.