On Sat, Nov 9, 2013 at 2:48 AM, Nicolas Goaziou <n.goaz...@gmail.com> wrote: > Hello, > > Matt Price <mopto...@gmail.com> 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