;;; -*- lexical-binding: t -*- ;; ;; this file: ;; https://dataswamp.org/~incal/emacs-init/sudo-user-path.el (require 'dired) (defun sudo-path-no-user (path) (format "/sudo::%s" path) ) ;; (sudo-path-no-user (file-truename (buffer-file-name))) (defun sudo-path (user path) (format "/sudo:%s@%s:%s" user (system-name) path) ) ;; (sudo-path user-login-name (file-truename (buffer-file-name))) (defun sudo-user-path (path) (sudo-path user-login-name path) ) ;; (sudo-user-path (file-truename (buffer-file-name))) (defun sudo-root-path (path) (sudo-path "root" path) ) ;; (sudo-root-path (file-truename (buffer-file-name))) (defun su-edit () "Edit the current buffer file as superuser." (interactive) (let*((window-start (window-start)) (point (point)) (mark (when mark-active (mark) )) (path (or dired-directory (file-truename (buffer-file-name)) )) (sudo-path (sudo-path-no-user path)) ) (find-alternate-file sudo-path) (when mark (set-mark mark) ) (goto-char point) (when dired-directory (dired-previous-line 1) ) (set-window-start nil window-start) )) ; the selected WINDOW (provide 'sudo-user-path)