diff --git a/core/autoload/files.el b/core/autoload/files.el index f7cd34741..0014280db 100644 --- a/core/autoload/files.el +++ b/core/autoload/files.el @@ -341,3 +341,15 @@ file if it exists, without confirmation." "Open the current file as root." (interactive) (find-alternate-file (doom--sudo-file buffer-file-name))) + +;;;###autoload +(defun doom/sudo-save-buffer () + "Save this file as root." + (interactive) + (let ((origin (current-buffer)) + (buffer (doom--sudo-file buffer-file-name))) + (unwind-protect + (with-current-buffer buffer + (save-buffer)) + (unless (eq origin buffer) + (kill-buffer buffer))))) diff --git a/modules/config/default/+evil-bindings.el b/modules/config/default/+evil-bindings.el index 1ccc59f81..0070605f3 100644 --- a/modules/config/default/+evil-bindings.el +++ b/modules/config/default/+evil-bindings.el @@ -340,6 +340,7 @@ :desc "Revert buffer" "r" #'revert-buffer :desc "Save buffer" "s" #'basic-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 :desc "Switch to scratch buffer" "X" #'doom/switch-to-scratch-buffer :desc "Bury buffer" "z" #'bury-buffer