 (defun +format/buffer ()
   "Format the source code in the current buffer."
   (interactive)
-  (pcase (+format-buffer)
-    (`error (message "Failed to format buffer due to errors"))
-    (`noop (message "Buffer was already formatted"))
-    (_ (message "Formatted (%s)" (car (format-all-probe))))))
+  (+format|buffer))
 
 ;;;###autoload
 (defun +format/region (beg end)

  (add-hook 'before-save-hook #'+format|buffer nil t))

;;;###autoload
(defalias '+format|buffer #'+format-buffer)



See `+format/buffer' for the interactive version of this function, and
`+format|buffer' to use as a `before-save-hook' hook."
  (unless formatter
    (user-error "Don't know how to format '%s' code" major-mode))
  (let ((f-function (gethash formatter format-all-format-table))
        (executable (format-all-formatter-executable formatter)))
    (cl-destructuring-bind (output errput first-diff)
        (+format--with-copy-of-buffer f-function executable mode-result)
      (unwind-protect
          (cond ((null output) 'error)
                ((eq output t) 'noop)
                ((let ((tmpfile (make-temp-file "doom-format"))
                       (patchbuf (get-buffer-create " *doom format patch*"))
                       (coding-system-for-read 'utf-8)
                       (coding-system-for-write 'utf-8))
                   (unwind-protect
                       (progn
                         (with-current-buffer patchbuf (erase-buffer))
                         (with-temp-file tmpfile (erase-buffer) (insert output))
                         (if (zerop (call-process-region (point-min) (point-max) "diff" nil patchbuf nil "-n" "-" tmpfile))
                             'noop
                           (+format--apply-rcs-patch patchbuf)
                           (list output errput first-diff))))
                   (kill-buffer patchbuf)
                   (delete-file tmpfile))))
        (unless (= 0 (length errput))
          (message "Formatter error output:\n%s" errput))))))


;;
