emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/lisp/eshell em-unix.el


From: Michael Albinus
Subject: [Emacs-diffs] emacs/lisp/eshell em-unix.el
Date: Sun, 29 Nov 2009 20:10:29 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Michael Albinus <albinus>       09/11/29 20:10:29

Modified files:
        lisp/eshell    : em-unix.el 

Log message:
        * eshell/em-unix (eshell/whoami): Make it a defun but a defalias.
        (eshell/su): Flatten args.  Apply better args parsing.  Use "cd".
        (eshell/sudo): Flatten args.  Let-bind `default-directory'.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/eshell/em-unix.el?cvsroot=emacs&r1=1.47&r2=1.48

Patches:
Index: em-unix.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/eshell/em-unix.el,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -b -r1.47 -r1.48
--- em-unix.el  27 Nov 2009 16:28:42 -0000      1.47
+++ em-unix.el  29 Nov 2009 20:10:29 -0000      1.48
@@ -955,7 +955,9 @@
                                  (eshell-stringify-list
                                   (eshell-flatten-list (cdr time-args))))))))
 
-(defalias 'eshell/whoami 'user-login-name)
+(defun eshell/whoami (&rest args)
+  "Make \"whoami\" Tramp aware."
+  (or (file-remote-p default-directory 'user) (user-login-name)))
 
 (defvar eshell-diff-window-config nil)
 
@@ -1046,8 +1048,8 @@
 
 (defun eshell/su (&rest args)
   "Alias \"su\" to call Tramp."
-  (let ((-login (member "-" args)) ;; not handled by 
`eshell-eval-using-options'
-       login)
+  (setq args (eshell-stringify-list (eshell-flatten-list args)))
+  (let (login)
     (eshell-eval-using-options
      "sudo" args
      '((?h "help" nil nil "show this usage screen")
@@ -1061,8 +1063,9 @@
                            "localhost"))
                  (dir (or (file-remote-p default-directory 'localname)
                           default-directory)))
-             (if (or login -login) (setq dir "~/"))
-             (if (stringp (car args)) (setq user (car args)))
+             (eshell-for arg args
+               (if (string-equal arg "-") (setq login t) (setq user arg)))
+             (if login (setq dir "~/"))
              (if (and (file-remote-p default-directory)
                       (not (string-equal
                             user (file-remote-p default-directory 'user))))
@@ -1070,12 +1073,13 @@
                   'tramp-default-proxies-alist
                   (list host user (file-remote-p default-directory))))
              (eshell-parse-command
-              "eshell/cd" (list (format "/su:address@hidden:%s" user host 
dir))))))))
+              "cd" (list (format "/su:address@hidden:%s" user host dir))))))))
 
 (put 'eshell/su 'eshell-no-numeric-conversions t)
 
 (defun eshell/sudo (&rest args)
   "Alias \"sudo\" to call Tramp."
+  (setq args (eshell-stringify-list (eshell-flatten-list args)))
   (let (user)
     (eshell-eval-using-options
      "sudo" args
@@ -1089,15 +1093,15 @@
                   (host (or (file-remote-p default-directory 'host)
                             "localhost"))
                   (dir (or (file-remote-p default-directory 'localname)
-                           default-directory))
-                  (default-directory (format "/sudo:address@hidden:%s" user 
host dir)))
+                           default-directory)))
              (if (and (file-remote-p default-directory)
                       (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-named-command (car args) (cdr args)))))))
+             (let ((default-directory (format "/sudo:address@hidden:%s" user 
host dir)))
+               (eshell-named-command (car args) (cdr args))))))))
 
 (put 'eshell/sudo 'eshell-no-numeric-conversions t)
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]