From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bernt Hansen Subject: Re: Temporally/occasionally turn off hooks? Date: Tue, 29 Jan 2013 14:14:42 -0500 Message-ID: <87libb4x99.fsf@norang.ca> References: <87r4l42nzi.fsf@googlemail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from eggs.gnu.org ([208.118.235.92]:46274) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U0Ge1-0001fJ-8n for emacs-orgmode@gnu.org; Tue, 29 Jan 2013 14:15:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1U0Gdx-0003vB-6Y for emacs-orgmode@gnu.org; Tue, 29 Jan 2013 14:14:57 -0500 Received: from mho-03-ewr.mailhop.org ([204.13.248.66]:57943 helo=mho-01-ewr.mailhop.org) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U0Gdx-0003tX-2r for emacs-orgmode@gnu.org; Tue, 29 Jan 2013 14:14:53 -0500 In-Reply-To: <87r4l42nzi.fsf@googlemail.com> (Thorsten Jolitz's message of "Tue, 29 Jan 2013 13:05:37 +0100") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Thorsten Jolitz Cc: emacs-orgmode@gnu.org Thorsten Jolitz 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 > 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 " T") 'bh/toggle-insert-inactive-timestamp) (global-set-key (kbd " 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