From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: Re: [PATCH] Avoid losing persisted clock data when exiting emac without loading org-mode Date: Sat, 24 Oct 2009 18:48:32 +0200 Message-ID: <468CEFF9-A1C3-4888-83B6-066F2129087D@gmail.com> References: 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 1N1jo3-0006j2-9P for emacs-orgmode@gnu.org; Sat, 24 Oct 2009 12:49:31 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1N1jny-0006iD-Ka for emacs-orgmode@gnu.org; Sat, 24 Oct 2009 12:49:30 -0400 Received: from [199.232.76.173] (port=44170 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1N1jny-0006iA-EG for emacs-orgmode@gnu.org; Sat, 24 Oct 2009 12:49:26 -0400 Received: from mail-ew0-f228.google.com ([209.85.219.228]:36636) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1N1jnx-00017X-Rs for emacs-orgmode@gnu.org; Sat, 24 Oct 2009 12:49:26 -0400 Received: by ewy28 with SMTP id 28so3891309ewy.42 for ; Sat, 24 Oct 2009 09:49:24 -0700 (PDT) In-Reply-To: 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: Kai Tetzlaff Cc: emacs-orgmode@gnu.org Hi Kai, On Oct 23, 2009, at 9:01 AM, Kai Tetzlaff wrote: > Hi, > > i noticed that when using the org-mode clock persistence, the stored > clock data gets deleted when i start emacs and exit again without > turning on org-mode in between. > > When looking at org-clock-persistence-insinuate it looks like org- > clock > load will only run after org-mode gets started whereas org-clock-save > will always be called when exiting emacs: > > (defun org-clock-persistence-insinuate () > "Set up hooks for clock persistence" > (add-hook 'org-mode-hook 'org-clock-load) > (add-hook 'kill-emacs-hook 'org-clock-save)) > > Not running org-mode-hook (i.e. not starting org-mode) thus does not > load clock data but org-clock-save overwrites any prviously saved data > when exiting emacs. > > An easy fix for that would be to just add org-clock-load to e.g. > emacs-startup-hook. But this will only work if the code in > org-clock-load does not depend on any org-mode initialization code (or > would require loading org-mode). > > So org-clock-save should probably check if org-clock-load has been > running during the current emacs session (or if clock persistence was > just enabled) and only then save clock data when exiting emacs. I > tried > to add this to the code in org-clock-save: > > diff --git a/lisp/org-clock.el b/lisp/org-clock.el > index c7ebbf8..c0fe4e6 100644 > --- a/lisp/org-clock.el > +++ b/lisp/org-clock.el > @@ -1803,7 +1803,8 @@ This function is made for clock tables." > "Persist various clock-related data to disk. > The details of what will be saved are regulated by the variable > `org-clock-persist'." > - (when org-clock-persist > + (when (and org-clock-persist > + (or org-clock-loaded (not (file-exists-p > org-clock-persist-file)))) > (let (b) > (with-current-buffer (find-file (expand-file-name > org-clock-persist-file)) > (progn > > > /Kai > > diff --git a/lisp/org-clock.el b/lisp/org-clock.el > index c7ebbf8..c0fe4e6 100644 > --- a/lisp/org-clock.el > +++ b/lisp/org-clock.el > @@ -1803,7 +1803,8 @@ This function is made for clock tables." > "Persist various clock-related data to disk. > The details of what will be saved are regulated by the variable > `org-clock-persist'." > - (when org-clock-persist > + (when (and org-clock-persist > + (or org-clock-loaded (not (file-exists-p org-clock- > persist-file)))) > (let (b) > (with-current-buffer (find-file (expand-file-name org-clock- > persist-file)) > (progn I see you point, but I am not convinced that you fix is the right one. What one really wants to do is save the clock and history if and only if the clock has been used in the current session. So I guess it is better to create a special variable org-clock-used-in-this-session which then will be set to t each time clock-in starts a clock somewhere. I believe this would be a better insurance policy. Would you like to try your hand at a patch in this spirit? - Carsten > _______________________________________________ > Emacs-orgmode mailing list > Remember: use `Reply All' to send replies to the list. > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode - Carsten