[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r112822: * eshell/esh-ext.el (eshell-
From: |
Tassilo Horn |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r112822: * eshell/esh-ext.el (eshell-external-command): Pass args to |
Date: |
Sun, 02 Jun 2013 11:19:09 +0200 |
User-agent: |
Bazaar (2.6b2) |
------------------------------------------------------------
revno: 112822
committer: Tassilo Horn <address@hidden>
branch nick: trunk
timestamp: Sun 2013-06-02 11:19:09 +0200
message:
* eshell/esh-ext.el (eshell-external-command): Pass args to
`eshell-find-interpreter'.
(eshell-find-interpreter): Add new second parameter ARGS.
* eshell/em-script.el (eshell-script-initialize): Add second arg
to the function added as MATCH to `eshell-interpreter-alist'
* eshell/em-dirs.el (eshell-dirs-initialize): Add second arg to
the function added as MATCH to `eshell-interpreter-alist'
* eshell/em-term.el (eshell-visual-subcommands): New defcustom.
(eshell-visual-options): New defcustom.
(eshell-escape-control-x): Adapt docstring.
(eshell-term-initialize): Test `eshell-visual-subcommands' and
`eshell-visual-options' in addition to `eshell-visual-commands'.
(eshell-exec-visual): Pass args to `eshell-find-interpreter'.
modified:
lisp/ChangeLog
lisp/eshell/em-dirs.el
lisp/eshell/em-script.el
lisp/eshell/em-term.el
lisp/eshell/esh-ext.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2013-06-02 03:59:46 +0000
+++ b/lisp/ChangeLog 2013-06-02 09:19:09 +0000
@@ -1,3 +1,22 @@
+2013-06-02 Tassilo Horn <address@hidden>
+
+ * eshell/esh-ext.el (eshell-external-command): Pass args to
+ `eshell-find-interpreter'.
+ (eshell-find-interpreter): Add new second parameter ARGS.
+
+ * eshell/em-script.el (eshell-script-initialize): Add second arg
+ to the function added as MATCH to `eshell-interpreter-alist'
+
+ * eshell/em-dirs.el (eshell-dirs-initialize): Add second arg to
+ the function added as MATCH to `eshell-interpreter-alist'
+
+ * eshell/em-term.el (eshell-visual-subcommands): New defcustom.
+ (eshell-visual-options): New defcustom.
+ (eshell-escape-control-x): Adapt docstring.
+ (eshell-term-initialize): Test `eshell-visual-subcommands' and
+ `eshell-visual-options' in addition to `eshell-visual-commands'.
+ (eshell-exec-visual): Pass args to `eshell-find-interpreter'.
+
2013-06-01 Fabián Ezequiel Gallina <address@hidden>
* progmodes/python.el (python-indent-block-enders): Add break,
=== modified file 'lisp/eshell/em-dirs.el'
--- a/lisp/eshell/em-dirs.el 2013-01-01 09:11:05 +0000
+++ b/lisp/eshell/em-dirs.el 2013-06-02 09:19:09 +0000
@@ -207,7 +207,8 @@
(when eshell-cd-on-directory
(make-local-variable 'eshell-interpreter-alist)
(setq eshell-interpreter-alist
- (cons (cons 'eshell-lone-directory-p
+ (cons (cons (lambda (file args)
+ (eshell-lone-directory-p file))
'eshell-dirs-substitute-cd)
eshell-interpreter-alist)))
=== modified file 'lisp/eshell/em-script.el'
--- a/lisp/eshell/em-script.el 2013-01-01 09:11:05 +0000
+++ b/lisp/eshell/em-script.el 2013-06-02 09:19:09 +0000
@@ -61,7 +61,7 @@
"Initialize the script parsing code."
(make-local-variable 'eshell-interpreter-alist)
(setq eshell-interpreter-alist
- (cons '((lambda (file)
+ (cons '((lambda (file args)
(string= (file-name-nondirectory file)
"eshell")) . eshell/source)
eshell-interpreter-alist))
=== modified file 'lisp/eshell/em-term.el'
--- a/lisp/eshell/em-term.el 2013-05-23 04:57:27 +0000
+++ b/lisp/eshell/em-term.el 2013-06-02 09:19:09 +0000
@@ -65,6 +65,39 @@
:type '(repeat string)
:group 'eshell-term)
+(defcustom eshell-visual-subcommands
+ nil
+ "An alist of the form
+
+ ((COMMAND1 SUBCOMMAND1 SUBCOMMAND2...)
+ (COMMAND2 SUBCOMMAND1 ...))
+
+of commands with subcommands that present their output in a
+visual fashion. A likely entry is
+
+ (\"git\" \"log\" \"diff\" \"show\")
+
+because git shows logs and diffs using a pager by default."
+ :type '(repeat (cons (string :tag "Command")
+ (repeat (string :tag "Subcommand")))))
+
+(defcustom eshell-visual-options
+ nil
+ "An alist of the form
+
+ ((COMMAND1 OPTION1 OPTION2...)
+ (COMMAND2 OPTION1 ...))
+
+of commands with options that present their output in a visual
+fashion. For example, a sensible entry would be
+
+ (\"git\" \"--help\")
+
+because \"git <command> --help\" shows the command's
+documentation with a pager."
+ :type '(repeat (cons (string :tag "Command")
+ (repeat (string :tag "Option")))))
+
;; If you change this from term-term-name, you need to ensure that the
;; value you choose exists in the system's terminfo database. (Bug#12485)
(defcustom eshell-term-name term-term-name
@@ -77,8 +110,10 @@
(defcustom eshell-escape-control-x t
"If non-nil, allow <C-x> to be handled by Emacs key in visual buffers.
-See the variable `eshell-visual-commands'. If this variable is set to
-nil, <C-x> will send that control character to the invoked process."
+See the variables `eshell-visual-commands',
+`eshell-visual-subcommands', and `eshell-visual-options'. If
+this variable is set to nil, <C-x> will send that control
+character to the invoked process."
:type 'boolean
:group 'eshell-term)
@@ -93,9 +128,14 @@
(make-local-variable 'eshell-interpreter-alist)
(setq eshell-interpreter-alist
(cons (cons (function
- (lambda (command)
- (member (file-name-nondirectory command)
- eshell-visual-commands)))
+ (lambda (command args)
+ (let ((command (file-name-nondirectory command)))
+ (or (member command eshell-visual-commands)
+ (member (car args)
+ (cdr (assoc command
eshell-visual-subcommands)))
+ (intersection args
+ (cdr (assoc command
eshell-visual-options))
+ :test 'string=)))))
'eshell-exec-visual)
eshell-interpreter-alist)))
@@ -104,7 +144,7 @@
ARGS are passed to the program. At the moment, no piping of input is
allowed."
(let* (eshell-interpreter-alist
- (interp (eshell-find-interpreter (car args)))
+ (interp (eshell-find-interpreter (car args) (cdr args)))
(program (car interp))
(args (eshell-flatten-list
(eshell-stringify-list (append (cdr interp)
=== modified file 'lisp/eshell/esh-ext.el'
--- a/lisp/eshell/esh-ext.el 2013-05-23 04:57:27 +0000
+++ b/lisp/eshell/esh-ext.el 2013-06-02 09:19:09 +0000
@@ -125,9 +125,10 @@
(MATCH . INTERPRETER)
-MATCH should be a regexp, which is matched against the command name,
-or a function. If either returns a non-nil value, then INTERPRETER
-will be used for that command.
+MATCH should be a regexp, which is matched against the command
+name, or a function of arity 2 receiving the COMMAND and its
+ARGS (a list). If either returns a non-nil value, then
+INTERPRETER will be used for that command.
If INTERPRETER is a string, it will be called as the command name,
with the original command name passed as the first argument, with all
@@ -215,6 +216,7 @@
(setq args (eshell-stringify-list (eshell-flatten-list args)))
(let ((interp (eshell-find-interpreter
command
+ args
;; `eshell-find-interpreter' does not work correctly
;; for Tramp file name syntax. But we don't need to
;; know the interpreter in that case, therefore the
@@ -267,7 +269,7 @@
(list (match-string 1)
file)))))))
-(defun eshell-find-interpreter (file &optional no-examine-p)
+(defun eshell-find-interpreter (file args &optional no-examine-p)
"Find the command interpreter with which to execute FILE.
If NO-EXAMINE-P is non-nil, FILE will not be inspected for a script
line of the form #!<interp>."
@@ -277,8 +279,9 @@
(dolist (possible eshell-interpreter-alist)
(cond
((functionp (car possible))
- (and (funcall (car possible) file)
- (throw 'found (cdr possible))))
+ (let ((fn (car possible)))
+ (and (funcall fn file args)
+ (throw 'found (cdr possible)))))
((stringp (car possible))
(and (string-match (car possible) file)
(throw 'found (cdr possible))))
@@ -312,7 +315,7 @@
(setq interp (eshell-script-interpreter fullname))
(if interp
(setq interp
- (cons (car (eshell-find-interpreter (car interp) t))
+ (cons (car (eshell-find-interpreter (car interp) args t))
(cdr interp)))))
(or interp (list fullname)))))))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r112822: * eshell/esh-ext.el (eshell-external-command): Pass args to,
Tassilo Horn <=