Hi Moritz & Bastien, This bug fix seems not to be complete. At least switching the todo state in repeated tasks and in conjunction with org-checklist didn't work for me as it used to before the last update. PFA a patch that solved the problem for me.
ATTENTION: Please check this patch very carefully. This is my first contribution to org-mode and my first patch ever. My lisp knowledge is rudimentary and I do not really understand the code. Thanks to all developers for your work! Best regards Michael Strey On Sun, Apr 01, 2012 at 05:01:12PM +0200, Moritz Ulrich wrote: > Commit 6cbf1f417222321a47848a7368427ba8a22fe3a5 renames variable > `last-state' to `org-last-state' in org.el. This change isn't > reflected in function `org-todo'. > > That causes the following regression: Toggling a TODO state to DONE on > a headline via C-c C-t (`org-todo') results in: "Symbol's value as > variable is void: org-last-state". > This is reproducible in latest HEAD and even in tag 'release_7.8.07'. > > M-x emacs-version: GNU Emacs 24.0.94.1 (i386-apple-darwin11.3.0, NS > apple-appkit-1138.32) of 2012-03-12 on moritz-macbook.local > > The attached patch contains a simple (two line) fix.
From 554b1ece898c9aaff47e729d6fa746ec21b5eefd Mon Sep 17 00:00:00 2001 From: Michael Strey <mst...@strey.biz> Date: Mon, 2 Apr 2012 16:21:34 +0200 Subject: [PATCH] s/state/org-state/ --- contrib/lisp/org-checklist.el | 2 +- lisp/org.el | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/contrib/lisp/org-checklist.el b/contrib/lisp/org-checklist.el index a974874..03c7547 100644 --- a/contrib/lisp/org-checklist.el +++ b/contrib/lisp/org-checklist.el @@ -129,7 +129,7 @@ of checkbox items" (a2ps-buffer))))))))) (defun org-checklist () - (when (member state org-done-keywords) + (when (member org-state org-done-keywords) (org-make-checklist-export) (org-reset-checkbox-state-maybe))) diff --git a/lisp/org.el b/lisp/org.el index 9183743..bf30497 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -2429,7 +2429,7 @@ When nil, only the date will be recorded." (defcustom org-log-note-headings '((done . "CLOSING NOTE %t") - (state . "State %-12s from %-12S %t") + (org-state . "State %-12s from %-12S %t") (note . "Note taken on %t") (reschedule . "Rescheduled from %S on %t") (delschedule . "Not scheduled, was %S on %t") @@ -2458,7 +2458,7 @@ agenda log mode depends on the format of these entries." (cons (const :tag "Heading when closing an item" done) string) (cons (const :tag "Heading when changing todo state (todo sequence only)" - state) string) + org-state) string) (cons (const :tag "Heading when just taking a note" note) string) (cons (const :tag "Heading when clocking out" clock-out) string) (cons (const :tag "Heading when an item is no longer scheduled" delschedule) string) @@ -11437,10 +11437,10 @@ For calling through lisp, arg is also interpreted in the following way: ;; It is now done, and it was not done before (org-add-planning-info 'closed (org-current-effective-time)) (if (and (not dolog) (eq 'note org-log-done)) - (org-add-log-setup 'done state this 'findpos 'note))) + (org-add-log-setup 'done org-state this 'findpos 'note))) (when (and org-state dolog) ;; This is a non-nil state, and we need to log it - (org-add-log-setup 'state org-state this 'findpos dolog))) + (org-add-log-setup 'org-state org-state this 'findpos dolog))) ;; Fixup tag positioning (org-todo-trigger-tag-changes org-state) (and org-auto-align-tags (not org-setting-tags) (org-set-tags nil t)) @@ -11938,7 +11938,7 @@ This function is run automatically after each state change to a DONE state." (org-todo-log-states nil) re type n what ts time to-state) (when repeat - (if (eq org-log-repeat t) (setq org-log-repeat 'state)) + (if (eq org-log-repeat t) (setq org-log-repeat 'org-state)) (setq to-state (or (org-entry-get nil "REPEAT_TO_STATE") org-todo-repeat-to-state)) (unless (and to-state (member to-state org-todo-keywords-1)) @@ -11955,7 +11955,7 @@ This function is run automatically after each state change to a DONE state." ;; make sure we take a note, not only a time stamp (setq org-log-note-how 'note)) ;; Set up for taking a record - (org-add-log-setup 'state (or done-word (car org-done-keywords)) + (org-add-log-setup 'org-state (or done-word (car org-done-keywords)) org-last-state 'findpos org-log-repeat))) (org-back-to-heading t) @@ -12377,7 +12377,7 @@ EXTRA is additional text that will be inserted into the notes buffer." (cond ((eq org-log-note-purpose 'clock-out) "stopped clock") ((eq org-log-note-purpose 'done) "closed todo item") - ((eq org-log-note-purpose 'state) + ((eq org-log-note-purpose 'org-state) (format "state change from \"%s\" to \"%s\"" (or org-log-note-previous-state "") (or org-log-note-state ""))) -- 1.7.9.4