emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] /srv/bzr/emacs/trunk r112148: Added eshell-tramp module


From: Aidan Gauland
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r112148: Added eshell-tramp module
Date: Wed, 27 Mar 2013 11:08:58 +1300
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 112148
committer: Aidan Gauland <address@hidden>
branch nick: trunk
timestamp: Wed 2013-03-27 11:08:58 +1300
message:
  Added eshell-tramp module
  
  * lisp/eshell/em-unix.el: Moved su and sudo to...
  * lisp/eshell/em-tramp.el: ...Eshell tramp module
  * doc/misc/eshell.texi: Updated manual to reflect changes.
  
  External su and sudo commands are now the default; the internal,
  TRAMP-using variants can still be used by enabling the eshell-tramp
  module.
added:
  lisp/eshell/em-tramp.el
modified:
  ChangeLog
  doc/misc/eshell.texi
  lisp/eshell/em-unix.el
=== modified file 'ChangeLog'
--- a/ChangeLog 2013-03-25 17:58:35 +0000
+++ b/ChangeLog 2013-03-26 22:08:58 +0000
@@ -1,3 +1,13 @@
+2013-03-27  Aidan Gauland  <address@hidden
+
+       * lisp/eshell/em-unix.el: Moved su and sudo to...
+       * lisp/eshell/em-tramp.el: ...Eshell tramp module
+       * doc/misc/eshell.texi: Updated manual to reflect changes.
+
+       External su and sudo commands are now the default; the internal,
+       TRAMP-using variants can still be used by enabling the eshell-tramp
+       module.
+
 2013-03-25  Jan Djärv  <address@hidden>
 
        * configure.ac (HAVE_XKB): Define if Xkb is present.

=== modified file 'doc/misc/eshell.texi'
--- a/doc/misc/eshell.texi      2013-02-22 17:13:05 +0000
+++ b/doc/misc/eshell.texi      2013-03-26 22:08:58 +0000
@@ -460,8 +460,9 @@
 @cmindex su
 @itemx sudo
 @cmindex sudo
-Uses TRAMP's @command{su} or @command{sudo} method to run a command via
address@hidden or @command{sudo}.
+Uses TRAMP's @command{su} or @command{sudo} method @pxref{Inline methods, , , 
tramp}
+to run a command via @command{su} or @command{sudo}.  These commands
+are in the eshell-tramp module, which is disabled by default.
 
 @end table
 

