mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-09 15:50:40 -08:00
* lisp/emacs-lisp/cconv.el: New file.
* lisp/emacs-lisp/bytecomp.el: Use cconv. (byte-compile-file-form, byte-compile): Call cconv-closure-convert-toplevel when requested. * lisp/server.el: * lisp/mpc.el: * lisp/emacs-lisp/pcase.el: * lisp/doc-view.el: * lisp/dired.el: Use lexical-binding.
This commit is contained in:
parent
8f1d2ef658
commit
94d11cb577
8 changed files with 1109 additions and 218 deletions
|
|
@ -119,6 +119,7 @@
|
|||
|
||||
(require 'backquote)
|
||||
(require 'macroexp)
|
||||
(require 'cconv)
|
||||
(eval-when-compile (require 'cl))
|
||||
|
||||
(or (fboundp 'defsubst)
|
||||
|
|
@ -2238,6 +2239,8 @@ list that represents a doc string reference.
|
|||
(let ((byte-compile-current-form nil) ; close over this for warnings.
|
||||
bytecomp-handler)
|
||||
(setq form (macroexpand-all form byte-compile-macro-environment))
|
||||
(if lexical-binding
|
||||
(setq form (cconv-closure-convert-toplevel form)))
|
||||
(cond ((not (consp form))
|
||||
(byte-compile-keep-pending form))
|
||||
((and (symbolp (car form))
|
||||
|
|
@ -2585,9 +2588,11 @@ If FORM is a lambda or a macro, byte-compile it as a function."
|
|||
(setq fun (cdr fun)))
|
||||
(cond ((eq (car-safe fun) 'lambda)
|
||||
;; expand macros
|
||||
(setq fun
|
||||
(macroexpand-all fun
|
||||
byte-compile-initial-macro-environment))
|
||||
(setq fun
|
||||
(macroexpand-all fun
|
||||
byte-compile-initial-macro-environment))
|
||||
(if lexical-binding
|
||||
(setq fun (cconv-closure-convert-toplevel fun)))
|
||||
;; get rid of the `function' quote added by the `lambda' macro
|
||||
(setq fun (cadr fun))
|
||||
(setq fun (if macro
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue