#+TITLE: Dev - Sudo #+AUTHOR: Juan Placencia * Package Define sudo dev package. #+BEGIN_SRC emacs-lisp (use-package emacs :after uno-dev :config (provide 'uno-dev-sudo)) #+END_SRC * Sudo File Support Borrowed from doom-emacs. #+BEGIN_SRC emacs-lisp (use-package emacs :after uno-dev-sudo :init (defun uno/dev/sudo/file-path (file) "Get FILE path for sudo access." (let ((host (or (file-remote-p file 'host) "localhost"))) (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)))) (defun uno/dev/sudo/find-file (file) "Open FILE as root." (interactive "FOpen file as root: ") (find-file (uno/dev/sudo/file-path file))) (defun uno/dev/sudo/open-this-file () "Open the current file as root." (interactive) (uno/dev/sudo/find-file (or buffer-file-name (when (or (derived-mode-p 'dired-mode) (derived-mode-p 'wdired-mode)) default-directory)))) (defun uno/dev/sudo/save-this-file () "Save this file as root." (interactive) (let ((file (uno/dev/sudo/file-path buffer-file-name))) (if-let (buffer (find-file-noselect file)) (let ((origin (current-buffer))) (copy-to-buffer buffer (point-min) (point-max)) (unwind-protect (with-current-buffer buffer (save-buffer)) (unless (eq origin buffer) (kill-buffer buffer)) (with-current-buffer origin (revert-buffer t t)))) (user-error "Unable to open %S" file))))) #+END_SRC