From 77c992bc5065ade7f460fa6f966f6b3e6aaa97fa Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Mon, 14 Mar 2011 10:53:13 +0100 Subject: [PATCH] * shell.el (shell): When called interactively, offer to change the shell file name on remote hosts. --- lisp/ChangeLog | 5 +++++ lisp/shell.el | 15 +++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c74e7cbdb2d..b36be6f3a09 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2011-03-14 Michael Albinus + + * shell.el (shell): When called interactively, offer to change the + shell file name on remote hosts. + 2011-03-13 Teodor Zlatanov * net/ldap.el (ldap-search-internal): Add `auth-source-search' diff --git a/lisp/shell.el b/lisp/shell.el index bceea990baf..dde81c6cb95 100644 --- a/lisp/shell.el +++ b/lisp/shell.el @@ -583,6 +583,21 @@ Otherwise, one argument `-i' is passed to the shell. (get-buffer-create (or buffer "*shell*")) ;; If the current buffer is a dead shell buffer, use it. (current-buffer))) + + ;; On remote hosts, the local `shell-file-name' might be useless. + (if (and (interactive-p) + (file-remote-p default-directory) + (null explicit-shell-file-name) + (null (getenv "ESHELL"))) + (with-current-buffer buffer + (set (make-local-variable 'explicit-shell-file-name) + (file-remote-p + (expand-file-name + (read-file-name + "Remote shell path: " default-directory shell-file-name + t shell-file-name)) + 'localname)))) + ;; Pop to buffer, so that the buffer's window will be correctly set ;; when we call comint (so that comint sets the COLUMNS env var properly). (pop-to-buffer buffer) -- 2.11.4.GIT