emacs-compatible lexical binding
authorBT Templeton <bpt@hcoop.net>
Sat, 9 Jul 2011 22:49:02 +0000 (18:49 -0400)
committerBT Templeton <bpt@hcoop.net>
Fri, 3 Feb 2012 23:53:49 +0000 (18:53 -0500)
commit03e00c5c9ddbeda56543da94601142df40e2bcbb
treea290b060f4a3b3912eda55a7e886d276fa52b94e
parentd4cb18ad9cf09f54552d82463acf1269a11a8764
emacs-compatible lexical binding

* module/language/elisp/bindings.scm (global?): New function.
* module/language/elisp/compile-tree-il.scm (lexical-binding): New
  variable.
  (bind-lexically?): If lexical binding is enabled, bind lexically
  unless a special binding exists.
  (compile-%set-lexical-binding-mode): New function.
* module/language/elisp/lexer.scm (lexical-binding-regexp): New
  variable.
  (lex): Return a `set-lexical-binding-mode!' token if a comment is
  found while reading the first line.
* module/language/elisp/parser.scm (get-expression): Add support for
  `set-lexical-binding-mode!' tokens.
* module/language/elisp/runtime/function-slot.scm: Import and re-export
  the `%set-lexical-binding-mode' special form.
* test-suite/tests/elisp-compiler.test
  ("Let and Let*")["lambda args inside lexical-let"]: Update.
module/language/elisp/bindings.scm
module/language/elisp/compile-tree-il.scm
module/language/elisp/lexer.scm
module/language/elisp/parser.scm
module/language/elisp/runtime/function-slot.scm
test-suite/tests/elisp-compiler.test