Hi Nicolas, · Nicolas Goaziou <m...@nicolasgoaziou.fr> wrote:
> 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. that's it! your guess is right! Seems that is what is going on! The function in `kill-buffer-hook' was to remove `th:filing-attach-mv-hook' when capture buffer was killed with C-c C-k. Is there another way to execute lisp code when capture buffer is killed with C-c C-k? I could alter `kill-buffer-hook' globally, but then if another buffer is killed while capture buffer still is there the function is also removed. Hmm ... - I have to think it over maybe I find a solution for that. Anyway thanks a lot for the pointer! -- Mit freundlichen Grüßen / Best regards Thomas