[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] Temporally/occasionally turn off hooks?
From: |
Bernt Hansen |
Subject: |
Re: [O] Temporally/occasionally turn off hooks? |
Date: |
Tue, 29 Jan 2013 14:14:42 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) |
Thorsten Jolitz <address@hidden> 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