Re: [O] Preserving links when using org-element-interpret-data

2016-10-09 Thread Nicolas Goaziou
Hello,

Thibault Marin  writes:

> I am trying to use the org-element tools to modify an org file from elisp code
> and I was wondering if the `org-element-parse-buffer' /
> `org-element-interpret-data' combo should result in the same content as the
> original buffer.

There is no guarantee that they return the same original buffer.
Actually, it is highly unlikely. Some information, not useful to Org, is
ignored during parsing (e.g., global indentation, case for keywords...).

However, they will return an equivalent buffer, in the sense that both
the produced and the original one have the same parse tree.

> I am having issues with links where the target and the
> description are both =file:= entries.

[...]

> The input link is transformed from
>
> #+begin_example
> [[file:a.png][file:a.png]]
> #+end_example
>
> to
>
> #+begin_example
> [[file:a.png][[[file:a.png
> #+end_example
>
> Are the additional brackets in the description expected?

No, this is a genuine bug. This is now fixed. Thank you.

Regards,

-- 
Nicolas Goaziou



[O] Preserving links when using org-element-interpret-data

2016-10-05 Thread Thibault Marin

Hi all,

I am trying to use the org-element tools to modify an org file from elisp code
and I was wondering if the `org-element-parse-buffer' /
`org-element-interpret-data' combo should result in the same content as the
original buffer.  I am having issues with links where the target and the
description are both =file:= entries.

My original org looks like this:

#+NAME: org-data
#+begin_example
,#+TITLE: test

[[file:a.png][file:a.png]]
#+end_example

The elisp code parses the org file and outputs the result from
`org-element-interpret-data':

#+NAME: org-interpret
#+BEGIN_SRC emacs-lisp :var org-data=org-data :results verbatim

(let (org-tree)
  (with-temp-buffer
(insert org-data)
(setq org-tree (org-element-parse-buffer)))
  (org-element-interpret-data org-tree))

#+END_SRC

#+RESULTS: org-interpret
: "#+TITLE: test
: 
: [[file:a.png][[[file:a.png
: "

The input link is transformed from
#+begin_example
[[file:a.png][file:a.png]]
#+end_example
to
#+begin_example
[[file:a.png][[[file:a.png
#+end_example

Are the additional brackets in the description expected?  Is there any way to
achieve what I want: I am trying to get org-element-interpret-data to output the
same link syntax as the input (in my real application, I am changing the
filename).

Thanks in advance for the help.


P.S.: Here is my version information:
#+BEGIN_SRC emacs-lisp :results drawer
(concat (emacs-version) "\n"
(replace-regexp-in-string "@.*)" "@ ... )" (org-version nil t)))
#+END_SRC

#+RESULTS:
:RESULTS:
GNU Emacs 24.5.1 (x86_64-pc-linux-gnu, GTK+ Version 3.21.5)
 of 2016-09-05 on trouble, modified by Debian
Org-mode version 8.3.6 (release_8.3.6-1179-ga9ae0e @ ... )
:END: