From 7a810d53a0d27467e7ae69f0c9453fe065963c79 Mon Sep 17 00:00:00 2001 From: Ralf Beckmann Date: Sun, 3 Nov 2019 14:25:10 +0100 Subject: [PATCH] Consider current buffer's file when sudo-editing If doom/sudo-find-file is invoked with a file that is equal to the current buffer's file, kill that buffer since it is probably not needed anymore. --- core/autoload/files.el | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/core/autoload/files.el b/core/autoload/files.el index 9555efe89..9a9b21bfc 100644 --- a/core/autoload/files.el +++ b/core/autoload/files.el @@ -317,16 +317,19 @@ file if it exists, without confirmation." (defun doom/sudo-find-file (file) "Open FILE as root." (interactive "FOpen file as root: ") - (when (file-writable-p file) - (user-error "File is user writeable, aborting sudo")) (let* ((host (or (file-remote-p file 'host) "localhost")) - (user-host (if-let (( user (file-remote-p file 'user))) - (concat user "@" host) - host)) - (hop1 (when (file-remote-p file) (concat "/" (file-remote-p file 'method) ":" user-host))) - (sep (if hop1 "|" "/")) - (hop2 (concat "sudo:root@" host ":" (or (file-remote-p file 'localname) file)))) - (find-file (concat hop1 sep hop2)))) + (f (concat "/" (when (file-remote-p file) + (concat (file-remote-p file 'method) ":" + (if-let (user (file-remote-p file 'user)) + (concat user "@" host) + host) + "|")) + "sudo:root@" host + ":" (or (file-remote-p file 'localname) + file)))) + (if (and buffer-file-name (equal file (file-truename buffer-file-name))) + (find-alternate-file f) + (find-file f)))) ;;;###autoload (defun doom/sudo-this-file ()