From 4d5468e5296ce42793a86808c62af8f99f556cba Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 5 Nov 2014 22:16:41 -0500 Subject: [PATCH] * lisp/emacs-lisp/macroexp.el (macroexp--expand-all): Optimize away trivial uses of `funcall'. --- lisp/ChangeLog | 9 +++++++-- lisp/emacs-lisp/macroexp.el | 4 ++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index e81b3a736a7..91a076e20e5 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2014-11-06 Stefan Monnier + + * emacs-lisp/macroexp.el (macroexp--expand-all): Optimize away trivial + uses of `funcall'. + 2014-11-06 Daiki Ueno * epa.el (epa-error-buffer): New variable. @@ -7,8 +12,8 @@ (epa-sign-file, epa-sign-region, epa-encrypt-region) (epa-export-keys, epa-insert-keys): Display output sent to stderr. Use setf instead of epg-context-set-*. - * epa-file.el (epa-file-insert-file-contents): Use - epa-display-error instead of epa-display-info. Mimic the behavior + * epa-file.el (epa-file-insert-file-contents): + Use epa-display-error instead of epa-display-info. Mimic the behavior of jka-compr when decryption program is not found. (epa-file-write-region): Use epa-display-error instead of epa-display-info. diff --git a/lisp/emacs-lisp/macroexp.el b/lisp/emacs-lisp/macroexp.el index a96a7af77e8..fc859e7af09 100644 --- a/lisp/emacs-lisp/macroexp.el +++ b/lisp/emacs-lisp/macroexp.el @@ -251,6 +251,10 @@ Assumes the caller has bound `macroexpand-all-environment'." (format "%s quoted with ' rather than with #'" (list 'lambda (nth 1 f) '...)) (macroexp--expand-all `(,fun ,arg1 ,f . ,args)))) + (`(funcall (,(or 'quote 'function) ,(and f (pred symbolp) . ,_)) . ,args) + ;; Rewrite (funcall #'foo bar) to (foo bar), in case `foo' + ;; has a compiler-macro. + (macroexp--expand-all `(,f . ,args))) (`(,func . ,_) ;; Macro expand compiler macros. This cannot be delayed to ;; byte-optimize-form because the output of the compiler-macro can -- 2.11.4.GIT