aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Albinus2009-11-29 20:10:29 +0000
committerMichael Albinus2009-11-29 20:10:29 +0000
commite7b538cd65e8bb299c6915231a8f5752ee1f15e1 (patch)
tree800ab7df14c2d050c24d52d7ea26c3f9aea82d0b
parente2a421af398d805b37e957ac2166929d65fa8c4b (diff)
downloademacs-e7b538cd65e8bb299c6915231a8f5752ee1f15e1.tar.gz
emacs-e7b538cd65e8bb299c6915231a8f5752ee1f15e1.zip
* 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'.
-rw-r--r--lisp/eshell/em-unix.el22
1 files changed, 13 insertions, 9 deletions
diff --git a/lisp/eshell/em-unix.el b/lisp/eshell/em-unix.el
index ceba51ea830..dfd72f6b2ac 100644
--- a/lisp/eshell/em-unix.el
+++ b/lisp/eshell/em-unix.el
@@ -955,7 +955,9 @@ Show wall-clock time elapsed during execution of COMMAND.")
955 (eshell-stringify-list 955 (eshell-stringify-list
956 (eshell-flatten-list (cdr time-args)))))))) 956 (eshell-flatten-list (cdr time-args))))))))
957 957
958(defalias 'eshell/whoami 'user-login-name) 958(defun eshell/whoami (&rest args)
959 "Make \"whoami\" Tramp aware."
960 (or (file-remote-p default-directory 'user) (user-login-name)))
959 961
960(defvar eshell-diff-window-config nil) 962(defvar eshell-diff-window-config nil)
961 963
@@ -1046,8 +1048,8 @@ Show wall-clock time elapsed during execution of COMMAND.")
1046 1048
1047(defun eshell/su (&rest args) 1049(defun eshell/su (&rest args)
1048 "Alias \"su\" to call Tramp." 1050 "Alias \"su\" to call Tramp."
1049 (let ((-login (member "-" args)) ;; not handled by `eshell-eval-using-options' 1051 (setq args (eshell-stringify-list (eshell-flatten-list args)))
1050 login) 1052 (let (login)
1051 (eshell-eval-using-options 1053 (eshell-eval-using-options
1052 "sudo" args 1054 "sudo" args
1053 '((?h "help" nil nil "show this usage screen") 1055 '((?h "help" nil nil "show this usage screen")
@@ -1061,8 +1063,9 @@ Become another USER during a login session.")
1061 "localhost")) 1063 "localhost"))
1062 (dir (or (file-remote-p default-directory 'localname) 1064 (dir (or (file-remote-p default-directory 'localname)
1063 default-directory))) 1065 default-directory)))
1064 (if (or login -login) (setq dir "~/")) 1066 (eshell-for arg args
1065 (if (stringp (car args)) (setq user (car args))) 1067 (if (string-equal arg "-") (setq login t) (setq user arg)))
1068 (if login (setq dir "~/"))
1066 (if (and (file-remote-p default-directory) 1069 (if (and (file-remote-p default-directory)
1067 (not (string-equal 1070 (not (string-equal
1068 user (file-remote-p default-directory 'user)))) 1071 user (file-remote-p default-directory 'user))))
@@ -1070,12 +1073,13 @@ Become another USER during a login session.")
1070 'tramp-default-proxies-alist 1073 'tramp-default-proxies-alist
1071 (list host user (file-remote-p default-directory)))) 1074 (list host user (file-remote-p default-directory))))
1072 (eshell-parse-command 1075 (eshell-parse-command
1073 "eshell/cd" (list (format "/su:%s@%s:%s" user host dir)))))))) 1076 "cd" (list (format "/su:%s@%s:%s" user host dir))))))))
1074 1077
1075(put 'eshell/su 'eshell-no-numeric-conversions t) 1078(put 'eshell/su 'eshell-no-numeric-conversions t)
1076 1079
1077(defun eshell/sudo (&rest args) 1080(defun eshell/sudo (&rest args)
1078 "Alias \"sudo\" to call Tramp." 1081 "Alias \"sudo\" to call Tramp."
1082 (setq args (eshell-stringify-list (eshell-flatten-list args)))
1079 (let (user) 1083 (let (user)
1080 (eshell-eval-using-options 1084 (eshell-eval-using-options
1081 "sudo" args 1085 "sudo" args
@@ -1089,15 +1093,15 @@ Execute a COMMAND as the superuser or another USER.")
1089 (host (or (file-remote-p default-directory 'host) 1093 (host (or (file-remote-p default-directory 'host)
1090 "localhost")) 1094 "localhost"))
1091 (dir (or (file-remote-p default-directory 'localname) 1095 (dir (or (file-remote-p default-directory 'localname)
1092 default-directory)) 1096 default-directory)))
1093 (default-directory (format "/sudo:%s@%s:%s" user host dir)))
1094 (if (and (file-remote-p default-directory) 1097 (if (and (file-remote-p default-directory)
1095 (not (string-equal 1098 (not (string-equal
1096 user (file-remote-p default-directory 'user)))) 1099 user (file-remote-p default-directory 'user))))
1097 (add-to-list 1100 (add-to-list
1098 'tramp-default-proxies-alist 1101 'tramp-default-proxies-alist
1099 (list host user (file-remote-p default-directory)))) 1102 (list host user (file-remote-p default-directory))))
1100 (eshell-named-command (car args) (cdr args))))))) 1103 (let ((default-directory (format "/sudo:%s@%s:%s" user host dir)))
1104 (eshell-named-command (car args) (cdr args))))))))
1101 1105
1102(put 'eshell/sudo 'eshell-no-numeric-conversions t) 1106(put 'eshell/sudo 'eshell-no-numeric-conversions t)
1103 1107