Hello, Eric Abrahamsen <e...@ericabrahamsen.net> writes:
>> Strictly speaking, yes. But Org Agenda is a bit permissive (and not only >> for that thing). Do you want to help basing Agenda on Elements? > > This is something I was wondering about -- so that is the plan > eventually? Since we have a complete parser, it would be good to use it as much as possible. It will alleviate the need to use regexps and normalize Org syntax. One downside, though, is that it isn't fast enough yet for speed critical operations (i.e. fontification). A caching mechanism would be required to go further (any taker?). Org Elements is quite simple to use: API basically boils down to five functions. For a global action, the main function to use is `org-element-parse-buffer'. At the element level (paragraphs, tables...), it is `org-element-at-point'. At the object level (links, emphasis...), it is `org-element-context'. Then you extract properties (resp. type) with `org-element-property' (resp. `org-element-type'). You can get a list of all properties available for each element/object by looking at: http://orgmode.org/worg/dev/org-export-reference.html#attributes or by looking at org-element.el source code, obviously. In order to get started, you can study navigation/manipulation functions in org.el (from `org-forward-element' to `org-unindent-buffer'). > This is something I've wanted for a while, as it would make > some of my little personal projects a lot easier. I'd be happy to help > if there's a roadmap, and if I can be fed bite-sized problems to deal > with. There's no roadmap for now. If you're looking for small tasks to handle, I think interactive functions are a good start (although some can be a bit challenging, i.e. `org-open-link'). Particularly good candidates are those calling either `org-at-regexp-p', `org-in-regexp' or `org-between-regexps-p': using those is almost always wrong (or at least fragile). If you give a shot at some of them, please include ert tests: writings tests for Org is really a must from now on. There are now plenty of examples in testing directory. Thank you for your interest in this. Regards, -- Nicolas Goaziou