]> code.delx.au - gnu-emacs/commitdiff
* eshell/em-ls.el (eshell/ls): Use `apply'.
authorMichael Albinus <michael.albinus@gmx.de>
Mon, 16 Jul 2012 11:42:01 +0000 (13:42 +0200)
committerMichael Albinus <michael.albinus@gmx.de>
Mon, 16 Jul 2012 11:42:01 +0000 (13:42 +0200)
* eshell/em-unix.el (eshell/su, eshell/sudo): Apply Tramp's ad-hoc
multi-hops, instead of Tramp internals.

lisp/ChangeLog
lisp/eshell/em-ls.el
lisp/eshell/em-unix.el

index 929c810ed71143f4c5515651c5ac89234b071cac..90ab984d94d6af3125694db046100b3ade7ee49d 100644 (file)
@@ -1,5 +1,10 @@
 2012-07-16  Michael Albinus  <michael.albinus@gmx.de>
 
+       * eshell/em-ls.el (eshell/ls): Use `apply'.
+
+       * eshell/em-unix.el (eshell/su, eshell/sudo): Apply Tramp's ad-hoc
+       multi-hops, instead of Tramp internals.
+
        * vc/ediff.el (ediff-directories): Add trailing space to prompts.
 
        * vc/ediff-diff.el (ediff-same-file-contents): Handle the case,
index 142a5f964ab14ec738c61864a71e44d370f20b62..2dd92ba35300c6df3ca1a0142b8563f5449504c8 100644 (file)
@@ -312,7 +312,7 @@ instead."
   (let ((insert-func 'eshell-buffered-print)
        (error-func 'eshell-error)
        (flush-func 'eshell-flush))
-    (eshell-do-ls args)))
+    (apply 'eshell-do-ls args)))
 
 (put 'eshell/ls 'eshell-no-numeric-conversions t)
 
index ddba5a6520a4cfcf9c8df616ad9025fb9ae36050..35f7a0a9e3d08e3af15f051f61678cf05742fac0 100644 (file)
@@ -1037,12 +1037,8 @@ Show wall-clock time elapsed during execution of COMMAND.")
 
 (put 'eshell/occur 'eshell-no-numeric-conversions t)
 
-;; Pacify the byte-compiler.
-(defvar tramp-default-proxies-alist)
-
 (defun eshell/su (&rest args)
   "Alias \"su\" to call Tramp."
-  (require 'tramp)
   (setq args (eshell-stringify-list (eshell-flatten-list args)))
   (let ((orig-args (copy-tree args)))
     (eshell-eval-using-options
@@ -1057,29 +1053,29 @@ Become another USER during a login session.")
                  (host (or (file-remote-p default-directory 'host)
                            "localhost"))
                  (dir (or (file-remote-p default-directory 'localname)
-                          (expand-file-name default-directory))))
+                          (expand-file-name default-directory)))
+                 (prefix (file-remote-p default-directory)))
              (dolist (arg args)
                (if (string-equal arg "-") (setq login t) (setq user arg)))
              ;; `eshell-eval-using-options' does not handle "-".
              (if (member "-" orig-args) (setq login t))
              (if login (setq dir "~/"))
-             (if (and (file-remote-p default-directory)
+             (if (and prefix
                       (or
                        (not (string-equal
                              "su" (file-remote-p default-directory 'method)))
                        (not (string-equal
                              user (file-remote-p default-directory 'user)))))
-                 (add-to-list
-                  'tramp-default-proxies-alist
-                  (list host user (file-remote-p default-directory))))
-             (eshell-parse-command
-              "cd" (list (format "/su:%s@%s:%s" user host dir))))))))
+                 (eshell-parse-command
+                  "cd" (list (format "%s|su:%s@%s:%s"
+                                     (substring prefix 0 -1) user host dir)))
+               (eshell-parse-command
+                "cd" (list (format "/su:%s@%s:%s" user host dir)))))))))
 
 (put 'eshell/su 'eshell-no-numeric-conversions t)
 
 (defun eshell/sudo (&rest args)
   "Alias \"sudo\" to call Tramp."
-  (require 'tramp)
   (setq args (eshell-stringify-list (eshell-flatten-list args)))
   (let ((orig-args (copy-tree args)))
     (eshell-eval-using-options
@@ -1094,21 +1090,26 @@ Execute a COMMAND as the superuser or another USER.")
                  (host (or (file-remote-p default-directory 'host)
                            "localhost"))
                  (dir (or (file-remote-p default-directory 'localname)
-                          (expand-file-name default-directory))))
+                          (expand-file-name default-directory)))
+                 (prefix (file-remote-p default-directory)))
              ;; `eshell-eval-using-options' reads options of COMMAND.
              (while (and (stringp (car orig-args))
                          (member (car orig-args) '("-u" "--user")))
                (setq orig-args (cddr orig-args)))
-             (if (and (file-remote-p default-directory)
-                      (or
-                       (not (string-equal
-                             "sudo" (file-remote-p default-directory 'method)))
-                       (not (string-equal
-                             user (file-remote-p default-directory 'user)))))
-                 (add-to-list
-                  'tramp-default-proxies-alist
-                  (list host user (file-remote-p default-directory))))
-             (let ((default-directory (format "/sudo:%s@%s:%s" user host dir)))
+             (let ((default-directory
+                     (if (and prefix
+                              (or
+                               (not
+                                (string-equal
+                                 "sudo"
+                                 (file-remote-p default-directory 'method)))
+                               (not
+                                (string-equal
+                                 user
+                                 (file-remote-p default-directory 'user)))))
+                         (format "%s|sudo:%s@%s:%s"
+                                 (substring prefix 0 -1) user host dir)
+                       (format "/sudo:%s@%s:%s" user host dir))))
                (eshell-named-command (car orig-args) (cdr orig-args))))))))
 
 (put 'eshell/sudo 'eshell-no-numeric-conversions t)