[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] Circular lists/shared structures in org-element parse-tree
From: |
Daimrod |
Subject: |
Re: [O] Circular lists/shared structures in org-element parse-tree |
Date: |
Fri, 28 Jun 2013 22:43:34 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) |
Thorsten Jolitz <address@hidden> writes:
> Hi List,
>
> I wonder how I can find out in a (elisp) program the points in the parse
> tree (returned by org-element-parse-buffer) where shared structures are
> used.
>
> In the read-syntax, its easy to see (especially with `print-circle' set
> to non-nil):
>
> #+begin_src emacs-lisp
> #2=(org-data nil #1=(headline (:raw-value "header 1"
> [...] :parent #2#) [...]
> #+end_src
>
> but when processing the parse tree as a list in elisp, how can I detect the
> fact that
>
> ,------------
> | :parent #2#
> `------------
>
> refers to
>
> ,-----------------
> | #2=(org-data nil
> `-----------------
>
> i.e. points back to an already existing structure?
AFAIK you have to track all pointers inspected to see if one has already
be seen.
For example, I've implemented a version of equal[1] to compare this kind
of lists (to add tests to org-sync).
[1] https://github.com/daimrod/Emacs-config/blob/master/elisp/dmd-utils.el#L25
--
Daimrod/Greg
signature.asc
Description: PGP signature