From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: Re: [PATCH] Stop generating superfluous clock entries Date: Fri, 27 Nov 2009 08:09:38 +0100 Message-ID: References: <1259288478-29642-1-git-send-email-bernt@norang.ca> Mime-Version: 1.0 (Apple Message framework v936) Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NDuxh-0000YW-8J for emacs-orgmode@gnu.org; Fri, 27 Nov 2009 02:09:49 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NDuxb-0000Tn-Lc for emacs-orgmode@gnu.org; Fri, 27 Nov 2009 02:09:48 -0500 Received: from [199.232.76.173] (port=52826 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NDuxb-0000Tk-Go for emacs-orgmode@gnu.org; Fri, 27 Nov 2009 02:09:43 -0500 Received: from mail-ew0-f224.google.com ([209.85.219.224]:63209) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NDuxb-0003TS-0t for emacs-orgmode@gnu.org; Fri, 27 Nov 2009 02:09:43 -0500 Received: by ewy24 with SMTP id 24so1507645ewy.26 for ; Thu, 26 Nov 2009 23:09:42 -0800 (PST) In-Reply-To: <1259288478-29642-1-git-send-email-bernt@norang.ca> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Bernt Hansen Cc: emacs-orgmode@gnu.org Thanks, Bernt, good idea! I have applied a modified version. - Carsten On Nov 27, 2009, at 3:21 AM, Bernt Hansen wrote: > Avoid closing the currently clocking entry when clocking in the same > task > again. Leave the clock entry open until some other task is clocked > in. > > This allows us to clock in tasks with hooks that are called > frequently without > generating lots of short sequential clock entries for the same task. > --- > This patch is available at git://git.norang.ca/org-mode.git clock-in > > I haven't extensively tested this but it seems to work for for me. > I currently > have clock resolution disabled. > > lisp/ChangeLog | 5 +++++ > lisp/org-clock.el | 29 ++++++++++++++++++++--------- > 2 files changed, 25 insertions(+), 9 deletions(-) > > diff --git a/lisp/ChangeLog b/lisp/ChangeLog > index 4acb99c..ecba8f7 100755 > --- a/lisp/ChangeLog > +++ b/lisp/ChangeLog > @@ -1,3 +1,8 @@ > +2009-11-26 Bernt Hansen > + > + * org-clock.el (org-clock-in): Avoid creating superfluous clock > + entries when clocking in the task that is already running. > + > 2009-11-26 Carsten Dominik > > * org-footnote.el (org-footnote-normalize): Don't take optional > diff --git a/lisp/org-clock.el b/lisp/org-clock.el > index f598cc3..9bfe53e 100644 > --- a/lisp/org-clock.el > +++ b/lisp/org-clock.el > @@ -847,18 +847,29 @@ the clocking selection, associated with the > letter `d'." > (if selected-task > (setq selected-task (copy-marker selected-task)) > (error "Abort"))) > - (when interrupting > - ;; We are interrupting the clocking of a different task. > - ;; Save a marker to this task, so that we can go back. > - (move-marker org-clock-interrupted-task > - (marker-position org-clock-marker) > - (marker-buffer org-clock-marker)) > - (org-clock-out t)) > - > + > + (let ((current-hd-marker (make-marker))) > + ; Find the heading for the current point > + (move-marker current-hd-marker > + (save-excursion > + (org-back-to-heading t) > + (point)) > + (buffer-base-buffer)) > + ; Do not clock out if we want to clock in the task > + ; that is currently clocking > + (when interrupting > + (unless (equal current-hd-marker org-clock-hd-marker) > + ;; We are interrupting the clocking of a different task. > + ;; Save a marker to this task, so that we can go back. > + (move-marker org-clock-interrupted-task > + (marker-position org-clock-marker) > + (marker-buffer org-clock-marker)) > + (org-clock-out t)))) > + > (when (equal select '(16)) > ;; Mark as default clocking task > (org-clock-mark-default-task)) > - > + > ;; Clock in at which position? > (setq target-pos > (if (and (eobp) (not (org-on-heading-p))) > -- > 1.6.6.rc0.54.gb073b > > > > _______________________________________________ > Emacs-orgmode mailing list > Please use `Reply All' to send replies to the list. > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode - Carsten