mirror of
https://github.com/doomemacs/doomemacs
synced 2025-08-13 13:13:35 -05:00
fix(format): prefix arg inhibiting format-on-save (part 2)
Experimenting with a new approach to this issue, in an effort to avoid
advice on such low level commands ({basic-,}save-buffer). I don't like
that we're still stacking new behavior on top of their pre-existing
prefix arg behavior (manipulating backup-on-save functionality), but
maybe it's not useful enough to worry about?
Fix: #8420
Amend: f0c8290ae2
This commit is contained in:
@@ -417,7 +417,7 @@
|
||||
:desc "Previous buffer" "p" #'previous-buffer
|
||||
:desc "Revert buffer" "r" #'revert-buffer
|
||||
:desc "Rename buffer" "R" #'rename-buffer
|
||||
:desc "Save buffer" "s" #'basic-save-buffer
|
||||
:desc "Save buffer" "s" #'save-buffer
|
||||
:desc "Save all buffers" "S" #'evil-write-all
|
||||
:desc "Save buffer as root" "u" #'doom/sudo-save-buffer
|
||||
:desc "Pop up scratch buffer" "x" #'doom/open-scratch-buffer
|
||||
@@ -514,7 +514,7 @@
|
||||
:desc "Browse private config" "P" #'doom/open-private-config
|
||||
:desc "Recent files" "r" #'recentf-open-files
|
||||
:desc "Rename/move file" "R" #'doom/move-this-file
|
||||
:desc "Save file" "s" #'save-buffer
|
||||
:desc "Save file" "s" #'basic-save-buffer
|
||||
:desc "Save file as..." "S" #'write-file
|
||||
:desc "Sudo find file" "u" #'doom/sudo-find-file
|
||||
:desc "Sudo this file" "U" #'doom/sudo-this-file
|
||||
|
@@ -1,5 +1,10 @@
|
||||
;;; editor/format/autoload.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; HACK: `apheleia-mode' doesn't define a keymap. By defining one before the
|
||||
;; minor mode is loaded, `define-minor-mode' will automatically register it as
|
||||
;; apheleia-mode's keymap.
|
||||
;;;###autoload (defvar apheleia-mode-map (make-sparse-keymap))
|
||||
|
||||
(defun +format--current-indentation ()
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
@@ -95,4 +100,18 @@ may not always work. Keep your undo keybind handy!"
|
||||
#'+format/region
|
||||
#'+format/buffer)))
|
||||
|
||||
;;;###autoload
|
||||
(defun +format/save-buffer-no-reformat ()
|
||||
"`save-buffer', but don't trigger `apheleia's save-on-format behavior."
|
||||
(interactive)
|
||||
(let (apheleia-mode)
|
||||
(basic-save-buffer)))
|
||||
|
||||
;;;###autoload
|
||||
(defun +format/save-buffer (arg)
|
||||
"`save-buffer', but the prefix ARG also inhibits format-on-save behavior."
|
||||
(interactive "P")
|
||||
(let ((apheleia-mode (and apheleia-mode (memq arg '(nil 1)))))
|
||||
(call-interactively #'save-buffer)))
|
||||
|
||||
;;; format.el ends here
|
||||
|
@@ -45,11 +45,10 @@ This is controlled by `+format-on-save-disabled-modes'."
|
||||
(set-debug-variable! 'apheleia-log-only-errors nil)
|
||||
(set-debug-variable! 'apheleia-log-debug-info t 2)
|
||||
|
||||
(defadvice! +format--inhibit-reformat-on-prefix-arg-a (orig-fn &optional arg)
|
||||
"Make it so \\[save-buffer] with prefix arg inhibits reformatting."
|
||||
:around #'basic-save-buffer
|
||||
(let ((apheleia-inhibit (or apheleia-inhibit current-prefix-arg)))
|
||||
(funcall orig-fn)))
|
||||
;; UX: Use prefix-arg on `save-buffer' or `basic-save-buffer' to inhibit
|
||||
;; format-on-save behavior.
|
||||
(define-key apheleia-mode-map [remap basic-save-buffer] #'+format/save-buffer-no-reformat)
|
||||
(define-key apheleia-mode-map [remap save-buffer] #'+format/save-buffer)
|
||||
|
||||
;; HACK: Apheleia suppresses notifications that the current buffer has
|
||||
;; changed, so plugins that listen for them need to be manually informed:
|
||||
|
Reference in New Issue
Block a user