From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Price Subject: Re: org-element-property syntax (turning strings into keyword symbols) Date: Sat, 9 Nov 2013 11:15:12 -0500 Message-ID: References: <87fvr6818g.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:60267) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VfBBq-0002dj-2r for emacs-orgmode@gnu.org; Sat, 09 Nov 2013 11:15:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VfBBp-0002Xl-4K for emacs-orgmode@gnu.org; Sat, 09 Nov 2013 11:15:14 -0500 Received: from mail-qe0-x22a.google.com ([2607:f8b0:400d:c02::22a]:55961) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VfBBp-0002XY-0K for emacs-orgmode@gnu.org; Sat, 09 Nov 2013 11:15:13 -0500 Received: by mail-qe0-f42.google.com with SMTP id gc15so3154902qeb.1 for ; Sat, 09 Nov 2013 08:15:12 -0800 (PST) In-Reply-To: <87fvr6818g.fsf@gmail.com> 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: Nicolas Goaziou Cc: Org Mode On Sat, Nov 9, 2013 at 2:48 AM, Nicolas Goaziou wrote: > Hello, > > Matt Price writes: > >> This works fine. Now when I come back to this buffer I want to check >> whether any of the properties are actually there. So I am trying >> something like this: >> >> (let ((hasprops nil)) >> (dolist prop org-writers-room-properties >> (if (org-element-property (car prop) (org-element-at-point)) >> (setq hasprops t)) >> (if (hasprops) >> (etc.)) >> >> However this doesn't work because (1) the car of "prop" (which is in >> fact the property name) is not necessarily capitalized and > > Then `upcase' the property name first. I assume you will only refer to > user-defined properties so their equivalent keyword will always be in > upper cases. > >> (2) the "property" parameter of org-element-property is not a string, >> but a "keyword symbol". Somehow I have to turn my string into the >> appropriate keyword symbol. Does anyone know how to do this? > > Use `intern'. > > For efficiency reasons, I also suggest to store `org-element-at-point' > in a variable instead of computing it again each time you are looking > for a property: > > (let ((hashprops nil) > (element (org-element-at-point))) > (dolist (prop org-writers-room-properties) > (if (org-element-property (intern (concat ":" (upcase prop))) element) > ...))) > ah, thank you so much for this. I don't know how I would ever have found intern on my own. makes my life much easier! > > Regards, > > -- > Nicolas Goaziou