summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Sainty <psainty@orcon.net.nz>2018-05-04 01:29:42 +1200
committerPhil Sainty <psainty@orcon.net.nz>2018-05-09 08:10:15 +1200
commit2f44323b707723e007d0a8d17c80623bb74bbafe (patch)
tree09e4646da0c77d4febcb6f90c17ddaea15fbca59
parent1d9e66aea17787e03954f32c6cd7561c881bb444 (diff)
downloademacs-fix/bug-31355.tar.gz
Fix remote-host directory tracking for shells in `term' buffersfix/bug-31355
* lisp/term.el (term-handle-ansi-terminal-messages): Use an explicit tramp method when constructing the tramp path for a non-local host, as this is now mandatory. "-" is a pseudo-method for the user's `tramp-default-method'. Specify the remote username explicitly in all cases, as `tramp-default-user' and `tramp-default-user-alist' could cause the previous logic to fail. Minor related improvements to the commentary. (Bug#31355)
-rw-r--r--lisp/term.el31
1 files changed, 16 insertions, 15 deletions
diff --git a/lisp/term.el b/lisp/term.el
index 75c27797838..419ddb2db5c 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -233,31 +233,33 @@
;;
;; Notice: for directory/host/user tracking you need to have something
;; like this in your shell startup script (this is for a POSIXish shell
-;; like Bash but should be quite easy to port to other shells)
+;; like Bash but should be quite easy to port to other shells).
+;;
+;; For troubleshooting in Bash, you can check the definition of the
+;; custom functions with the "type" command. e.g. "type cd". If you
+;; do not see the expected definition from the config below, then the
+;; directory tracking will not work.
;;
;; ----------------------------------------
;;
-;; # Set HOSTNAME if not already set.
+;; # Set HOSTNAME if not already set.
;; : ${HOSTNAME=$(uname -n)}
;;
-;; # su does not change this but I'd like it to
-;;
+;; # su does not change this but I'd like it to
;; USER=$(whoami)
;;
-;; # ...
+;; # ...
;;
;; case $TERM in
;; eterm*)
;;
;; printf '%s\n' \
;; -------------------------------------------------------------- \
-;; "Hello $user" \
+;; "Hello $USER" \
;; "Today is $(date)" \
;; "We are on $HOSTNAME running $(uname) under Emacs term mode" \
;; --------------------------------------------------------------
;;
-;; export EDITOR=emacsclient
-;;
;; # The \033 stands for ESC.
;; # There is a space between "AnSiT?" and $whatever.
;;
@@ -269,10 +271,11 @@
;; printf '\033AnSiTh %s\n' "$HOSTNAME"
;; printf '\033AnSiTu %s\n' "$USER"
;;
-;; eval $(dircolors $HOME/.emacs_dircolors)
+;; # Use custom dircolors in term buffers.
+;; # eval $(dircolors $HOME/.emacs_dircolors)
;; esac
;;
-;; # ...
+;; # ...
;;
;;
@@ -2750,12 +2753,10 @@ See `term-prompt-regexp'."
(setq default-directory
(file-name-as-directory
(if (and (string= term-ansi-at-host (system-name))
- (string= term-ansi-at-user (user-real-login-name)))
+ (string= term-ansi-at-user (user-real-login-name)))
(expand-file-name term-ansi-at-dir)
- (if (string= term-ansi-at-user (user-real-login-name))
- (concat "/" term-ansi-at-host ":" term-ansi-at-dir)
- (concat "/" term-ansi-at-user "@" term-ansi-at-host ":"
- term-ansi-at-dir)))))
+ (concat "/-:" term-ansi-at-user "@" term-ansi-at-host ":"
+ term-ansi-at-dir))))
;; I'm not sure this is necessary,
;; but it's best to be on the safe side.