From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Goaziou Subject: Re: getting file properties Date: Sun, 05 May 2013 09:36:24 +0200 Message-ID: <87r4hlg9on.fsf@gmail.com> References: <878v3utcs5.fsf@adboyd.com> <87vc6ym4az.fsf@pierrot.dokosmarshall.org> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([208.118.235.92]:36602) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UYtUh-0005AJ-No for emacs-orgmode@gnu.org; Sun, 05 May 2013 03:36:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UYtUg-0006Oj-Qi for emacs-orgmode@gnu.org; Sun, 05 May 2013 03:36:27 -0400 Received: from mail-wg0-x22c.google.com ([2a00:1450:400c:c00::22c]:37785) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UYtUg-0006OR-AZ for emacs-orgmode@gnu.org; Sun, 05 May 2013 03:36:26 -0400 Received: by mail-wg0-f44.google.com with SMTP id z12so2685182wgg.35 for ; Sun, 05 May 2013 00:36:25 -0700 (PDT) In-Reply-To: <87vc6ym4az.fsf@pierrot.dokosmarshall.org> (Nick Dokos's message of "Sun, 05 May 2013 00:36:04 -0400") 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: Nick Dokos Cc: emacs-orgmode@gnu.org Hello, Nick Dokos 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