emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Bug: org-babel-ref-parse needs to set current buffer to the buff


From: Oleg Sivokon
Subject: Re: [O] Bug: org-babel-ref-parse needs to set current buffer to the buffer of the marker [8.2.2 (release_8.2.2-188-gc57372 @ /home/wvxvw/Projects/org-mode/lisp/)]
Date: Sat, 09 May 2015 02:01:15 +0300
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux)

Nicolas Goaziou <address@hidden> writes:

Hello, Nicolas.

> Do you mean `defstruct'? If so, it has been in cl.el for ages. I doubt
> this is related to the incompatibility you are experiencing.

Yes, that's `defstruct'. Its ABI changed between 24.5 and 25.0, The
older one had this in the end:

    (push `(setq ,tag-symbol (list ',tag)) forms)
    (push `(cl-eval-when (compile load eval)
             (put ',name 'cl-struct-slots ',descs)
             (put ',name 'cl-struct-type ',(list type (eq named t)))
             (put ',name 'cl-struct-include ',include)
             (put ',name 'cl-struct-print ,print-auto)
             ,@(mapcar (lambda (x)
                         `(put ',(car x) 'side-effect-free ',(cdr x)))
                       side-eff))
          forms)
    `(progn ,@(nreverse (cons `',name forms)))))

And the younger one looks like this:

    `(progn
       (defvar ,tag-symbol)
       ,@(nreverse forms)
       ;; Call cl-struct-define during compilation as well, so that
       ;; a subsequent cl-defstruct in the same file can correctly include this
       ;; struct as a parent.
       (eval-and-compile
         (cl-struct-define ',name ,docstring ',include-name
                           ',type ,(eq named t) ',descs ',tag-symbol ',tag
                           ',print-auto))
       ',name)))

So, if I compile Org against the CL library from Emacs 25.0, it's not
backwards compatible with Emacs 24.5.  I could put a different compiled
version elsewhere for the older Emacs and will experiment with it.

The reason I thought that compatibility is no longer needed is because
Linux distributions usually package the bytecompiled Emacs Lisp
code. So, if someone was to get a newer version of Org, compiled with
the younger CL, that wouldn't work for them either.

Best,

Oleg



reply via email to

[Prev in Thread] Current Thread [Next in Thread]