mirror of
https://github.com/doomemacs/doomemacs
synced 2025-08-15 13:23:42 -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 "Previous buffer" "p" #'previous-buffer
|
||||||
:desc "Revert buffer" "r" #'revert-buffer
|
:desc "Revert buffer" "r" #'revert-buffer
|
||||||
:desc "Rename buffer" "R" #'rename-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 all buffers" "S" #'evil-write-all
|
||||||
:desc "Save buffer as root" "u" #'doom/sudo-save-buffer
|
:desc "Save buffer as root" "u" #'doom/sudo-save-buffer
|
||||||
:desc "Pop up scratch buffer" "x" #'doom/open-scratch-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 "Browse private config" "P" #'doom/open-private-config
|
||||||
:desc "Recent files" "r" #'recentf-open-files
|
:desc "Recent files" "r" #'recentf-open-files
|
||||||
:desc "Rename/move file" "R" #'doom/move-this-file
|
: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 "Save file as..." "S" #'write-file
|
||||||
:desc "Sudo find file" "u" #'doom/sudo-find-file
|
:desc "Sudo find file" "u" #'doom/sudo-find-file
|
||||||
:desc "Sudo this file" "U" #'doom/sudo-this-file
|
:desc "Sudo this file" "U" #'doom/sudo-this-file
|
||||||
|
@@ -1,5 +1,10 @@
|
|||||||
;;; editor/format/autoload.el -*- lexical-binding: t; -*-
|
;;; 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 ()
|
(defun +format--current-indentation ()
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
@@ -95,4 +100,18 @@ may not always work. Keep your undo keybind handy!"
|
|||||||
#'+format/region
|
#'+format/region
|
||||||
#'+format/buffer)))
|
#'+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
|
;;; 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-only-errors nil)
|
||||||
(set-debug-variable! 'apheleia-log-debug-info t 2)
|
(set-debug-variable! 'apheleia-log-debug-info t 2)
|
||||||
|
|
||||||
(defadvice! +format--inhibit-reformat-on-prefix-arg-a (orig-fn &optional arg)
|
;; UX: Use prefix-arg on `save-buffer' or `basic-save-buffer' to inhibit
|
||||||
"Make it so \\[save-buffer] with prefix arg inhibits reformatting."
|
;; format-on-save behavior.
|
||||||
:around #'basic-save-buffer
|
(define-key apheleia-mode-map [remap basic-save-buffer] #'+format/save-buffer-no-reformat)
|
||||||
(let ((apheleia-inhibit (or apheleia-inhibit current-prefix-arg)))
|
(define-key apheleia-mode-map [remap save-buffer] #'+format/save-buffer)
|
||||||
(funcall orig-fn)))
|
|
||||||
|
|
||||||
;; HACK: Apheleia suppresses notifications that the current buffer has
|
;; HACK: Apheleia suppresses notifications that the current buffer has
|
||||||
;; changed, so plugins that listen for them need to be manually informed:
|
;; changed, so plugins that listen for them need to be manually informed:
|
||||||
|
Reference in New Issue
Block a user