From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Goaziou Subject: Re: Problems with capture and lisp code Date: Thu, 21 Jan 2016 14:19:13 +0100 Message-ID: <87k2n3t6i6.fsf@nicolasgoaziou.fr> References: Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:50877) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aMF71-0004GO-HP for emacs-orgmode@gnu.org; Thu, 21 Jan 2016 08:17:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aMF6z-0003Dj-LD for emacs-orgmode@gnu.org; Thu, 21 Jan 2016 08:17:19 -0500 Received: from relay3-d.mail.gandi.net ([2001:4b98:c:538::195]:56171) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aMF6z-0003Dc-Er for emacs-orgmode@gnu.org; Thu, 21 Jan 2016 08:17:17 -0500 In-Reply-To: (Thomas Holst's message of "Thu, 21 Jan 2016 10:55:13 +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: Thomas Holst Cc: org-mode mailing list Hello, Thomas Holst writes: > for my work flow I would like to set up a capture template based on the > ideas described in: > > http://www.jboecker.de/2010/04/14/general-reference-filing-with-org-mode.html#sec-5 > > The original is based on remember but I want to use capture. The > principle is as follows: > > In the capture template run some lisp code which appends a function to > `org-capture-before-finalize-hook' which calls `org-attach-mv' to attach > a file. > > The function run from capture template looks like this: > > #+begin_src emacs-lisp > (defun th:filing-install-attach-mv-hook () > "call this from a capture template to install th:filing-attach-mv-hook" > (add-hook 'org-capture-before-finalize-hook 'th:filing-attach-mv-hook) > (make-local-variable 'kill-buffer-hook) > (add-hook 'kill-buffer-hook 'th:filing-uninstall-attach-mv-hook) > (add-hook 'org-capture-mode-hook 'th:filing-uninstall-attach-mv-hook) > (message "finalize-hook: %s" org-capture-before-finalize-hook)) > #+end_src > > In the messages buffer I can see that at run time of the function > `th:filing-attach-mv-hook' is in `org-capture-before-finalize-hook'. > > Now when I look at `org-capture-before-finalize-hook' in the final > capture buffer `th:filing-attach-mv-hook' is not there. > > The same happens with `kill-buffer-hook'. I also tried > `org-capture-prepare-finalize-hook'. Same result. > > So I am puzzled here :-(. Is there some caching mechanism involved? For > the author of the article stated above this worked with remember - but > why does it not work with capture. Wild guess: capture template is expanded in a temporary buffer, which is killed once the process is complete. Therefore, the uninstall hook installed in `kill-hook-buffer' removes your function before it is actually used. Regards, -- Nicolas Goaziou