Hello, Nick Dokos <ndo...@gmail.com> writes:
> Here's one way: > > (defun jk-org-kwds () > (let* ((parse-tree (org-element-parse-buffer)) > (keys (org-element-map parse-tree 'keyword (function identity)))) > (mapcar (function (lambda (x) (cons (org-element-property :key x) > (org-element-property :value x)))) > keys))) > > This returns a list of (KEY. VALUE) pairs. > > I'm sure there are other (better, cheaper) ways, but I'm going through > org-element.el, and having that hammer in hand, everything looks like > a nail to me :-) I suggest the slightly more efficient variation: (defun jk-org-kwds () (org-element-map (org-element-parse-buffer 'element) 'keyword (lambda (keyword) (cons (org-element-property :key keyword) (org-element-property :value keyword))))) The optional argument `element' prevents `org-element-parse-buffer' from diving too deep and `org-element-map' does the job of `mapcar'. Regards, -- Nicolas Goaziou