aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/eshell
diff options
context:
space:
mode:
authorStefan Monnier2013-08-04 16:18:11 -0400
committerStefan Monnier2013-08-04 16:18:11 -0400
commit671d5c16547d16bef2efa056705bd35b5feacc29 (patch)
tree4bc2c3774ce9914f21508d0e2a83e25504dbc1db /lisp/eshell
parente443729d658ee2b9e0f55bbbb90241819bf516a6 (diff)
downloademacs-671d5c16547d16bef2efa056705bd35b5feacc29.tar.gz
emacs-671d5c16547d16bef2efa056705bd35b5feacc29.zip
* lisp/subr.el (macrop): New function.
(text-clone--maintaining): New var. (text-clone--maintain): Rename from text-clone-maintain. Use it instead of inhibit-modification-hooks. * lisp/emacs-lisp/nadvice.el (advice--normalize): For aliases to macros, use a proxy, so as handle autoloads and redefinitions of the target. (advice--defalias-fset, advice-remove): Use advice--symbol-function. * lisp/emacs-lisp/pcase.el (pcase-mutually-exclusive-predicates): Remove bogus (arrayp . stringp) pair. Add entries for `vectorp'. (pcase--mutually-exclusive-p): New function. (pcase--split-consp): Use it. (pcase--split-pred): Use it. Optimize the case where `pat' is a qpat mutually exclusive with the current predicate. * test/automated/advice-tests.el (advice-tests-nadvice): Test removal before definition. (advice-tests-macroaliases): New test. * lisp/emacs-lisp/edebug.el (edebug-lookup-function): Remove function. (edebug-macrop): Remove. Use `macrop' instead. * lisp/emacs-lisp/advice.el (ad-subr-p): Remove. Use `subrp' instead. (ad-macro-p): * lisp/eshell/esh-cmd.el (eshell-macrop): * lisp/apropos.el (apropos-macrop): Remove. Use `macrop' instead.
Diffstat (limited to 'lisp/eshell')
-rw-r--r--lisp/eshell/esh-cmd.el10
1 files changed, 1 insertions, 9 deletions
diff --git a/lisp/eshell/esh-cmd.el b/lisp/eshell/esh-cmd.el
index 69dc6c76b41..ef8a53f3c0b 100644
--- a/lisp/eshell/esh-cmd.el
+++ b/lisp/eshell/esh-cmd.el
@@ -993,14 +993,6 @@ at the moment are:
993 ,@commands 993 ,@commands
994 (eshell-debug-command ,(concat "done " (eval tag)) form)))) 994 (eshell-debug-command ,(concat "done " (eval tag)) form))))
995 995
996(defsubst eshell-macrop (object)
997 "Return t if OBJECT is a macro or nil otherwise."
998 (and (symbolp object) (fboundp object)
999 (setq object (indirect-function object))
1000 (listp object)
1001 (eq 'macro (car object))
1002 (functionp (cdr object))))
1003
1004(defun eshell-do-eval (form &optional synchronous-p) 996(defun eshell-do-eval (form &optional synchronous-p)
1005 "Evaluate form, simplifying it as we go. 997 "Evaluate form, simplifying it as we go.
1006Unless SYNCHRONOUS-P is non-nil, throws `eshell-defer' if it needs to 998Unless SYNCHRONOUS-P is non-nil, throws `eshell-defer' if it needs to
@@ -1016,7 +1008,7 @@ be finished later after the completion of an asynchronous subprocess."
1016 (setq form (cadr (cadr form)))) 1008 (setq form (cadr (cadr form))))
1017 ;; expand any macros directly into the form. This is done so that 1009 ;; expand any macros directly into the form. This is done so that
1018 ;; we can modify any `let' forms to evaluate only once. 1010 ;; we can modify any `let' forms to evaluate only once.
1019 (if (eshell-macrop (car form)) 1011 (if (macrop (car form))
1020 (let ((exp (eshell-copy-tree (macroexpand form)))) 1012 (let ((exp (eshell-copy-tree (macroexpand form))))
1021 (eshell-manipulate (format "expanding macro `%s'" 1013 (eshell-manipulate (format "expanding macro `%s'"
1022 (symbol-name (car form))) 1014 (symbol-name (car form)))