         (shm/init)))
      ((eq 'Lambda (shm-node-cons parent))
       (newline)
-      (indent-to (+ shm-node-indent-spaces
+      (indent-to (+ (shm-indent-spaces)
                     (shm-node-start-column parent))))
      ;; Guards | foo = …
      ((string= "GuardedRhs" (shm-node-type-name current))

          (string= "Rhs" (shm-node-type-name current))
          (string= "GuardedAlt" (shm-node-type-name parent)))
      (newline)
      (indent-to (+ shm-node-indent-spaces
                    (shm-node-start-column (cdr (shm-node-parent parent-pair))))))
     ;; When in a field update.
     ((string= "FieldUpdate" (shm-node-type-name parent))
      (newline)
      (indent-to (+ (shm-node-start-column parent)
                    shm-node-indent-spaces)))
     ;; When in an alt list
     ((string= "GuardedAlts" (shm-node-type-name current))
      (newline)
      (indent-to (+ (shm-node-start-column parent)
                    shm-node-indent-spaces)))
     ;; When in a case alt.
     ((string= "GuardedAlts" (shm-node-type-name parent))
      (newline)
      (let ((alt (cdr (shm-node-parent parent-pair))))
        (indent-to (+ (shm-node-start-column alt)
                      shm-node-indent-spaces))))
     ;; Infix operators
     ((eq 'InfixApp (shm-node-cons parent))
      (newline)

  (when structured-haskell-mode
    (shm/reparse)))

(defun shm-indent-spaces ()
  "Get the number of spaces to indent."
  (if (boundp 'haskell-indent-spaces)
      haskell-indent-spaces
    shm-indent-spaces))


;; Faces
