diff --git a/lisp/ox.el b/lisp/ox.el index 1c52ca290..29390bf0e 100644 --- a/lisp/ox.el +++ b/lisp/ox.el @@ -1398,8 +1398,7 @@ external parameters overriding Org default settings, but still inferior to file-local settings." ;; First install #+BIND variables since these must be set before ;; global options are read. - (dolist (pair (org-export--list-bound-variables)) - (set (make-local-variable (car pair)) (nth 1 pair))) + (org-export--set-variables (org-export--list-bound-variables)) ;; Get and prioritize export options... (org-combine-plists ;; ... from global variables... @@ -2585,7 +2584,7 @@ Return the updated communication channel." (defun org-export--set-variables (variable-alist) "Set buffer-local variables according to VARIABLE-ALIST in current buffer." (pcase-dolist (`(,var . ,val) variable-alist) - (set (make-local-variable var) val))) + (set (make-local-variable var) (car val)))) (cl-defun org-export-copy-buffer (&key to-buffer drop-visibility drop-narrowing drop-contents diff --git a/testing/lisp/test-ox.el b/testing/lisp/test-ox.el index 9b1b900ca..0a39ddf2d 100644 --- a/testing/lisp/test-ox.el +++ b/testing/lisp/test-ox.el @@ -133,7 +133,18 @@ variable, and communication channel under `info'." (org-export-create-backend :transcoders '((section . (lambda (s c i) - (if (eq test-ox-var 'value) "Yes" "No"))))))))))) + (if (eq test-ox-var 'value) "Yes" "No")))))))))) + ;; Seen from elisp code blocks as well. + (should + (string-match-p "::: \"test value\"" + (org-test-with-temp-text "#+BIND: test-ox-var \"test value\" + +#+begin_src emacs-lisp :results value :exports results :eval yes +(format \"::: %S\" test-ox-var) +#+end_src" + (let ((org-export-allow-bind-keywords t)) + (org-export-as + (org-test-default-backend))))))) (ert-deftest test-org-export/parse-option-keyword () "Test reading all standard #+OPTIONS: items."