Yeah, I haven't tried automating tramp much before so I'm not super familiar with what best practice is here. I'm on 29.1.
On Sun, Sep 10, 2023, 9:13 AM Michael Albinus <michael.albi...@gmx.de> wrote: > Joseph Garvin <k04j...@gmail.com> writes: > > Hi Joseph, > > > I originally posted this on the emacs stack exchange > > ( > https://emacs.stackexchange.com/questions/78768/reopen-with-sudo-command-that-works-through-tramp > ) > > but they suggested I try here. > > > > I have tried to define this command: > > > > ``` > > (defun etc-reopen-with-sudo () > > (interactive) > > (let* ((vec (tramp-dissect-file-name (buffer-file-name > > (current-buffer)))) > > (method (tramp-file-name-method vec)) > > (user (tramp-file-name-user vec)) > > (host (tramp-file-name-host vec)) > > (localname (tramp-file-name-localname vec))) > > (message "localname=%s" localname) > > (find-alternate-file > > (if (tramp-tramp-file-p (buffer-file-name (current-buffer))) > > (concat (format "/%s:%s@%s|sudo::%s" method user host > > localname)) > > (concat "/sudo:root@localhost:" buffer-file-name))))) > > ``` > > > > It worked once... and now ever since mysteriously hangs whenever I try > > to use it to open a file with sudo on a remote host with ssh. The idea > > for what file string to use for this comes from > > > https://stackoverflow.com/questions/2177687/open-file-via-ssh-and-sudo-with-emacs > > which suggests `/ssh:you@remotehost|sudo:remotehost:/path/to/file` > > should work. I'm able to visit files on the host just fine without > > sudo. Any ideas what I'm doing wrong here? > > Well, your function has some flaws. For example, it doesn't handle the > case there's no user in the buffer-file-name, like in > "/ssh:remotehost:/path/to/file". Furthermore, you use the "sudo::" > construct in the second hop, which works reliably since Tramp 2.4 (Emacs > 27.1) only. Which versions do you use? > > Best regards, Michael. >