From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bernt Hansen Subject: [PATCH] Fix marker in no buffer error for task state change in an indirect buffer Date: Sat, 19 Nov 2011 16:44:07 -0500 Message-ID: <1321739047-11936-1-git-send-email-bernt@norang.ca> References: Return-path: Received: from eggs.gnu.org ([140.186.70.92]:35461) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RRshs-00077v-7N for emacs-orgmode@gnu.org; Sat, 19 Nov 2011 16:44:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RRshr-0007he-7d for emacs-orgmode@gnu.org; Sat, 19 Nov 2011 16:44:16 -0500 Received: from mho-03-ewr.mailhop.org ([204.13.248.66]:32508 helo=mho-01-ewr.mailhop.org) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RRshr-0007ha-4g for emacs-orgmode@gnu.org; Sat, 19 Nov 2011 16:44:15 -0500 In-Reply-To: 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: emacs-orgmode@gnu.org Cc: Bernt Hansen , carsten.dominik@gmail.com * lisp/org-clock.el (org-clock-out-if-current): Fix marker in no buffer error for task state change in an indirect buffer org-clock-out-when-current was enhanced in 098cf35 (Clock: Clock out when done also in indirect buffers, 2009-03-23) to handle indirect buffers. This enhancement uses (buffer-base-buffer (org-clocking-buffer)) but when not clocking (org-clocking-buffer) returns nil - so buffer-base-buffer returns the base buffer of the current buffer which is never nil. This leads to marker in no buffer errors trying to stop the clock when it is not running. Now we explicitly check up front that the clock is running before any other conditions that lead to stopping the clock. --- cc:ing Carsten since this is his code Hi Dave, After much difficulty I was able to reproduce this problem. It would have been helpful to include basic information about what triggers the bug for you. - clock is not running - You are working in an indirect buffer - You change a todo state keyword to DONE This works fine for me when not in an indirect buffer. The git commit you have referenced in this report is not part of the org repository which also made me think you had local changes that affected this issue since I couldn't reproduce it for the first 20 minutes of looking at this issue. Please try this patch and report back if it works or not. Thanks, Bernt lisp/org-clock.el | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/lisp/org-clock.el b/lisp/org-clock.el index 5dbe4dc..9107400 100644 --- a/lisp/org-clock.el +++ b/lisp/org-clock.el @@ -1696,7 +1696,8 @@ from the `before-change-functions' in the current buffer." "Clock out if the current entry contains the running clock. This is used to stop the clock after a TODO entry is marked DONE, and is only done if the variable `org-clock-out-when-done' is not nil." - (when (and org-clock-out-when-done + (when (and (org-clocking-p) + org-clock-out-when-done (or (and (eq t org-clock-out-when-done) (member state org-done-keywords)) (and (listp org-clock-out-when-done) -- 1.7.8.rc3