From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thorsten Jolitz Subject: Invalid read syntax (#) in org-element parse tree Date: Mon, 11 Feb 2013 19:29:38 +0100 Message-ID: <87vc9ybt65.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([208.118.235.92]:55905) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U4y8g-0007Ba-Hs for emacs-orgmode@gnu.org; Mon, 11 Feb 2013 13:30:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1U4y8e-00039H-2t for emacs-orgmode@gnu.org; Mon, 11 Feb 2013 13:30:02 -0500 Received: from plane.gmane.org ([80.91.229.3]:43685) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U4y8d-00038r-S8 for emacs-orgmode@gnu.org; Mon, 11 Feb 2013 13:30:00 -0500 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1U4y8s-0003YI-Og for emacs-orgmode@gnu.org; Mon, 11 Feb 2013 19:30:14 +0100 Received: from g231224149.adsl.alicedsl.de ([92.231.224.149]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 11 Feb 2013 19:30:14 +0100 Received: from tjolitz by g231224149.adsl.alicedsl.de with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 11 Feb 2013 19:30:14 +0100 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Hi List, here is an excerpt of a parse tree produced with 'org-element-parse-buffer': ,------------------------------------------------------------- | (section (:begin 1 :end 624 :contents-begin | 1 :contents-end 623 :post-blank 1 :parent #0) (keyword (:key | TITLE :value Program "Blues for Icke" :begin 1 :end | 39 :post-blank 0 :post-affiliated 1 :parent #1))) `------------------------------------------------------------- When I evaluate a function with this list as data, I get an error: ,-------------------------------------------------------- | Debugger entered--Lisp error: (invalid-read-syntax "#") | read(#) | preceding-sexp() | eval-last-sexp-1(t) | eval-last-sexp(t) | eval-print-last-sexp() | call-interactively(eval-print-last-sexp nil nil) `-------------------------------------------------------- from the doc in 'org-element.el' I learn that: ,------------------------------------------------------------------------ | ;; Notwithstanding affiliated keywords, each greater element, element | ;; and object has a fixed set of properties attached to it. [...] | | ;; `:parent' which refers to the element or object containing it. [...] | | ;; Lisp-wise, an element or an object can be represented as a list. | ;; It follows the pattern (TYPE PROPERTIES CONTENTS), where: | ;; TYPE is a symbol describing the Org element or object. | ;; PROPERTIES is the property list attached to it. See docstring of | ;; appropriate parsing function to get an exhaustive | ;; list. | ;; CONTENTS is a list of elements, objects or raw strings contained | ;; in the current element or object, when applicable. | ;; | ;; An Org buffer is a nested list of such elements and objects, whose | ;; type is `org-data' and properties is nil. `------------------------------------------------------------------------ There are a lot of usages of '#' in Emacs Lisp, but I couldn't figure out how (and why) it is used in ':parent #1'. Nic Ferrier wrote an exhaustive library with "routines for working with key/value data structures like hash-tables and alists and plists" (https://github.com/nicferrier/emacs-kv/blob/master/kv.el), but I cannot apply any of the functions due to the read error. Do I really have to treat the parse tree as text first and eliminate the '#' before I can use it as list in Emacs Lisp, or did I simply manage to get the wrong represantation of the parse tree somehow? Thanks for any advice. -- cheers, Thorsten