anchor.diff:    (when *indent-line-function*
       (funcall *indent-line-function* p indent)))
   
  +(defun delimiter-line-p (p)
  +  (multiple-value-bind (start)
  +      (ppcre:scan "[^\\\\]?;\\s*(?:/\\*.*?\\*/|//.*?)?\\s*$" (line-string p))
  +    (when start
  +      (with-point ((p p))
  +        (line-offset p 0 (1+ start))
  +        (not (in-string-or-comment-p p))))))
  +
   (defun unbalanced-p (state)
     (if (member #\( (pps-state-paren-stack state)) t nil))
   
  
positive.code:     (when (cond-op-line-p p tmp)
        (line-start tmp)
        (when (and (not (unbalanced-p (parse-partial-sexp tmp p)))
                   (not (and (ppcre:scan "[^\\\\]?;\\s*$" (line-string p))
                             (not (in-string-or-comment-p (line-end p))))))
          (loop
            (unless (line-offset p 1) (return-from indent-cond-op nil))
            (c-indent-line p (+ indent tab-width))
            (when (and (ppcre:scan "[^\\\\]?;\\s*$" (line-string p))
                       (not (in-string-or-comment-p (line-end p))))
              (return))))))
    t)
  
  
negative.code:           (when (looking-at (line-start p) "\\s*\\}")
              (return-from c-indent-line indent))))
        (when (and word (ppcre:scan "^(?:do|else|for|if|switch|while)$" word)
                   (not (and (not unbalanced-flag) (delimiter-line-p p))))
          (unless (line-offset p 1) (return-from c-indent-line nil))
          (c-indent-line p (+ indent tab-width))
          (return-from c-indent-line indent))
  