From: Michael Albinus Date: Tue, 14 Oct 2014 11:59:16 +0000 (+0200) Subject: * net/tramp-sh.el (tramp-open-connection-setup-interactive-shell): X-Git-Tag: emacs-25.0.90~2635^2~679^2~63 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=5fa75d8eba2d43408fd7831dcfd69c21e31c21f3;p=emacs.git * net/tramp-sh.el (tramp-open-connection-setup-interactive-shell): Reduce the amount of set environment variable commands. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 41c68d7fbee..055ec17160e 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2014-10-14 Jérémy Compostella + Michael Albinus + + * net/tramp-sh.el (tramp-open-connection-setup-interactive-shell): + Reduce the amount of set environment variable commands. + 2014-10-12 Fabián Ezequiel Gallina Fix import completion. (Bug#18582) diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index 65b64233e5c..ce5e2faff50 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el @@ -3955,10 +3955,8 @@ process to set up. VEC specifies the connection." (tramp-message vec 5 "Setting shell prompt") (tramp-send-command - vec (format "PS1=%s" (tramp-shell-quote-argument tramp-end-of-output)) t) - (tramp-send-command vec "PS2=''" t) - (tramp-send-command vec "PS3=''" t) - (tramp-send-command vec "PROMPT_COMMAND=''" t) + vec (format "PS1=%s PS2='' PS3='' PROMPT_COMMAND=''" + (tramp-shell-quote-argument tramp-end-of-output)) t) ;; Try to set up the coding system correctly. ;; CCC this can't be the right way to do it. Hm. @@ -4078,15 +4076,22 @@ process to set up. VEC specifies the connection." (let ((env (append (when (tramp-get-remote-locale vec) ; Discard `(nil)'. `(,(tramp-get-remote-locale vec))) (copy-sequence tramp-remote-process-environment))) - unset item) + unset vars item) (while env (setq item (tramp-compat-split-string (car env) "=")) (setcdr item (mapconcat 'identity (cdr item) "=")) (if (and (stringp (cdr item)) (not (string-equal (cdr item) ""))) - (tramp-send-command - vec (format "%s=%s; export %s" (car item) (cdr item) (car item)) t) + (push (format "%s %s" (car item) (cdr item)) vars) (push (car item) unset)) (setq env (cdr env))) + (when vars + (tramp-send-command + vec + (format "while read var val; do export $var=$val; done <<'%s'\n%s\n%s" + tramp-end-of-heredoc + (mapconcat 'identity vars "\n") + tramp-end-of-heredoc) + t)) (when unset (tramp-send-command vec (format "unset %s" (mapconcat 'identity unset " ")) t))))