=== added file 'lisp/eshell/em-tramp.el'
--- a/lisp/eshell/em-tramp.el   1970-01-01 00:00:00 +0000
+++ b/lisp/eshell/em-tramp.el   2013-03-26 22:08:58 +0000
@@ -0,0 +1,143 @@
+;;; em-tramp.el --- Eshell features that require TRAMP
+
+;; Copyright (C) 1999-2013 Free Software Foundation, Inc.
+
+;; Author: Aidan Gauland <address@hidden>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Eshell features that require TRAMP.
+
+;;; Code:
+
+(eval-when-compile
+  (require 'esh-mode)
+  (require 'eshell)
+  (require 'tramp))
+
+(require 'esh-util)
+
+;;;###autoload
+(progn
+ (defgroup eshell-tramp nil
+   "This module defines commands that use TRAMP in a way that is
+  not transparent to the user.  So far, this includes only the
+  built-in su and sudo commands, which are not compatible with
+  the full, external su and sudo commands, and require the user
+  to understand how to use the TRAMP sudo method."
+   :tag "TRAMP Eshell features"
+   :group 'eshell-module))
+
+(defun eshell-tramp-initialize ()
+  "Initialize the TRAMP-using commands code."
+  (when (eshell-using-module 'eshell-cmpl)
+    (add-hook 'pcomplete-try-first-hook
+             'eshell-complete-host-reference nil t))
+  (make-local-variable 'eshell-complex-commands)
+  (setq eshell-complex-commands
+       (append '("su" "sudo")
+               eshell-complex-commands)))
+
+(defun eshell/su (&rest args)
+  "Alias \"su\" to call TRAMP.
+
+Uses the system su through TRAMP's su method."
+  (setq args (eshell-stringify-list (eshell-flatten-list args)))
+  (let ((orig-args (copy-tree args)))
+    (eshell-eval-using-options
+     "su" args
+     '((?h "help" nil nil "show this usage screen")
+       (?l "login" nil login "provide a login environment")
+       (?  nil nil login "provide a login environment")
+       :usage "[- | -l | --login] [USER]
+Become another USER during a login session.")
+     (throw 'eshell-replace-command
+           (let ((user "root")
+                 (host (or (file-remote-p default-directory 'host)
+                           "localhost"))
+                 (dir (or (file-remote-p default-directory 'localname)
+                          (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 prefix
+                      (or
+                       (not (string-equal
+                             "su" (file-remote-p default-directory 'method)))
+                       (not (string-equal
+                             user (file-remote-p default-directory 'user)))))
+                 (eshell-parse-command
+                  "cd" (list (format "%s|su:address@hidden:%s"
+                                     (substring prefix 0 -1) user host dir)))
+               (eshell-parse-command
+                "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.
+
+Uses the system sudo through TRAMP's sudo method."
+  (setq args (eshell-stringify-list (eshell-flatten-list args)))
+  (let ((orig-args (copy-tree args)))
+    (eshell-eval-using-options
+     "sudo" args
+     '((?h "help" nil nil "show this usage screen")
+       (?u "user" t user "execute a command as another USER")
+       :show-usage
+       :usage "[(-u | --user) USER] COMMAND
+Execute a COMMAND as the superuser or another USER.")
+     (throw 'eshell-external
+           (let ((user (or user "root"))
+                 (host (or (file-remote-p default-directory 'host)
+                           "localhost"))
+                 (dir (or (file-remote-p default-directory 'localname)
+                          (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)))
+             (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:address@hidden:%s"
+                                 (substring prefix 0 -1) user host dir)
+                       (format "/sudo:address@hidden:%s" user host dir))))
+               (eshell-named-command (car orig-args) (cdr orig-args))))))))
+
+(put 'eshell/sudo 'eshell-no-numeric-conversions t)
+
+(provide 'em-tramp)
+
+;; Local Variables:
+;; generated-autoload-file: "esh-groups.el"
+;; End:
+
+;;; em-tramp.el ends here

=== modified file 'lisp/eshell/em-unix.el'
--- a/lisp/eshell/em-unix.el    2013-02-19 03:29:28 +0000
+++ b/lisp/eshell/em-unix.el    2013-03-26 22:08:58 +0000
@@ -148,7 +148,7 @@
   (make-local-variable 'eshell-complex-commands)
   (setq eshell-complex-commands
        (append '("grep" "egrep" "fgrep" "agrep" "glimpse" "locate"
-                 "cat" "time" "cp" "mv" "make" "du" "diff" "su" "sudo")
+                 "cat" "time" "cp" "mv" "make" "du" "diff")
                eshell-complex-commands)))
 
 (defalias 'eshell/date     'current-time-string)
@@ -1038,85 +1038,6 @@
 
 (put 'eshell/occur 'eshell-no-numeric-conversions t)
 
-(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
-     "su" args
-     '((?h "help" nil nil "show this usage screen")
-       (?l "login" nil login "provide a login environment")
-       (?  nil nil login "provide a login environment")
-       :usage "[- | -l | --login] [USER]
-Become another USER during a login session.")
-     (throw 'eshell-replace-command
-           (let ((user "root")
-                 (host (or (file-remote-p default-directory 'host)
-                           "localhost"))
-                 (dir (or (file-remote-p default-directory 'localname)
-                          (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 prefix
-                      (or
-                       (not (string-equal
-                             "su" (file-remote-p default-directory 'method)))
-                       (not (string-equal
-                             user (file-remote-p default-directory 'user)))))
-                 (eshell-parse-command
-                  "cd" (list (format "%s|su:address@hidden:%s"
-                                     (substring prefix 0 -1) user host dir)))
-               (eshell-parse-command
-                "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."
-  (require 'tramp)
-  (setq args (eshell-stringify-list (eshell-flatten-list args)))
-  (let ((orig-args (copy-tree args)))
-    (eshell-eval-using-options
-     "sudo" args
-     '((?h "help" nil nil "show this usage screen")
-       (?u "user" t user "execute a command as another USER")
-       :show-usage
-       :usage "[(-u | --user) USER] COMMAND
-Execute a COMMAND as the superuser or another USER.")
-     (throw 'eshell-external
-           (let ((user (or user "root"))
-                 (host (or (file-remote-p default-directory 'host)
-                           "localhost"))
-                 (dir (or (file-remote-p default-directory 'localname)
-                          (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)))
-             (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:address@hidden:%s"
-                                 (substring prefix 0 -1) user host dir)
-                       (format "/sudo:address@hidden:%s" user host dir))))
-               (eshell-named-command (car orig-args) (cdr orig-args))))))))
-
-(put 'eshell/sudo 'eshell-no-numeric-conversions t)
-
 (provide 'em-unix)
 
 ;; Local Variables:


reply via email to

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