Re: [O] Temporally/occasionally turn off hooks?
Bernt Hansen be...@norang.ca writes: Hi Bernt, I would leave the hook always enabled but make it smart enough to skip inserting timestamps when you don't want them. Something like the following: f9-T will toggle adding the timestamps ON and OFF f9-t will always insert a timestamp at point C-RET and M-RET will use the hook which checks if the variable bh/insert-inactive-timestamps is t before adding the timestamp, otherwise it does nothing. great, thank you! -- cheers, Thorsten
[O] Temporally/occasionally turn off hooks?
Hi List, I copied this from Bernt Hansens set-up: ,--- | org-insert-heading-hook is a variable defined in `org.el'. | Its value is (bh/insert-heading-inactive-timestamp) | Original value was nil `--- and its often quite usefull to have a timestamp for each newly inserted todo-item (e.g.). But in other cases, like writing documents or building Org files programmatically, there is no need for heading-creation-timestamps, so I would like to turn the timestamp insertion off. I could probably use ,- | (remove-hook |'org-insert-heading-hook |'bh/insert-heading-inactive-timestamp |’LOCAL) `- to deactivate the behaviour locally, since: , | remove-hook is a compiled Lisp function in `subr.el'. | | (remove-hook HOOK FUNCTION optional LOCAL) | | Remove from the value of HOOK the function FUNCTION. | HOOK should be a symbol, and FUNCTION may be any valid function. If | FUNCTION isn't the value of HOOK, or, if FUNCTION doesn't appear in the | list of hooks to run in HOOK, then nothing is done. See `add-hook'. | | The optional third argument, LOCAL, if non-nil, says to modify | the hook's buffer-local value rather than its default value. ` but this is of course not a very generic solution for a program I want to share with others, their 'org-insert-heading-hook' might look different. Is there a way to inhibit a hook in a program, or to run it only conditionally in certain situations? -- cheers, Thorsten
Re: [O] Temporally/occasionally turn off hooks?
Thorsten Jolitz tjol...@googlemail.com writes: I copied this from Bernt Hansens set-up: ,--- | org-insert-heading-hook is a variable defined in `org.el'. | Its value is (bh/insert-heading-inactive-timestamp) | Original value was nil `--- and its often quite usefull to have a timestamp for each newly inserted todo-item (e.g.). But in other cases, like writing documents or building Org files programmatically, there is no need for heading-creation-timestamps, so I would like to turn the timestamp insertion off. I could probably use ,- | (remove-hook snip but this is of course not a very generic solution for a program I want to share with others, their 'org-insert-heading-hook' might look different. Is there a way to inhibit a hook in a program, or to run it only conditionally in certain situations? Hi Thorsten! I would leave the hook always enabled but make it smart enough to skip inserting timestamps when you don't want them. Something like the following: f9-T will toggle adding the timestamps ON and OFF f9-t will always insert a timestamp at point C-RET and M-RET will use the hook which checks if the variable bh/insert-inactive-timestamps is t before adding the timestamp, otherwise it does nothing. --8---cut here---start-8--- (global-set-key (kbd f9 T) 'bh/toggle-insert-inactive-timestamp) (global-set-key (kbd f9 t) 'bh/insert-inactive-timestamp) (defvar bh/insert-inactive-timestamp t) (defun bh/toggle-insert-inactive-timestamp () (interactive) (setq bh/insert-inactive-timestamp (not bh/insert-inactive-timestamp)) (message Heading timestamps are %s (if bh/insert-inactive-timestamp ON OFF))) (defun bh/insert-inactive-timestamp () (interactive) (org-insert-time-stamp nil t t nil nil nil)) (defun bh/insert-heading-inactive-timestamp () (save-excursion (when bh/insert-inactive-timestamp (org-return) (org-cycle) (bh/insert-inactive-timestamp (add-hook 'org-insert-heading-hook 'bh/insert-heading-inactive-timestamp 'append) --8---cut here---end---8--- Thanks for this idea :) Regards, Bernt