Last active
December 24, 2017 19:16
-
-
Save Superbil/e4c9bd46349e3e3603f9e3c9e7b43c4a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; Running on GNU Emacs 26.0.90 | |
Debugger entered--Lisp error: (wrong-type-argument tramp-file-name nil) | |
signal(wrong-type-argument (tramp-file-name nil)) | |
debugger-may-continue = t | |
inhibit-redisplay = nil | |
inhibit-debugger = t | |
inhibit-changing-match-data = nil | |
(or (progn (and (memq (car-safe nil) cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name nil))) | |
[no locals] | |
(progn (or (progn (and (memq (car-safe nil) cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name nil))) (nth 2 nil)) | |
[no locals] | |
(tramp-make-tramp-file-name "sudo" (progn (or (progn (and (memq (car-safe nil) cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name nil))) (nth 2 nil)) (progn (or (progn (and (memq (car-safe vec) cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name vec))) (nth 4 vec)) (progn (or (progn (and (memq (car-safe vec) cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name vec))) (nth 6 vec)) (format "ssh:%s@%s|" (progn (or (progn (and (memq (car-safe vec) cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name vec))) (nth 2 vec)) (progn (or (progn (and (memq (car-safe vec) cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name vec))) (nth 4 vec)))) | |
[no locals] | |
(let ((vec (tramp-dissect-file-name tempfile))) (tramp-make-tramp-file-name "sudo" (progn (or (progn (and (memq (car-safe nil) cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name nil))) (nth 2 nil)) (progn (or (progn (and (memq (car-safe vec) cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name vec))) (nth 4 vec)) (progn (or (progn (and (memq (car-safe vec) cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name vec))) (nth 6 vec)) (format "ssh:%s@%s|" (progn (or (progn (and (memq (car-safe vec) cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name vec))) (nth 2 vec)) (progn (or (progn (and (memq (car-safe vec) cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name vec))) (nth 4 vec))))) | |
vec = (tramp-file-name "ssh" "superbil" nil "pi" nil "/etc/." nil) | |
(if (file-remote-p tempfile) (let ((vec (tramp-dissect-file-name tempfile))) (tramp-make-tramp-file-name "sudo" (progn (or (progn (and (memq (car-safe nil) cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name nil))) (nth 2 nil)) (progn (or (progn (and (memq (car-safe vec) cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name vec))) (nth 4 vec)) (progn (or (progn (and (memq (car-safe vec) cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name vec))) (nth 6 vec)) (format "ssh:%s@%s|" (progn (or (progn (and (memq (car-safe vec) cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name vec))) (nth 2 vec)) (progn (or (progn (and (memq (car-safe vec) cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name vec))) (nth 4 vec))))) (concat "/sudo:root@localhost:" tempfile)) | |
[no locals] | |
prepare-tramp-sudo-string("/ssh:superbil@pi:/etc/.") | |
tempfile = "/ssh:superbil@pi:/etc/." | |
(find-alternate-file (prepare-tramp-sudo-string my-file-name)) | |
[no locals] | |
(progn (setq my-file-name (dired-get-file-for-visit)) (find-alternate-file (prepare-tramp-sudo-string my-file-name))) | |
[no locals] | |
(if (equal major-mode 'dired-mode) (progn (setq my-file-name (dired-get-file-for-visit)) (find-alternate-file (prepare-tramp-sudo-string my-file-name))) (setq my-file-name (buffer-file-name) position (point)) (find-alternate-file (prepare-tramp-sudo-string my-file-name)) (goto-char position)) | |
[no locals] | |
(let ((my-file-name) (position)) (if (equal major-mode 'dired-mode) (progn (setq my-file-name (dired-get-file-for-visit)) (find-alternate-file (prepare-tramp-sudo-string my-file-name))) (setq my-file-name (buffer-file-name) position (point)) (find-alternate-file (prepare-tramp-sudo-string my-file-name)) (goto-char position))) | |
my-file-name = "/ssh:superbil@pi:/etc/." | |
position = nil | |
sudo-edit-current-file() | |
[no locals] | |
funcall-interactively(sudo-edit-current-file) | |
call-interactively(sudo-edit-current-file nil nil) | |
command-execute(sudo-edit-current-file) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defun prepare-tramp-sudo-string (tempfile) | |
(if (file-remote-p tempfile) | |
(let ((vec (tramp-dissect-file-name tempfile))) | |
(tramp-make-tramp-file-name | |
"sudo" | |
(tramp-file-name-user nil) | |
(tramp-file-name-host vec) | |
(tramp-file-name-localname vec) | |
(format "ssh:%s@%s|" | |
(tramp-file-name-user vec) | |
(tramp-file-name-host vec)))) | |
(concat "/sudo:root@localhost:" tempfile))) | |
(defun sudo-edit-current-file () | |
(interactive) | |
(let ((my-file-name) ; fill this with the file to open | |
(position)) ; if the file is already open save position | |
(if (equal major-mode 'dired-mode) ; test if we are in dired-mode | |
(progn | |
(setq my-file-name (dired-get-file-for-visit)) | |
(find-alternate-file (prepare-tramp-sudo-string my-file-name))) | |
(setq my-file-name (buffer-file-name) ; hopefully anything else is an already opened file | |
position (point)) | |
(find-alternate-file (prepare-tramp-sudo-string my-file-name)) | |
(goto-char position)))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
好像這樣也行…