Nick Dokos <ndo...@gmail.com> writes:

> Kaushal Modi <kaushal.m...@gmail.com> writes:
>
>> @Nick Dokos Are you are on a commit before or after this lexical binding 
>> change? http://orgmode.org/
>> cgit.cgi/org-mode.git/commit/?id=8bccb2131374bba8c82c2774abb34af488826ce4
>>
>> The failure symtoms in my backtrace look like they could be related to this 
>> change.
>
> I think that is right.
>
> The problem seems to be with the search-refs function defined in the
> let* in org-latex--delayed-footnotes-definitions and passed down to
> org-element-map which tries to find it in the lexical environment and
> fails.
>

Brute-forcing search-refs to be a special variable (i.e. dynamically,
rather than lexically, bound) seems to fix the error, although I doubt
it's the ultimate solution:

--8<---------------cut here---------------start------------->8---
diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index 060f423..3279be7 100644
--- a/lisp/ox-latex.el
+++ b/lisp/ox-latex.el
@@ -1459,6 +1459,8 @@ INFO is a plist used as a communication channel.  See
       ;; Else use format string.
       (t (format fmt text)))))
 
+(defvar search-refs)                   ; For byte-compiler.
+
 (defun org-latex--delayed-footnotes-definitions (element info)
   "Return footnotes definitions in ELEMENT as a string.
 
@@ -1481,7 +1483,6 @@ just outside of it."
        (org-export-get-footnote-definition ref info) info))))
    ;; Find every footnote reference in ELEMENT.
    (let* (all-refs
-         search-refs                   ; For byte-compiler.
          (search-refs
           (function
            (lambda (data)
--8<---------------cut here---------------end--------------->8---

--
Nick


Reply via email to