emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* cache problem, with ECM
@ 2014-07-09  8:11 Alan Schmitt
  2014-07-11  6:50 ` Alan Schmitt
  2014-07-17 14:43 ` Nicolas Goaziou
  0 siblings, 2 replies; 6+ messages in thread
From: Alan Schmitt @ 2014-07-09  8:11 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 46570 bytes --]

Hello,

I noticed this morning, after updating org-mode to the latest version,
that I would get an error with a trace related to a cache even if a just
started emacs. It took me a while to get down to an ECM, but here it is.

The init file used:


--8<---------------cut here---------------start------------->8---
;; use with "open /Applications/Emacs.app --args -Q -l ~/tmp/init-org.el"

(add-to-list 'load-path "/Users/schmitta/projets/org-mode/lisp")

(require 'org)

(toggle-debug-on-error)

(setq org-log-into-drawer t)

(setq org-todo-keywords
       '((sequence "TODO(t)" "NEXT(n)" "|" "DONE(d!/!)")
         (sequence "WAITING(w@/!)" "HOLD(h@/!)" "|" "CANCELLED(c@/!)")))
--8<---------------cut here---------------end--------------->8---

The crucial parts seem to be the 'org-log-into-drawer' and the fact that
switching out of WAITING triggers a note.

Here is an org file showing the problem

--8<---------------cut here---------------start------------->8---
#+STARTUP: hidestars
* Perso
:PROPERTIES:
:CATEGORY: Perso
:END:
** DONE bar
   :LOGBOOK:
   - State "DONE"       from "TODO"       [2014-07-06 Sun 19:22]
   :END:
  [2014-07-06 Sun 10:01]
** WAITING foo 							       :@fun:
  SCHEDULED: <2014-07-09 Wed>
  :PROPERTIES:
  :ID:       79A4028E-DBDA-49D4-AD39-BD2786EF9FBD
  :END:
* Hacking
:PROPERTIES:
:CATEGORY: Hacking
:END:
--8<---------------cut here---------------end--------------->8---

I tried removing many things (like headling before or after the issue,
the hidestars, or the tag), but removing each one makes the problem go
away.

The problem occurs when I do "C-c C-t d" on the WAITING headline, which
results in this big backtrace:

Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p nil)
  +(nil 6 7)
  (let ((limit (+ (aref request 1) (aref request 3) extra))) (if (and threshold (< threshold limit)) (progn (throw (quote interrupt) nil))) (let ((parent (org-element--parse-to limit t time-limit))) (aset request 5 parent) (aset request 6 2) (throw (quote end-phase) nil)))
  (catch (quote end-phase) (if (equal (aref request 0) next) (progn (throw (quote quit) t))) (let ((limit (+ (aref request 1) (aref request 3) extra))) (if (and threshold (< threshold limit)) (progn (throw (quote interrupt) nil))) (let ((parent (org-element--parse-to limit t time-limit))) (aset request 5 parent) (aset request 6 2) (throw (quote end-phase) nil))))
  (progn (catch (quote end-phase) (if (equal (aref request 0) next) (progn (throw (quote quit) t))) (let ((limit (+ (aref request 1) (aref request 3) extra))) (if (and threshold (< threshold limit)) (progn (throw (quote interrupt) nil))) (let ((parent (org-element--parse-to limit t time-limit))) (aset request 5 parent) (aset request 6 2) (throw (quote end-phase) nil)))))
  (if (= (aref request 6) 1) (progn (catch (quote end-phase) (if (equal (aref request 0) next) (progn (throw (quote quit) t))) (let ((limit (+ (aref request 1) (aref request 3) extra))) (if (and threshold (< threshold limit)) (progn (throw (quote interrupt) nil))) (let ((parent (org-element--parse-to limit t time-limit))) (aset request 5 parent) (aset request 6 2) (throw (quote end-phase) nil))))))
  (catch (quote quit) (if (= (aref request 6) 0) (progn (catch (quote end-phase) (let ((beg (aref request 0)) (end (aref request 2)) (outreach (aref request 4))) (while t (if (org-element--cache-interrupt-p time-limit) (progn ...)) (let (... data data-key) (while node ...) (if data ... ...))))))) (if (= (aref request 6) 1) (progn (catch (quote end-phase) (if (equal (aref request 0) next) (progn (throw (quote quit) t))) (let ((limit (+ ... ... extra))) (if (and threshold (< threshold limit)) (progn (throw ... nil))) (let ((parent ...)) (aset request 5 parent) (aset request 6 2) (throw (quote end-phase) nil)))))) (let ((start (aref request 0)) (offset (aref request 3)) (parent (aref request 5)) (node (org-element--cache-root)) (stack (list nil)) (leftp t) exit-flag) (if (and (not parent) (zerop offset)) (progn (throw (quote quit) t))) (while node (let* ((data (progn (aref node 2))) (key (org-element--cache-key data))) (if (and leftp (progn (aref node 0)) (not (org-element--cache-key-less-p key start))) (progn (setq stack (cons node stack)) (setq node (progn ...))) (if (org-element--cache-key-less-p key start) nil (if (equal key next) (progn ...)) (if (or exit-flag ...) (progn ... ... ...)) (if (zerop offset) nil (org-element--cache-shift-positions data offset) (progn ...)) (let (...) (while ... ...) (cond ... ...) (if ... ...))) (setq node (if (setq leftp ...) (progn ...) (car ...)))))) t))
  org-element--cache-process-request([339 nil 253 6 nil nil 1] nil 334 nil 7)
  (while org-element--cache-sync-requests (setq request (car org-element--cache-sync-requests) next (nth 1 org-element--cache-sync-requests)) (org-element--cache-process-request request (and next (aref next 0)) threshold (and (not threshold) (time-add (current-time) org-element-cache-sync-duration)) (or extra 0)) (if next (progn (let* ((v next)) (aset v 3 (+ (aref v 3) (aref request 3)))) (aset next 2 (aref request 2)) (aset next 6 (aref request 6)))) (setq org-element--cache-sync-requests (cdr org-element--cache-sync-requests)))
  (catch (quote interrupt) (while org-element--cache-sync-requests (setq request (car org-element--cache-sync-requests) next (nth 1 org-element--cache-sync-requests)) (org-element--cache-process-request request (and next (aref next 0)) threshold (and (not threshold) (time-add (current-time) org-element-cache-sync-duration)) (or extra 0)) (if next (progn (let* ((v next)) (aset v 3 (+ (aref v 3) (aref request 3)))) (aset next 2 (aref request 2)) (aset next 6 (aref request 6)))) (setq org-element--cache-sync-requests (cdr org-element--cache-sync-requests))))
  (let ((inhibit-quit t) request next) (if org-element--cache-sync-timer (progn (cancel-timer org-element--cache-sync-timer))) (catch (quote interrupt) (while org-element--cache-sync-requests (setq request (car org-element--cache-sync-requests) next (nth 1 org-element--cache-sync-requests)) (org-element--cache-process-request request (and next (aref next 0)) threshold (and (not threshold) (time-add (current-time) org-element-cache-sync-duration)) (or extra 0)) (if next (progn (let* ((v next)) (aset v 3 (+ ... ...))) (aset next 2 (aref request 2)) (aset next 6 (aref request 6)))) (setq org-element--cache-sync-requests (cdr org-element--cache-sync-requests)))) (if org-element--cache-sync-requests (org-element--cache-set-timer buffer) (clrhash org-element--cache-sync-keys)))
  (save-current-buffer (set-buffer buffer) (let ((inhibit-quit t) request next) (if org-element--cache-sync-timer (progn (cancel-timer org-element--cache-sync-timer))) (catch (quote interrupt) (while org-element--cache-sync-requests (setq request (car org-element--cache-sync-requests) next (nth 1 org-element--cache-sync-requests)) (org-element--cache-process-request request (and next (aref next 0)) threshold (and (not threshold) (time-add (current-time) org-element-cache-sync-duration)) (or extra 0)) (if next (progn (let* (...) (aset v 3 ...)) (aset next 2 (aref request 2)) (aset next 6 (aref request 6)))) (setq org-element--cache-sync-requests (cdr org-element--cache-sync-requests)))) (if org-element--cache-sync-requests (org-element--cache-set-timer buffer) (clrhash org-element--cache-sync-keys))))
  (progn (save-current-buffer (set-buffer buffer) (let ((inhibit-quit t) request next) (if org-element--cache-sync-timer (progn (cancel-timer org-element--cache-sync-timer))) (catch (quote interrupt) (while org-element--cache-sync-requests (setq request (car org-element--cache-sync-requests) next (nth 1 org-element--cache-sync-requests)) (org-element--cache-process-request request (and next (aref next 0)) threshold (and (not threshold) (time-add ... org-element-cache-sync-duration)) (or extra 0)) (if next (progn (let* ... ...) (aset next 2 ...) (aset next 6 ...))) (setq org-element--cache-sync-requests (cdr org-element--cache-sync-requests)))) (if org-element--cache-sync-requests (org-element--cache-set-timer buffer) (clrhash org-element--cache-sync-keys)))))
  (if (buffer-live-p buffer) (progn (save-current-buffer (set-buffer buffer) (let ((inhibit-quit t) request next) (if org-element--cache-sync-timer (progn (cancel-timer org-element--cache-sync-timer))) (catch (quote interrupt) (while org-element--cache-sync-requests (setq request (car org-element--cache-sync-requests) next (nth 1 org-element--cache-sync-requests)) (org-element--cache-process-request request (and next ...) threshold (and ... ...) (or extra 0)) (if next (progn ... ... ...)) (setq org-element--cache-sync-requests (cdr org-element--cache-sync-requests)))) (if org-element--cache-sync-requests (org-element--cache-set-timer buffer) (clrhash org-element--cache-sync-keys))))))
  org-element--cache-sync(#<buffer waiting_bug.org> 334 7)
  (progn (org-element--cache-sync (current-buffer) end offset))
  (if next (progn (org-element--cache-sync (current-buffer) end offset)))
  (if (and next (zerop (aref next 6)) (> (setq delete-to (+ (aref next 2) (aref next 3))) end) (<= (setq delete-from (aref next 1)) end)) (progn (let* ((v next)) (aset v 3 (+ (aref v 3) offset))) (if (> beg delete-from) (let ((up (aref next 5))) (while up (org-element--cache-shift-positions up offset (quote (:contents-end :end))) (setq up (org-element-property :parent up)))) (let ((first (org-element--cache-for-removal beg delete-to offset))) (if first (progn (aset next 0 (org-element--cache-key first)) (aset next 1 (org-element-property :begin first)) (aset next 5 (org-element-property :parent first))))))) (if next (progn (org-element--cache-sync (current-buffer) end offset))) (let ((first (org-element--cache-for-removal beg end offset))) (if first (setq org-element--cache-sync-requests (cons (let ((beg ...) (key ...)) (cond (... ...) (...) (t ...))) org-element--cache-sync-requests)) (if org-element--cache-sync-requests (progn (let* ((v ...)) (aset v 3 (+ ... offset))))))))
  (let ((next (car org-element--cache-sync-requests)) delete-to delete-from) (if (and next (zerop (aref next 6)) (> (setq delete-to (+ (aref next 2) (aref next 3))) end) (<= (setq delete-from (aref next 1)) end)) (progn (let* ((v next)) (aset v 3 (+ (aref v 3) offset))) (if (> beg delete-from) (let ((up (aref next 5))) (while up (org-element--cache-shift-positions up offset (quote ...)) (setq up (org-element-property :parent up)))) (let ((first (org-element--cache-for-removal beg delete-to offset))) (if first (progn (aset next 0 ...) (aset next 1 ...) (aset next 5 ...)))))) (if next (progn (org-element--cache-sync (current-buffer) end offset))) (let ((first (org-element--cache-for-removal beg end offset))) (if first (setq org-element--cache-sync-requests (cons (let (... ...) (cond ... ... ...)) org-element--cache-sync-requests)) (if org-element--cache-sync-requests (progn (let* (...) (aset v 3 ...))))))))
  org-element--cache-submit-request(223 334 7)
  (let ((offset (- end beg pre))) (org-element--cache-submit-request top (- bottom offset) offset))
  (let ((top (point)) (bottom (save-excursion (goto-char end) (line-end-position)))) (if (cond ((memql org-element--cache-change-warning (quote (t))) t) ((eql org-element--cache-change-warning (quote headline)) (not (and (let* (... ... ... ...) (org-at-heading-p)) (= (line-end-position) bottom)))) (t (let ((case-fold-search t)) (re-search-forward org-element--cache-sensitive-re bottom t)))) (progn (let* ((org-called-with-limited-levels t) (org-outline-regexp (org-get-limited-outline-regexp)) (outline-regexp org-outline-regexp) (org-outline-regexp-bol (concat "^" org-outline-regexp))) (setq top (progn (goto-char top) (if (outline-previous-heading) (progn ...)) (point))) (setq bottom (progn (goto-char bottom) (if (outline-next-heading) (1- ...) (point))))))) (let ((offset (- end beg pre))) (org-element--cache-submit-request top (- bottom offset) offset)))
  (progn (let ((top (point)) (bottom (save-excursion (goto-char end) (line-end-position)))) (if (cond ((memql org-element--cache-change-warning (quote (t))) t) ((eql org-element--cache-change-warning (quote headline)) (not (and (let* ... ...) (= ... bottom)))) (t (let ((case-fold-search t)) (re-search-forward org-element--cache-sensitive-re bottom t)))) (progn (let* ((org-called-with-limited-levels t) (org-outline-regexp (org-get-limited-outline-regexp)) (outline-regexp org-outline-regexp) (org-outline-regexp-bol (concat "^" org-outline-regexp))) (setq top (progn (goto-char top) (if ... ...) (point))) (setq bottom (progn (goto-char bottom) (if ... ... ...)))))) (let ((offset (- end beg pre))) (org-element--cache-submit-request top (- bottom offset) offset))))
  (unwind-protect (progn (let ((top (point)) (bottom (save-excursion (goto-char end) (line-end-position)))) (if (cond ((memql org-element--cache-change-warning (quote ...)) t) ((eql org-element--cache-change-warning (quote headline)) (not (and ... ...))) (t (let (...) (re-search-forward org-element--cache-sensitive-re bottom t)))) (progn (let* ((org-called-with-limited-levels t) (org-outline-regexp ...) (outline-regexp org-outline-regexp) (org-outline-regexp-bol ...)) (setq top (progn ... ... ...)) (setq bottom (progn ... ...))))) (let ((offset (- end beg pre))) (org-element--cache-submit-request top (- bottom offset) offset)))) (set-match-data save-match-data-internal (quote evaporate)))
  (let ((save-match-data-internal (match-data))) (unwind-protect (progn (let ((top (point)) (bottom (save-excursion (goto-char end) (line-end-position)))) (if (cond ((memql org-element--cache-change-warning ...) t) ((eql org-element--cache-change-warning ...) (not ...)) (t (let ... ...))) (progn (let* (... ... ... ...) (setq top ...) (setq bottom ...)))) (let ((offset (- end beg pre))) (org-element--cache-submit-request top (- bottom offset) offset)))) (set-match-data save-match-data-internal (quote evaporate))))
  (save-restriction (widen) (goto-char beg) (beginning-of-line) (let ((save-match-data-internal (match-data))) (unwind-protect (progn (let ((top (point)) (bottom (save-excursion ... ...))) (if (cond (... t) (... ...) (t ...)) (progn (let* ... ... ...))) (let ((offset ...)) (org-element--cache-submit-request top (- bottom offset) offset)))) (set-match-data save-match-data-internal (quote evaporate)))))
  (save-excursion (save-restriction (widen) (goto-char beg) (beginning-of-line) (let ((save-match-data-internal (match-data))) (unwind-protect (progn (let ((top ...) (bottom ...)) (if (cond ... ... ...) (progn ...)) (let (...) (org-element--cache-submit-request top ... offset)))) (set-match-data save-match-data-internal (quote evaporate))))))
  (progn (save-excursion (save-restriction (widen) (goto-char beg) (beginning-of-line) (let ((save-match-data-internal (match-data))) (unwind-protect (progn (let (... ...) (if ... ...) (let ... ...))) (set-match-data save-match-data-internal (quote evaporate)))))) (org-element--cache-set-timer (current-buffer)))
  (if (org-element--cache-active-p) (progn (save-excursion (save-restriction (widen) (goto-char beg) (beginning-of-line) (let ((save-match-data-internal (match-data))) (unwind-protect (progn (let ... ... ...)) (set-match-data save-match-data-internal (quote evaporate)))))) (org-element--cache-set-timer (current-buffer))))
  org-element--cache-after-change(261 268 0)
  insert("\n:" "LOGBOOK" ":\n:END:")
  (if (re-search-forward (concat "^[ 	]*:" drawer ":[ 	]*$") nil t) (progn (goto-char (match-end 0)) (or org-log-states-order-reversed (and (re-search-forward org-property-end-re nil t) (goto-char (1- (match-beginning 0)))))) (insert "\n:" drawer ":\n:END:") (beginning-of-line 0) (org-indent-line) (beginning-of-line 2) (org-indent-line) (end-of-line 0))
  (cond (drawer (if (re-search-forward (concat "^[ 	]*:" drawer ":[ 	]*$") nil t) (progn (goto-char (match-end 0)) (or org-log-states-order-reversed (and (re-search-forward org-property-end-re nil t) (goto-char (1- ...))))) (insert "\n:" drawer ":\n:END:") (beginning-of-line 0) (org-indent-line) (beginning-of-line 2) (org-indent-line) (end-of-line 0))) ((and org-log-state-notes-insert-after-drawers (save-excursion (forward-line) (looking-at org-drawer-regexp))) (forward-line) (while (looking-at org-drawer-regexp) (goto-char (match-end 0)) (re-search-forward org-property-end-re (point-max) t) (forward-line)) (forward-line -1)))
  (progn (org-back-to-heading t) (narrow-to-region (point) (save-excursion (outline-next-heading) (point))) (looking-at (concat org-outline-regexp "\\( *\\)[^\n]*" "\\(\n[^\n]*?" org-keyword-time-not-clock-regexp "[^\n]*\\)?")) (goto-char (match-end 0)) (cond (drawer (if (re-search-forward (concat "^[ 	]*:" drawer ":[ 	]*$") nil t) (progn (goto-char (match-end 0)) (or org-log-states-order-reversed (and (re-search-forward org-property-end-re nil t) (goto-char ...)))) (insert "\n:" drawer ":\n:END:") (beginning-of-line 0) (org-indent-line) (beginning-of-line 2) (org-indent-line) (end-of-line 0))) ((and org-log-state-notes-insert-after-drawers (save-excursion (forward-line) (looking-at org-drawer-regexp))) (forward-line) (while (looking-at org-drawer-regexp) (goto-char (match-end 0)) (re-search-forward org-property-end-re (point-max) t) (forward-line)) (forward-line -1))) (if org-log-states-order-reversed nil (and (= (char-after) 10) (forward-char 1)) (org-skip-over-state-notes) (skip-chars-backward " 	\n")))
  (if findpos (progn (org-back-to-heading t) (narrow-to-region (point) (save-excursion (outline-next-heading) (point))) (looking-at (concat org-outline-regexp "\\( *\\)[^\n]*" "\\(\n[^\n]*?" org-keyword-time-not-clock-regexp "[^\n]*\\)?")) (goto-char (match-end 0)) (cond (drawer (if (re-search-forward (concat "^[ 	]*:" drawer ":[ 	]*$") nil t) (progn (goto-char (match-end 0)) (or org-log-states-order-reversed (and ... ...))) (insert "\n:" drawer ":\n:END:") (beginning-of-line 0) (org-indent-line) (beginning-of-line 2) (org-indent-line) (end-of-line 0))) ((and org-log-state-notes-insert-after-drawers (save-excursion (forward-line) (looking-at org-drawer-regexp))) (forward-line) (while (looking-at org-drawer-regexp) (goto-char (match-end 0)) (re-search-forward org-property-end-re (point-max) t) (forward-line)) (forward-line -1))) (if org-log-states-order-reversed nil (and (= (char-after) 10) (forward-char 1)) (org-skip-over-state-notes) (skip-chars-backward " 	\n"))))
  (save-excursion (if findpos (progn (org-back-to-heading t) (narrow-to-region (point) (save-excursion (outline-next-heading) (point))) (looking-at (concat org-outline-regexp "\\( *\\)[^\n]*" "\\(\n[^\n]*?" org-keyword-time-not-clock-regexp "[^\n]*\\)?")) (goto-char (match-end 0)) (cond (drawer (if (re-search-forward (concat "^[ 	]*:" drawer ":[ 	]*$") nil t) (progn (goto-char ...) (or org-log-states-order-reversed ...)) (insert "\n:" drawer ":\n:END:") (beginning-of-line 0) (org-indent-line) (beginning-of-line 2) (org-indent-line) (end-of-line 0))) ((and org-log-state-notes-insert-after-drawers (save-excursion (forward-line) (looking-at org-drawer-regexp))) (forward-line) (while (looking-at org-drawer-regexp) (goto-char (match-end 0)) (re-search-forward org-property-end-re (point-max) t) (forward-line)) (forward-line -1))) (if org-log-states-order-reversed nil (and (= (char-after) 10) (forward-char 1)) (org-skip-over-state-notes) (skip-chars-backward " 	\n")))) (move-marker org-log-note-marker (point)) (setq org-log-note-purpose purpose org-log-note-state state org-log-note-previous-state prev-state org-log-note-how how org-log-note-extra extra org-log-note-effective-time (org-current-effective-time)) (add-hook (quote post-command-hook) (quote org-add-log-note) (quote append)))
  (save-restriction (save-excursion (if findpos (progn (org-back-to-heading t) (narrow-to-region (point) (save-excursion (outline-next-heading) (point))) (looking-at (concat org-outline-regexp "\\( *\\)[^\n]*" "\\(\n[^\n]*?" org-keyword-time-not-clock-regexp "[^\n]*\\)?")) (goto-char (match-end 0)) (cond (drawer (if (re-search-forward ... nil t) (progn ... ...) (insert "\n:" drawer ":\n:END:") (beginning-of-line 0) (org-indent-line) (beginning-of-line 2) (org-indent-line) (end-of-line 0))) ((and org-log-state-notes-insert-after-drawers (save-excursion ... ...)) (forward-line) (while (looking-at org-drawer-regexp) (goto-char ...) (re-search-forward org-property-end-re ... t) (forward-line)) (forward-line -1))) (if org-log-states-order-reversed nil (and (= (char-after) 10) (forward-char 1)) (org-skip-over-state-notes) (skip-chars-backward " 	\n")))) (move-marker org-log-note-marker (point)) (setq org-log-note-purpose purpose org-log-note-state state org-log-note-previous-state prev-state org-log-note-how how org-log-note-extra extra org-log-note-effective-time (org-current-effective-time)) (add-hook (quote post-command-hook) (quote org-add-log-note) (quote append))))
  (let* ((org-log-into-drawer (org-log-into-drawer)) (drawer (cond ((stringp org-log-into-drawer) org-log-into-drawer) (org-log-into-drawer "LOGBOOK")))) (save-restriction (save-excursion (if findpos (progn (org-back-to-heading t) (narrow-to-region (point) (save-excursion (outline-next-heading) (point))) (looking-at (concat org-outline-regexp "\\( *\\)[^\n]*" "\\(\n[^\n]*?" org-keyword-time-not-clock-regexp "[^\n]*\\)?")) (goto-char (match-end 0)) (cond (drawer (if ... ... ... ... ... ... ... ...)) ((and org-log-state-notes-insert-after-drawers ...) (forward-line) (while ... ... ... ...) (forward-line -1))) (if org-log-states-order-reversed nil (and (= ... 10) (forward-char 1)) (org-skip-over-state-notes) (skip-chars-backward " 	\n")))) (move-marker org-log-note-marker (point)) (setq org-log-note-purpose purpose org-log-note-state state org-log-note-previous-state prev-state org-log-note-how how org-log-note-extra extra org-log-note-effective-time (org-current-effective-time)) (add-hook (quote post-command-hook) (quote org-add-log-note) (quote append)))))
  org-add-log-setup(state #("DONE" 0 4 (face org-done)) #("WAITING" 0 7 (fontified t face org-todo)) findpos time)
  (progn (org-add-log-setup (quote state) org-state this (quote findpos) dolog))
  (if (and org-state dolog) (progn (org-add-log-setup (quote state) org-state this (quote findpos) dolog)))
  (progn (setq dolog (or (nth 1 (assoc org-state org-todo-log-states)) (nth 2 (assoc this org-todo-log-states)))) (if (and (eq dolog (quote note)) (eq org-inhibit-logging (quote note))) (setq dolog (quote time))) (if (or (and (not org-state) (not org-closed-keep-when-no-todo)) (and org-state (member org-state org-not-done-keywords) (not (member this org-not-done-keywords)))) (progn (org-add-planning-info nil nil (quote closed)))) (if (and now-done-p org-log-done) (progn (org-add-planning-info (quote closed) (org-current-effective-time)) (if (and (not dolog) (eq (quote note) org-log-done)) (org-add-log-setup (quote done) org-state this (quote findpos) (quote note))))) (if (and org-state dolog) (progn (org-add-log-setup (quote state) org-state this (quote findpos) dolog))))
  (if (and (or org-todo-log-states org-log-done) (not (eq org-inhibit-logging t)) (not (memq arg (quote (nextset previousset))))) (progn (setq dolog (or (nth 1 (assoc org-state org-todo-log-states)) (nth 2 (assoc this org-todo-log-states)))) (if (and (eq dolog (quote note)) (eq org-inhibit-logging (quote note))) (setq dolog (quote time))) (if (or (and (not org-state) (not org-closed-keep-when-no-todo)) (and org-state (member org-state org-not-done-keywords) (not (member this org-not-done-keywords)))) (progn (org-add-planning-info nil nil (quote closed)))) (if (and now-done-p org-log-done) (progn (org-add-planning-info (quote closed) (org-current-effective-time)) (if (and (not dolog) (eq (quote note) org-log-done)) (org-add-log-setup (quote done) org-state this (quote findpos) (quote note))))) (if (and org-state dolog) (progn (org-add-log-setup (quote state) org-state this (quote findpos) dolog)))))
  (let* ((match-data (match-data)) (startpos (point-at-bol)) (logging (let ((save-match-data-internal (match-data))) (unwind-protect (progn (org-entry-get nil "LOGGING" t t)) (set-match-data save-match-data-internal (quote evaporate))))) (org-log-done org-log-done) (org-log-repeat org-log-repeat) (org-todo-log-states org-todo-log-states) (org-inhibit-logging (if (equal arg 0) (progn (setq arg nil) (quote note)) org-inhibit-logging)) (this (match-string 1)) (hl-pos (match-beginning 0)) (head (org-get-todo-sequence-head this)) (ass (assoc head org-todo-kwd-alist)) (interpret (nth 1 ass)) (done-word (nth 3 ass)) (final-done-word (nth 4 ass)) (org-last-state (or this "")) (completion-ignore-case t) (member (member this org-todo-keywords-1)) (tail (cdr member)) (org-state (cond ((and org-todo-key-trigger (or (and ... ...) (and ... org-use-fast-todo-selection ...))) (org-fast-todo-selection)) ((and (equal arg (quote ...)) (or (not org-use-fast-todo-selection) (not org-todo-key-trigger))) (org-icompleting-read "State: " (mapcar (quote list) org-todo-keywords-1) nil t)) ((eq arg (quote right)) (if this (if tail (car tail) nil) (car org-todo-keywords-1))) ((eq arg (quote left)) (if (equal member org-todo-keywords-1) nil (if this (nth ... org-todo-keywords-1) (org-last org-todo-keywords-1)))) ((and (eq org-use-fast-todo-selection t) (equal arg (quote ...)) (setq arg nil))) (arg (cond ((equal arg "") nil) ((eq arg ...) nil) ((eq arg ...) (or done-word ...)) ((eq arg ...) (or ... ...)) ((eq arg ...) (let ... ...)) ((car ...)) ((stringp arg) (user-error "State `%s' not valid in this file" arg)) ((nth ... org-todo-keywords-1)))) ((null member) (or head (car org-todo-keywords-1))) ((equal this final-done-word) nil) ((null tail) nil) ((memq interpret (quote (type priority))) (if (eq this-command last-command) (car tail) (if (> ... 0) (or done-word ...) nil))) (t (car tail)))) (org-state (or (run-hook-with-args-until-success (quote org-todo-get-default-hook) org-state org-last-state) org-state)) (next (if org-state (concat " " org-state " ") " ")) (change-plist (list :type (quote todo-state-change) :from this :to org-state :position startpos)) dolog now-done-p) (if org-blocker-hook (progn (setq org-last-todo-state-is-todo (not (member this org-done-keywords))) (if (save-excursion (let ((save-match-data-internal ...)) (unwind-protect (progn ...) (set-match-data save-match-data-internal ...)))) nil (if (with-no-warnings (called-interactively-p (quote interactive))) (user-error "TODO state change from %s to %s blocked (by \"%s\")" this org-state org-block-entry-blocking) (message "TODO state change from %s to %s blocked (by \"%s\")" this org-state org-block-entry-blocking) (throw (quote exit) nil))))) (store-match-data match-data) (replace-match next t t) (cond ((equal this org-state) (message "TODO state was already %s" (org-trim next))) ((pos-visible-in-window-p hl-pos) (message "TODO state changed to %s" (org-trim next)))) (if head nil (setq head (org-get-todo-sequence-head org-state) ass (assoc head org-todo-kwd-alist) interpret (nth 1 ass) done-word (nth 3 ass) final-done-word (nth 4 ass))) (if (memq arg (quote (nextset previousset))) (progn (message "Keyword-Set %d/%d: %s" (- (length org-todo-sets) -1 (length (memq (assoc org-state org-todo-sets) org-todo-sets))) (length org-todo-sets) (mapconcat (quote identity) (assoc org-state org-todo-sets) " ")))) (setq org-last-todo-state-is-todo (not (member org-state org-done-keywords))) (setq now-done-p (and (member org-state org-done-keywords) (not (member this org-done-keywords)))) (and logging (org-local-logging logging)) (if (and (or org-todo-log-states org-log-done) (not (eq org-inhibit-logging t)) (not (memq arg (quote (nextset previousset))))) (progn (setq dolog (or (nth 1 (assoc org-state org-todo-log-states)) (nth 2 (assoc this org-todo-log-states)))) (if (and (eq dolog (quote note)) (eq org-inhibit-logging (quote note))) (setq dolog (quote time))) (if (or (and (not org-state) (not org-closed-keep-when-no-todo)) (and org-state (member org-state org-not-done-keywords) (not (member this org-not-done-keywords)))) (progn (org-add-planning-info nil nil (quote closed)))) (if (and now-done-p org-log-done) (progn (org-add-planning-info (quote closed) (org-current-effective-time)) (if (and (not dolog) (eq ... org-log-done)) (org-add-log-setup (quote done) org-state this (quote findpos) (quote note))))) (if (and org-state dolog) (progn (org-add-log-setup (quote state) org-state this (quote findpos) dolog))))) (org-todo-trigger-tag-changes org-state) (and org-auto-align-tags (not org-setting-tags) (org-set-tags nil t)) (if org-provide-todo-statistics (progn (org-update-parent-todo-statistics))) (run-hooks (quote org-after-todo-state-change-hook)) (if (and arg (not (member org-state org-done-keywords))) (setq head (org-get-todo-sequence-head org-state))) (put-text-property (point-at-bol) (point-at-eol) (quote org-todo-head) head) (if now-done-p (progn (if (boundp (quote org-agenda-headline-snapshot-before-repeat)) (progn (let ((save-match-data-internal ...)) (unwind-protect (progn ...) (set-match-data save-match-data-internal ...))))) (org-auto-repeat-maybe org-state))) (if (and (outline-on-heading-p) (not (bolp)) (save-excursion (beginning-of-line 1) (looking-at org-todo-line-regexp)) (< (point) (+ 2 (or (match-end 2) (match-end 1))))) (progn (goto-char (or (match-end 2) (match-end 1))) (and (looking-at " ") (just-one-space)))) (if org-trigger-hook (progn (save-excursion (run-hook-with-args (quote org-trigger-hook) change-plist)))) (if commentp (progn (org-toggle-comment))))
  (catch (quote exit) (org-back-to-heading t) (if (org-in-commented-heading-p t) (progn (org-toggle-comment) (setq commentp t))) (if (looking-at org-outline-regexp) (goto-char (1- (match-end 0)))) (or (looking-at (concat " +" org-todo-regexp "\\( +\\|[ 	]*$\\)")) (looking-at "\\(?: *\\|[ 	]*$\\)")) (let* ((match-data (match-data)) (startpos (point-at-bol)) (logging (let ((save-match-data-internal (match-data))) (unwind-protect (progn (org-entry-get nil "LOGGING" t t)) (set-match-data save-match-data-internal (quote evaporate))))) (org-log-done org-log-done) (org-log-repeat org-log-repeat) (org-todo-log-states org-todo-log-states) (org-inhibit-logging (if (equal arg 0) (progn (setq arg nil) (quote note)) org-inhibit-logging)) (this (match-string 1)) (hl-pos (match-beginning 0)) (head (org-get-todo-sequence-head this)) (ass (assoc head org-todo-kwd-alist)) (interpret (nth 1 ass)) (done-word (nth 3 ass)) (final-done-word (nth 4 ass)) (org-last-state (or this "")) (completion-ignore-case t) (member (member this org-todo-keywords-1)) (tail (cdr member)) (org-state (cond ((and org-todo-key-trigger (or ... ...)) (org-fast-todo-selection)) ((and (equal arg ...) (or ... ...)) (org-icompleting-read "State: " (mapcar ... org-todo-keywords-1) nil t)) ((eq arg (quote right)) (if this (if tail ... nil) (car org-todo-keywords-1))) ((eq arg (quote left)) (if (equal member org-todo-keywords-1) nil (if this ... ...))) ((and (eq org-use-fast-todo-selection t) (equal arg ...) (setq arg nil))) (arg (cond (... nil) (... nil) (... ...) (... ...) (... ...) (...) (... ...) (...))) ((null member) (or head (car org-todo-keywords-1))) ((equal this final-done-word) nil) ((null tail) nil) ((memq interpret (quote ...)) (if (eq this-command last-command) (car tail) (if ... ... nil))) (t (car tail)))) (org-state (or (run-hook-with-args-until-success (quote org-todo-get-default-hook) org-state org-last-state) org-state)) (next (if org-state (concat " " org-state " ") " ")) (change-plist (list :type (quote todo-state-change) :from this :to org-state :position startpos)) dolog now-done-p) (if org-blocker-hook (progn (setq org-last-todo-state-is-todo (not (member this org-done-keywords))) (if (save-excursion (let (...) (unwind-protect ... ...))) nil (if (with-no-warnings (called-interactively-p ...)) (user-error "TODO state change from %s to %s blocked (by \"%s\")" this org-state org-block-entry-blocking) (message "TODO state change from %s to %s blocked (by \"%s\")" this org-state org-block-entry-blocking) (throw (quote exit) nil))))) (store-match-data match-data) (replace-match next t t) (cond ((equal this org-state) (message "TODO state was already %s" (org-trim next))) ((pos-visible-in-window-p hl-pos) (message "TODO state changed to %s" (org-trim next)))) (if head nil (setq head (org-get-todo-sequence-head org-state) ass (assoc head org-todo-kwd-alist) interpret (nth 1 ass) done-word (nth 3 ass) final-done-word (nth 4 ass))) (if (memq arg (quote (nextset previousset))) (progn (message "Keyword-Set %d/%d: %s" (- (length org-todo-sets) -1 (length (memq ... org-todo-sets))) (length org-todo-sets) (mapconcat (quote identity) (assoc org-state org-todo-sets) " ")))) (setq org-last-todo-state-is-todo (not (member org-state org-done-keywords))) (setq now-done-p (and (member org-state org-done-keywords) (not (member this org-done-keywords)))) (and logging (org-local-logging logging)) (if (and (or org-todo-log-states org-log-done) (not (eq org-inhibit-logging t)) (not (memq arg (quote (nextset previousset))))) (progn (setq dolog (or (nth 1 (assoc org-state org-todo-log-states)) (nth 2 (assoc this org-todo-log-states)))) (if (and (eq dolog (quote note)) (eq org-inhibit-logging (quote note))) (setq dolog (quote time))) (if (or (and (not org-state) (not org-closed-keep-when-no-todo)) (and org-state (member org-state org-not-done-keywords) (not ...))) (progn (org-add-planning-info nil nil (quote closed)))) (if (and now-done-p org-log-done) (progn (org-add-planning-info (quote closed) (org-current-effective-time)) (if (and ... ...) (org-add-log-setup ... org-state this ... ...)))) (if (and org-state dolog) (progn (org-add-log-setup (quote state) org-state this (quote findpos) dolog))))) (org-todo-trigger-tag-changes org-state) (and org-auto-align-tags (not org-setting-tags) (org-set-tags nil t)) (if org-provide-todo-statistics (progn (org-update-parent-todo-statistics))) (run-hooks (quote org-after-todo-state-change-hook)) (if (and arg (not (member org-state org-done-keywords))) (setq head (org-get-todo-sequence-head org-state))) (put-text-property (point-at-bol) (point-at-eol) (quote org-todo-head) head) (if now-done-p (progn (if (boundp (quote org-agenda-headline-snapshot-before-repeat)) (progn (let (...) (unwind-protect ... ...)))) (org-auto-repeat-maybe org-state))) (if (and (outline-on-heading-p) (not (bolp)) (save-excursion (beginning-of-line 1) (looking-at org-todo-line-regexp)) (< (point) (+ 2 (or (match-end 2) (match-end 1))))) (progn (goto-char (or (match-end 2) (match-end 1))) (and (looking-at " ") (just-one-space)))) (if org-trigger-hook (progn (save-excursion (run-hook-with-args (quote org-trigger-hook) change-plist)))) (if commentp (progn (org-toggle-comment)))))
  (save-excursion (catch (quote exit) (org-back-to-heading t) (if (org-in-commented-heading-p t) (progn (org-toggle-comment) (setq commentp t))) (if (looking-at org-outline-regexp) (goto-char (1- (match-end 0)))) (or (looking-at (concat " +" org-todo-regexp "\\( +\\|[ 	]*$\\)")) (looking-at "\\(?: *\\|[ 	]*$\\)")) (let* ((match-data (match-data)) (startpos (point-at-bol)) (logging (let ((save-match-data-internal ...)) (unwind-protect (progn ...) (set-match-data save-match-data-internal ...)))) (org-log-done org-log-done) (org-log-repeat org-log-repeat) (org-todo-log-states org-todo-log-states) (org-inhibit-logging (if (equal arg 0) (progn (setq arg nil) (quote note)) org-inhibit-logging)) (this (match-string 1)) (hl-pos (match-beginning 0)) (head (org-get-todo-sequence-head this)) (ass (assoc head org-todo-kwd-alist)) (interpret (nth 1 ass)) (done-word (nth 3 ass)) (final-done-word (nth 4 ass)) (org-last-state (or this "")) (completion-ignore-case t) (member (member this org-todo-keywords-1)) (tail (cdr member)) (org-state (cond ((and org-todo-key-trigger ...) (org-fast-todo-selection)) ((and ... ...) (org-icompleting-read "State: " ... nil t)) ((eq arg ...) (if this ... ...)) ((eq arg ...) (if ... nil ...)) ((and ... ... ...)) (arg (cond ... ... ... ... ... ... ... ...)) ((null member) (or head ...)) ((equal this final-done-word) nil) ((null tail) nil) ((memq interpret ...) (if ... ... ...)) (t (car tail)))) (org-state (or (run-hook-with-args-until-success (quote org-todo-get-default-hook) org-state org-last-state) org-state)) (next (if org-state (concat " " org-state " ") " ")) (change-plist (list :type (quote todo-state-change) :from this :to org-state :position startpos)) dolog now-done-p) (if org-blocker-hook (progn (setq org-last-todo-state-is-todo (not (member this org-done-keywords))) (if (save-excursion (let ... ...)) nil (if (with-no-warnings ...) (user-error "TODO state change from %s to %s blocked (by \"%s\")" this org-state org-block-entry-blocking) (message "TODO state change from %s to %s blocked (by \"%s\")" this org-state org-block-entry-blocking) (throw ... nil))))) (store-match-data match-data) (replace-match next t t) (cond ((equal this org-state) (message "TODO state was already %s" (org-trim next))) ((pos-visible-in-window-p hl-pos) (message "TODO state changed to %s" (org-trim next)))) (if head nil (setq head (org-get-todo-sequence-head org-state) ass (assoc head org-todo-kwd-alist) interpret (nth 1 ass) done-word (nth 3 ass) final-done-word (nth 4 ass))) (if (memq arg (quote (nextset previousset))) (progn (message "Keyword-Set %d/%d: %s" (- (length org-todo-sets) -1 (length ...)) (length org-todo-sets) (mapconcat (quote identity) (assoc org-state org-todo-sets) " ")))) (setq org-last-todo-state-is-todo (not (member org-state org-done-keywords))) (setq now-done-p (and (member org-state org-done-keywords) (not (member this org-done-keywords)))) (and logging (org-local-logging logging)) (if (and (or org-todo-log-states org-log-done) (not (eq org-inhibit-logging t)) (not (memq arg (quote ...)))) (progn (setq dolog (or (nth 1 ...) (nth 2 ...))) (if (and (eq dolog ...) (eq org-inhibit-logging ...)) (setq dolog (quote time))) (if (or (and ... ...) (and org-state ... ...)) (progn (org-add-planning-info nil nil ...))) (if (and now-done-p org-log-done) (progn (org-add-planning-info ... ...) (if ... ...))) (if (and org-state dolog) (progn (org-add-log-setup ... org-state this ... dolog))))) (org-todo-trigger-tag-changes org-state) (and org-auto-align-tags (not org-setting-tags) (org-set-tags nil t)) (if org-provide-todo-statistics (progn (org-update-parent-todo-statistics))) (run-hooks (quote org-after-todo-state-change-hook)) (if (and arg (not (member org-state org-done-keywords))) (setq head (org-get-todo-sequence-head org-state))) (put-text-property (point-at-bol) (point-at-eol) (quote org-todo-head) head) (if now-done-p (progn (if (boundp (quote org-agenda-headline-snapshot-before-repeat)) (progn (let ... ...))) (org-auto-repeat-maybe org-state))) (if (and (outline-on-heading-p) (not (bolp)) (save-excursion (beginning-of-line 1) (looking-at org-todo-line-regexp)) (< (point) (+ 2 (or ... ...)))) (progn (goto-char (or (match-end 2) (match-end 1))) (and (looking-at " ") (just-one-space)))) (if org-trigger-hook (progn (save-excursion (run-hook-with-args (quote org-trigger-hook) change-plist)))) (if commentp (progn (org-toggle-comment))))))
  (let ((org-blocker-hook org-blocker-hook) commentp case-fold-search) (if (equal arg (quote (64))) (progn (setq arg nil org-blocker-hook nil))) (if (and org-blocker-hook (or org-inhibit-blocking (org-entry-get nil "NOBLOCKING"))) (progn (setq org-blocker-hook nil))) (save-excursion (catch (quote exit) (org-back-to-heading t) (if (org-in-commented-heading-p t) (progn (org-toggle-comment) (setq commentp t))) (if (looking-at org-outline-regexp) (goto-char (1- (match-end 0)))) (or (looking-at (concat " +" org-todo-regexp "\\( +\\|[ 	]*$\\)")) (looking-at "\\(?: *\\|[ 	]*$\\)")) (let* ((match-data (match-data)) (startpos (point-at-bol)) (logging (let (...) (unwind-protect ... ...))) (org-log-done org-log-done) (org-log-repeat org-log-repeat) (org-todo-log-states org-todo-log-states) (org-inhibit-logging (if (equal arg 0) (progn ... ...) org-inhibit-logging)) (this (match-string 1)) (hl-pos (match-beginning 0)) (head (org-get-todo-sequence-head this)) (ass (assoc head org-todo-kwd-alist)) (interpret (nth 1 ass)) (done-word (nth 3 ass)) (final-done-word (nth 4 ass)) (org-last-state (or this "")) (completion-ignore-case t) (member (member this org-todo-keywords-1)) (tail (cdr member)) (org-state (cond (... ...) (... ...) (... ...) (... ...) (...) (arg ...) (... ...) (... nil) (... nil) (... ...) (t ...))) (org-state (or (run-hook-with-args-until-success ... org-state org-last-state) org-state)) (next (if org-state (concat " " org-state " ") " ")) (change-plist (list :type (quote todo-state-change) :from this :to org-state :position startpos)) dolog now-done-p) (if org-blocker-hook (progn (setq org-last-todo-state-is-todo (not ...)) (if (save-excursion ...) nil (if ... ... ... ...)))) (store-match-data match-data) (replace-match next t t) (cond ((equal this org-state) (message "TODO state was already %s" (org-trim next))) ((pos-visible-in-window-p hl-pos) (message "TODO state changed to %s" (org-trim next)))) (if head nil (setq head (org-get-todo-sequence-head org-state) ass (assoc head org-todo-kwd-alist) interpret (nth 1 ass) done-word (nth 3 ass) final-done-word (nth 4 ass))) (if (memq arg (quote (nextset previousset))) (progn (message "Keyword-Set %d/%d: %s" (- ... -1 ...) (length org-todo-sets) (mapconcat ... ... " ")))) (setq org-last-todo-state-is-todo (not (member org-state org-done-keywords))) (setq now-done-p (and (member org-state org-done-keywords) (not (member this org-done-keywords)))) (and logging (org-local-logging logging)) (if (and (or org-todo-log-states org-log-done) (not (eq org-inhibit-logging t)) (not (memq arg ...))) (progn (setq dolog (or ... ...)) (if (and ... ...) (setq dolog ...)) (if (or ... ...) (progn ...)) (if (and now-done-p org-log-done) (progn ... ...)) (if (and org-state dolog) (progn ...)))) (org-todo-trigger-tag-changes org-state) (and org-auto-align-tags (not org-setting-tags) (org-set-tags nil t)) (if org-provide-todo-statistics (progn (org-update-parent-todo-statistics))) (run-hooks (quote org-after-todo-state-change-hook)) (if (and arg (not (member org-state org-done-keywords))) (setq head (org-get-todo-sequence-head org-state))) (put-text-property (point-at-bol) (point-at-eol) (quote org-todo-head) head) (if now-done-p (progn (if (boundp ...) (progn ...)) (org-auto-repeat-maybe org-state))) (if (and (outline-on-heading-p) (not (bolp)) (save-excursion (beginning-of-line 1) (looking-at org-todo-line-regexp)) (< (point) (+ 2 ...))) (progn (goto-char (or ... ...)) (and (looking-at " ") (just-one-space)))) (if org-trigger-hook (progn (save-excursion (run-hook-with-args ... change-plist)))) (if commentp (progn (org-toggle-comment)))))))
  (if (and (org-region-active-p) org-loop-over-headlines-in-active-region) (let ((cl (if (eq org-loop-over-headlines-in-active-region (quote start-level)) (quote region-start-level) (quote region))) org-loop-over-headlines-in-active-region) (org-map-entries (list (quote org-todo) arg) org-loop-over-headlines-in-active-region cl (if (outline-invisible-p) (org-end-of-subtree nil t)))) (if (equal arg (quote (16))) (setq arg (quote nextset))) (if (equal arg -1) (progn (org-cancel-repeater) (setq arg nil))) (let ((org-blocker-hook org-blocker-hook) commentp case-fold-search) (if (equal arg (quote (64))) (progn (setq arg nil org-blocker-hook nil))) (if (and org-blocker-hook (or org-inhibit-blocking (org-entry-get nil "NOBLOCKING"))) (progn (setq org-blocker-hook nil))) (save-excursion (catch (quote exit) (org-back-to-heading t) (if (org-in-commented-heading-p t) (progn (org-toggle-comment) (setq commentp t))) (if (looking-at org-outline-regexp) (goto-char (1- (match-end 0)))) (or (looking-at (concat " +" org-todo-regexp "\\( +\\|[ 	]*$\\)")) (looking-at "\\(?: *\\|[ 	]*$\\)")) (let* ((match-data (match-data)) (startpos (point-at-bol)) (logging (let ... ...)) (org-log-done org-log-done) (org-log-repeat org-log-repeat) (org-todo-log-states org-todo-log-states) (org-inhibit-logging (if ... ... org-inhibit-logging)) (this (match-string 1)) (hl-pos (match-beginning 0)) (head (org-get-todo-sequence-head this)) (ass (assoc head org-todo-kwd-alist)) (interpret (nth 1 ass)) (done-word (nth 3 ass)) (final-done-word (nth 4 ass)) (org-last-state (or this "")) (completion-ignore-case t) (member (member this org-todo-keywords-1)) (tail (cdr member)) (org-state (cond ... ... ... ... ... ... ... ... ... ... ...)) (org-state (or ... org-state)) (next (if org-state ... " ")) (change-plist (list :type ... :from this :to org-state :position startpos)) dolog now-done-p) (if org-blocker-hook (progn (setq org-last-todo-state-is-todo ...) (if ... nil ...))) (store-match-data match-data) (replace-match next t t) (cond ((equal this org-state) (message "TODO state was already %s" ...)) ((pos-visible-in-window-p hl-pos) (message "TODO state changed to %s" ...))) (if head nil (setq head (org-get-todo-sequence-head org-state) ass (assoc head org-todo-kwd-alist) interpret (nth 1 ass) done-word (nth 3 ass) final-done-word (nth 4 ass))) (if (memq arg (quote ...)) (progn (message "Keyword-Set %d/%d: %s" ... ... ...))) (setq org-last-todo-state-is-todo (not (member org-state org-done-keywords))) (setq now-done-p (and (member org-state org-done-keywords) (not ...))) (and logging (org-local-logging logging)) (if (and (or org-todo-log-states org-log-done) (not ...) (not ...)) (progn (setq dolog ...) (if ... ...) (if ... ...) (if ... ...) (if ... ...))) (org-todo-trigger-tag-changes org-state) (and org-auto-align-tags (not org-setting-tags) (org-set-tags nil t)) (if org-provide-todo-statistics (progn (org-update-parent-todo-statistics))) (run-hooks (quote org-after-todo-state-change-hook)) (if (and arg (not ...)) (setq head (org-get-todo-sequence-head org-state))) (put-text-property (point-at-bol) (point-at-eol) (quote org-todo-head) head) (if now-done-p (progn (if ... ...) (org-auto-repeat-maybe org-state))) (if (and (outline-on-heading-p) (not ...) (save-excursion ... ...) (< ... ...)) (progn (goto-char ...) (and ... ...))) (if org-trigger-hook (progn (save-excursion ...))) (if commentp (progn (org-toggle-comment))))))))
  org-todo(nil)
  call-interactively(org-todo nil nil)


Hopefully this will be useful in tracking this bug.

Thanks,

Alan

-- 
OpenPGP Key ID : 040D0A3B4ED2E5C7

[-- Attachment #2: Type: application/pgp-signature, Size: 494 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: cache problem, with ECM
  2014-07-09  8:11 cache problem, with ECM Alan Schmitt
@ 2014-07-11  6:50 ` Alan Schmitt
  2014-07-11  9:34   ` Daniel Clemente
  2014-07-17 14:43 ` Nicolas Goaziou
  1 sibling, 1 reply; 6+ messages in thread
From: Alan Schmitt @ 2014-07-11  6:50 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 591 bytes --]

On 2014-07-09 10:11, Alan Schmitt <alan.schmitt@polytechnique.org> writes:

> Hello,
>
> I noticed this morning, after updating org-mode to the latest version,
> that I would get an error with a trace related to a cache even if a just
> started emacs. It took me a while to get down to an ECM, but here it is.

As a quick follow-up, I can get rid of the cache corruption by not using
the log book (I set '(setq org-log-into-drawer nil)'). If others are
seeing such cache corruption, this might be a temporary workaround.

Best,

Alan

-- 
OpenPGP Key ID : 040D0A3B4ED2E5C7

[-- Attachment #2: Type: application/pgp-signature, Size: 494 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: cache problem, with ECM
  2014-07-11  6:50 ` Alan Schmitt
@ 2014-07-11  9:34   ` Daniel Clemente
  2014-07-11  9:51     ` Alan Schmitt
  0 siblings, 1 reply; 6+ messages in thread
From: Daniel Clemente @ 2014-07-11  9:34 UTC (permalink / raw)
  Cc: emacs-orgmode

> 
> As a quick follow-up, I can get rid of the cache corruption by not using
> the log book (I set '(setq org-log-into-drawer nil)'). If others are
> seeing such cache corruption, this might be a temporary workaround.
> 
  I also am seeing many cache problems, e.g.
  - after changing TODO→DONE a repeating task with .+1m , it stays DONE (not TODO), the date doesn't change to next month, and C-e stops working (Wrong type argument: number-or-marker-p, nil). The backtrace included some function like …-update-cache-…
  - lines that should appear inside log drawer (like :LAST_REPEAT:) appear anywhere, e.g. in between the CLOCK: […]--[…] entries

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: cache problem, with ECM
  2014-07-11  9:34   ` Daniel Clemente
@ 2014-07-11  9:51     ` Alan Schmitt
  0 siblings, 0 replies; 6+ messages in thread
From: Alan Schmitt @ 2014-07-11  9:51 UTC (permalink / raw)
  To: Daniel Clemente; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 1080 bytes --]

On 2014-07-11 11:34, Daniel Clemente <n142857@gmail.com> writes:

>> 
>> As a quick follow-up, I can get rid of the cache corruption by not using
>> the log book (I set '(setq org-log-into-drawer nil)'). If others are
>> seeing such cache corruption, this might be a temporary workaround.
>> 
>   I also am seeing many cache problems, e.g.
>   - after changing TODO→DONE a repeating task with .+1m , it stays DONE (not TODO), the date doesn't change to next month, and C-e stops working (Wrong type argument: number-or-marker-p, nil). The backtrace included some function like …-update-cache-…
>   - lines that should appear inside log drawer (like :LAST_REPEAT:) appear anywhere, e.g. in between the CLOCK: […]--[…] entries

This is very similar to what I witness (the error is the same in my
case, and the problem happens with a LOGBOOK created but no data put
inside). What's worse: after the problem has happened once, I cannot
unfold a task without getting an exception, and I have to restart emacs.

Alan

-- 
OpenPGP Key ID : 040D0A3B4ED2E5C7

[-- Attachment #2: Type: application/pgp-signature, Size: 494 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: cache problem, with ECM
  2014-07-09  8:11 cache problem, with ECM Alan Schmitt
  2014-07-11  6:50 ` Alan Schmitt
@ 2014-07-17 14:43 ` Nicolas Goaziou
  2014-07-18  6:33   ` Alan Schmitt
  1 sibling, 1 reply; 6+ messages in thread
From: Nicolas Goaziou @ 2014-07-17 14:43 UTC (permalink / raw)
  To: Alan Schmitt; +Cc: emacs-orgmode

Hello,

Alan Schmitt <alan.schmitt@polytechnique.org> writes:

> I noticed this morning, after updating org-mode to the latest version,
> that I would get an error with a trace related to a cache even if a just
> started emacs. It took me a while to get down to an ECM, but here it is.
>
> The init file used:
>
>
> ;; use with "open /Applications/Emacs.app --args -Q -l ~/tmp/init-org.el"
>
> (add-to-list 'load-path "/Users/schmitta/projets/org-mode/lisp")
>
> (require 'org)
>
> (toggle-debug-on-error)
>
> (setq org-log-into-drawer t)
>
> (setq org-todo-keywords
>        '((sequence "TODO(t)" "NEXT(n)" "|" "DONE(d!/!)")
>          (sequence "WAITING(w@/!)" "HOLD(h@/!)" "|" "CANCELLED(c@/!)")))
>
> The crucial parts seem to be the 'org-log-into-drawer' and the fact that
> switching out of WAITING triggers a note.
>
> Here is an org file showing the problem
>
> #+STARTUP: hidestars
> * Perso
> :PROPERTIES:
> :CATEGORY: Perso
> :END:
> ** DONE bar
>    :LOGBOOK:
>    - State "DONE"       from "TODO"       [2014-07-06 Sun 19:22]
>    :END:
>   [2014-07-06 Sun 10:01]
> ** WAITING foo 							       :@fun:
>   SCHEDULED: <2014-07-09 Wed>
>   :PROPERTIES:
>   :ID:       79A4028E-DBDA-49D4-AD39-BD2786EF9FBD
>   :END:
> * Hacking
> :PROPERTIES:
> :CATEGORY: Hacking
> :END:

This should be fixed. Thank you for reporting it.


Regards,

-- 
Nicolas Goaziou

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: cache problem, with ECM
  2014-07-17 14:43 ` Nicolas Goaziou
@ 2014-07-18  6:33   ` Alan Schmitt
  0 siblings, 0 replies; 6+ messages in thread
From: Alan Schmitt @ 2014-07-18  6:33 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 213 bytes --]

On 2014-07-17 16:43, Nicolas Goaziou <mail@nicolasgoaziou.fr> writes:

> This should be fixed. Thank you for reporting it.

I confirm it works. Thanks a lot!

Alan

-- 
OpenPGP Key ID : 040D0A3B4ED2E5C7

[-- Attachment #2: Type: application/pgp-signature, Size: 494 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2014-07-18  6:33 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-07-09  8:11 cache problem, with ECM Alan Schmitt
2014-07-11  6:50 ` Alan Schmitt
2014-07-11  9:34   ` Daniel Clemente
2014-07-11  9:51     ` Alan Schmitt
2014-07-17 14:43 ` Nicolas Goaziou
2014-07-18  6:33   ` Alan Schmitt

Code repositories for project(s) associated with this inbox:

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).