diff options
| author | Michael Albinus | 2009-11-29 20:10:29 +0000 |
|---|---|---|
| committer | Michael Albinus | 2009-11-29 20:10:29 +0000 |
| commit | e7b538cd65e8bb299c6915231a8f5752ee1f15e1 (patch) | |
| tree | 800ab7df14c2d050c24d52d7ea26c3f9aea82d0b | |
| parent | e2a421af398d805b37e957ac2166929d65fa8c4b (diff) | |
| download | emacs-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.el | 22 |
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 | ||