From mboxrd@z Thu Jan 1 00:00:00 1970 From: Karl Voit Subject: Add caching to org-buffer-property-keys Date: Wed, 2 Mar 2016 12:29:36 +0100 Message-ID: <2016-03-02T12-21-52@devnull.Karl-Voit.at> Reply-To: Karl Voit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:40062) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ab4yW-0007sl-Lm for emacs-orgmode@gnu.org; Wed, 02 Mar 2016 06:29:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ab4yS-0001TI-9K for emacs-orgmode@gnu.org; Wed, 02 Mar 2016 06:29:52 -0500 Received: from plane.gmane.org ([80.91.229.3]:38708) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ab4yS-0001Ss-3O for emacs-orgmode@gnu.org; Wed, 02 Mar 2016 06:29:48 -0500 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1ab4yQ-0001d6-V3 for emacs-orgmode@gnu.org; Wed, 02 Mar 2016 12:29:47 +0100 Received: from friends.grml.info ([136.243.234.19]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 02 Mar 2016 12:29:46 +0100 Received: from news1142 by friends.grml.info with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 02 Mar 2016 12:29:46 +0100 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: emacs-orgmode@gnu.org Hi! In short: can we get a cached org-buffer-property-keys please? My background story: I love using following function which gives me a neat functionality: I mark a string, press the keybinding shortcut, and gets asked which property should be replaced/filled with the marked region text. Very handy when you've got a new phone number of a contact which should find its way to the associated property. (defun my-org-region-to-property (&optional property) (interactive) ;; if no region is defined, do nothing (if (use-region-p) ;; if a region string is found, ask for a property and set property to ;; the string in the region (let ((val (replace-regexp-in-string "\\`[ \t\n]*" "" (replace-regexp-in-string "[ \t\n]*\\'" "" (substring (buffer-string) (- (region-beginning) 1) (region-end)))) ) ;; if none was stated by user, read property from user (prop (or property (org-read-property-name)))) ;; set property (org-set-property prop val)))) A big drawback is that I have to wait 18 seconds(!) until org-read-property-name which calls org-buffer-property-keys asks for the property. This is a real show stopper for this cool function. Since the properties of a buffer do not change that often, caching its previous result would make sense to me. This way, I only have to wait 18 seconds once per file on the first call. An alternative would be a org-read-property-name which uses only the properties of the current heading. Thanks for your support! -- mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML to Org-mode: > get Memacs from https://github.com/novoid/Memacs < https://github.com/novoid/extract_pdf_annotations_to_orgmode + more on github