From: <ma...@ev...> - 2001-10-31 15:55:07
|
A while back, I patched Noah Friedman's ssh.el to use tramp. Since then, tramp's file name structure has changed. Also, I noticed that ssh.el couldn't handle user@host connections (it expected 'host -l user'). The attached patches address both these problems. Mark. -- Life is full of misery, pain and disappointment. Might as well enjoy it. *** /home/mah/ssh.el Wed Oct 31 09:44:45 2001 --- /home/mah/.elisp/ssh.el Wed Oct 31 09:24:34 2001 *************** *** 77,83 **** nil means don't do directory tracking. ! t means do so using an ftp remote file name. Any other value means do directory tracking using local file names. This works only if the remote machine and the local one --- 77,83 ---- nil means don't do directory tracking. ! t means do so using a tramp remote file name. Any other value means do directory tracking using local file names. This works only if the remote machine and the local one *************** *** 90,96 **** simply setting this variable, since the function does the necessary re-synching of directories." :type '(choice (const :tag "off" nil) ! (const :tag "ftp" t) (const :tag "local" local)) :group 'ssh) --- 90,96 ---- simply setting this variable, since the function does the necessary re-synching of directories." :type '(choice (const :tag "off" nil) ! (const :tag "tramp" t) (const :tag "local" local)) :group 'ssh) *************** *** 101,106 **** --- 101,111 ---- :type '(choice (const nil) string) :group 'ssh) + (defcustom ssh-tramp-tracking-mode "sm" + "*The tramp mode to use for tracking." + :type 'string + :group 'ssh) + (defcustom ssh-remote-user nil "*The username used on the remote host. This variable is buffer-local and defaults to your local user name. *************** *** 152,158 **** INPUT-ARGS. If the default value of `ssh-directory-tracking-mode' is t, then the ! default directory in that buffer is set to a remote (FTP) file name to access your home directory on the remote machine. Occasionally this causes an error, if you cannot access the home directory on that machine. This error is harmless as long as you don't try to use that default directory. --- 157,163 ---- INPUT-ARGS. If the default value of `ssh-directory-tracking-mode' is t, then the ! default directory in that buffer is set to a remote (tramp) file name to access your home directory on the remote machine. Occasionally this causes an error, if you cannot access the home directory on that machine. This error is harmless as long as you don't try to use that default directory. *************** *** 172,179 **** (let* ((process-connection-type ssh-process-connection-type) (args (ssh-parse-words input-args)) ! (host (car args)) (user (or (car (cdr (member "-l" args))) (user-login-name))) (buffer-name (if (string= user (user-login-name)) (format "*ssh-%s*" host) --- 177,186 ---- (let* ((process-connection-type ssh-process-connection-type) (args (ssh-parse-words input-args)) ! (host-part (ssh-parse-host (car args))) ! (host (car (cdr host-part))) (user (or (car (cdr (member "-l" args))) + (car host-part) (user-login-name))) (buffer-name (if (string= user (user-login-name)) (format "*ssh-%s*" host) *************** *** 231,237 **** ;; function, to avoid a gratuitous resync check; the default ;; should be the user's home directory, be it local or remote. (setq comint-file-name-prefix ! (concat "/" ssh-remote-user "@" ssh-host ":")) (cd-absolute comint-file-name-prefix)) ((null ssh-directory-tracking-mode)) (t --- 238,244 ---- ;; function, to avoid a gratuitous resync check; the default ;; should be the user's home directory, be it local or remote. (setq comint-file-name-prefix ! (concat "/[" ssh-tramp-tracking-mode "/" ssh-remote-user "@" ssh-host "]")) (cd-absolute comint-file-name-prefix)) ((null ssh-directory-tracking-mode)) (t *************** *** 258,264 **** If called with no prefix argument or a unspecified prefix argument (just ``\\[universal-argument]'' with no number) do remote directory tracking via ! ange-ftp. If called as a function, give it no argument. If called with a negative prefix argument, disable directory tracking entirely. --- 265,271 ---- If called with no prefix argument or a unspecified prefix argument (just ``\\[universal-argument]'' with no number) do remote directory tracking via ! tramp. If called as a function, give it no argument. If called with a negative prefix argument, disable directory tracking entirely. *************** *** 275,281 **** (setq ssh-directory-tracking-mode t) (setq shell-dirtrackp t) (setq comint-file-name-prefix ! (concat "/" ssh-remote-user "@" ssh-host ":"))) ((< prefix 0) (setq ssh-directory-tracking-mode nil) (setq shell-dirtrackp nil)) --- 282,288 ---- (setq ssh-directory-tracking-mode t) (setq shell-dirtrackp t) (setq comint-file-name-prefix ! (concat "/[" ssh-tramp-tracking-mode "/" ssh-remote-user "@" ssh-host "]"))) ((< prefix 0) (setq ssh-directory-tracking-mode nil) (setq shell-dirtrackp nil)) *************** *** 315,320 **** --- 322,333 ---- (setq posn (match-end 0))) (store-match-data (match-data)) (nreverse list))) + + (defun ssh-parse-host (host) + (let ((l (split-string host "@"))) + (if (nth 1 l) () + (setq l (list nil (car l)))) + l)) (defun ssh-carriage-filter (string) (let* ((point-marker (point-marker)) Diff finished at Wed Oct 31 09:45:08 |