* lisp/ob-emacs-lisp.el (org-babel-execute:emacs-lisp, org-babel-emacs-lisp-lexical): Factor out the conversion of the :lexical source block argument to a form that is appropriate for `lexical-binding' and the LEXICAL argument to `eval'.
* lisp/ob-emacs-lisp.el (org-babel-edit-prep:emacs-lisp): Set `lexical-binding'. * lisp/ob-emacs-lisp.el (org-babel-default-header-args:emacs-lisp): Update docstring. TINYCHANGE --- lisp/ob-emacs-lisp.el | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/lisp/ob-emacs-lisp.el b/lisp/ob-emacs-lisp.el index cd86f4a20..17952069e 100644 --- a/lisp/ob-emacs-lisp.el +++ b/lisp/ob-emacs-lisp.el @@ -43,7 +43,8 @@ A value of \"yes\" or t causes source blocks to be eval'd using lexical scoping. It can also be an alist mapping symbols to their value. It is used as the optional LEXICAL argument to -`eval', which see.") +`eval', which see. And it is used as the value for +`lexical-binding' in buffers created by `org-edit-src-code'.") (defun org-babel-expand-body:emacs-lisp (body params) "Expand BODY according to PARAMS, return the expanded body." @@ -71,9 +72,7 @@ their value. It is used as the optional LEXICAL argument to (member "pp" result-params)) (concat "(pp " body ")") body)) - (if (listp lexical) - lexical - (member lexical '("yes" "t")))))) + (org-babel-emacs-lisp-lexical lexical)))) (org-babel-result-cond result-params (let ((print-level nil) (print-length nil)) @@ -88,6 +87,22 @@ their value. It is used as the optional LEXICAL argument to (org-babel-pick-name (cdr (assq :rowname-names params)) (cdr (assq :rownames params)))))))) +(defun org-babel-emacs-lisp-lexical (lexical) + "Convert :lexical source block argument LEXICAL into the form +appropriate for `lexical-binding' and the LEXICAL argument to +`eval'." + (if (listp lexical) + lexical + (not (null (member lexical '("yes" "t")))))) + +(defun org-babel-edit-prep:emacs-lisp (info) + "Set `lexical-binding' according to :lexical source block +argument." + (setq lexical-binding + (org-babel-emacs-lisp-lexical + (org-babel-read + (cdr (assq :lexical (nth 2 info))))))) + (org-babel-make-language-alias "elisp" "emacs-lisp") (provide 'ob-emacs-lisp) -- 2.20.1