Hello, Thomas Holst <thomas.ho...@de.bosch.com> 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