   (or (and (bobp) 0)
       (factor--indent-definition)
       (factor--indent-in-brackets)
+      (factor--indent-setter-line)
       (factor--indent-continuation)
       0))
 

    (beginning-of-line)
    (when (factor--at-begin-of-def) 0)))

(defun factor--indent-continuation ()
  (save-excursion
    (forward-line -1)
    (beginning-of-line)
    (if (bobp) 0
      (if (looking-at "^[ \t]*$")
          (factor--indent-continuation)
        (if (factor--at-end-of-def)
            (- (current-indentation) factor-indent-width)
          (if (factor--at-begin-of-def)
              (+ (current-indentation) factor-indent-width)

(defsubst factor--at-begin-of-def ()
  (looking-at "\\([^ ]\\|^\\)+:"))

(defsubst factor--looking-at-emptiness ()
  (looking-at "^[ \t]*$"))

(defun factor--at-end-of-def ()
  (or (looking-at ".*;[ \t]*$")
      (looking-at factor--regex-single-liner)))

(defun factor--at-setter-line ()
  (save-excursion
    (beginning-of-line)
    (if (not (factor--looking-at-emptiness))
        (re-search-forward factor--regex-setter (line-end-position) t)
      (forward-line -1)
      (or (factor--at-constructor-line)
          (factor--at-setter-line)))))

(defun factor--at-constructor-line ()
  (save-excursion
    (beginning-of-line)
    (re-search-forward factor--regex-constructor (line-end-position) t)))

(defun factor--indent-in-brackets ()
  (save-excursion
