diff options
author | Michael Albinus <michael.albinus@gmx.de> | 2011-03-14 10:53:13 +0100 |
---|---|---|
committer | Michael Albinus <michael.albinus@gmx.de> | 2011-03-14 10:53:13 +0100 |
commit | 77c992bc5065ade7f460fa6f966f6b3e6aaa97fa (patch) | |
tree | a602471112c3c68c3f456287a0beb620cf56d226 | |
parent | cffc6f3bd9b5dbb9825502928bd9dd58ddbac02e (diff) | |
download | emacs-77c992bc5065ade7f460fa6f966f6b3e6aaa97fa.tar.gz |
* shell.el (shell): When called interactively, offer to change the
shell file name on remote hosts.
-rw-r--r-- | lisp/ChangeLog | 5 | ||||
-rw-r--r-- | lisp/shell.el | 15 |
2 files changed, 20 insertions, 0 deletions
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 <michael.albinus@gmx.de> + + * shell.el (shell): When called interactively, offer to change the + shell file name on remote hosts. + 2011-03-13 Teodor Zlatanov <tzz@lifelogs.com> * 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) |