emacs-orgmode
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]