(require 'tramp) (require 'message) (require 'dired-my) (defun current-sudo-prefix () (format "/sudo:%s@%s:" tramp-current-user (message-make-domain)) ) (defun kill-path (&optional name) (interactive) (if name (kill-new (buffer-name)) (if (eq major-mode 'dired-mode) (dired-kill-path) (let*((path (abbreviate-file-name buffer-file-name)) (path-no-sudo (replace-regexp-in-string (current-sudo-prefix) "" path))) (if path-no-sudo (kill-new path-no-sudo) (prog1 nil (message " Can't kill path! (Why?)") )))))) (defun kill-path-other-window (&optional name) (interactive) (save-window-excursion (other-window 1) (if name (kill-path t) ; NAME (when (eq major-mode 'dired-mode) (dired-kill-dir-path)) (kill-path) ))) (defun yank-path () (interactive) (kill-path) (yank) ) (defun yank-other-path () (interactive) (kill-path-other-window) (yank) ) (defun yank-name () (interactive) (kill-path t) ; NAME (yank) ) (defun yank-other-name () (interactive) (kill-path-other-window t) ; NAME (yank) )