summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIhor Radchenko <yantar92@posteo.net>2023-12-25 12:20:10 +0100
committerIhor Radchenko <yantar92@posteo.net>2023-12-25 15:50:04 +0100
commit3afae6690f6bd932fb60ab66b132b9a972501310 (patch)
tree62b25164990a51d5ff957f9ee7486229a2e712a9
parentf59ac10257e865236753171e326e286428b421dd (diff)
downloadorg-mode-3afae6690.tar.gz
org-element-with-buffer-copy, org-export-with-buffer-copy: Fix expansion
* lisp/org-element.el (org-element-with-buffer-copy): * lisp/ox.el (org-export-with-buffer-copy): Make sure that keyword arguments in the macro are not duplicated into BODY, which happens for &rest body + &allow-other-keys in `cl-defmacro'. Reported-by: João Távora <joaotavora@gmail.com> Link: https://yhetil.org/emacs-devel/CALDnm53p7nXdnbA2PuH-VHL7EeGQUXYy3x_87hp3oj2pkyWS9Q@mail.gmail.com/
-rw-r--r--lisp/org-element.el2
-rw-r--r--lisp/ox.el2
2 files changed, 4 insertions, 0 deletions
diff --git a/lisp/org-element.el b/lisp/org-element.el
index 0924c56..ab81abe 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -669,6 +669,8 @@ Optional keys can modify what is being copied and the generated buffer
copy. TO-BUFFER, DROP-VISIBILITY, DROP-NARROWING, DROP-CONTENTS, and
DROP-LOCALS are passed as arguments to `org-element-copy-buffer'."
(declare (debug t))
+ ;; Drop keyword arguments from BODY.
+ (while (keywordp (car body)) (pop body) (pop body))
(org-with-gensyms (buf-copy)
`(let ((,buf-copy (org-element-copy-buffer
:to-buffer ,to-buffer
diff --git a/lisp/ox.el b/lisp/ox.el
index b661b59..46994f0 100644
--- a/lisp/ox.el
+++ b/lisp/ox.el
@@ -2599,6 +2599,8 @@ DROP-CONTENTS, and DROP-LOCALS.
In addition, buffer-local variables are set according to #+BIND:
keywords."
(declare (debug t))
+ ;; Drop keyword arguments from BODY.
+ (while (keywordp (car body)) (pop body) (pop body))
(org-with-gensyms (bind-variables)
`(let ((,bind-variables (org-export--list-bound-variables)))
(org-element-with-buffer-copy