emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Malcolm Purvis <malcolm@purvis.id.au>
To: emacs-orgmode@gnu.org
Subject: Error with removing zero time clocks in capture.
Date: Thu, 11 Sep 2014 19:05:49 +1000	[thread overview]
Message-ID: <m24mwe34sy.fsf@purvis.id.au> (raw)

With the current git version of org (release_8.3beta-323-gec8f24) I'm
getting an error in the element cache when I try to capture a task
because the clocked time for the captured task is 0.

The following minimum configuration demonstrates the problem:

--8<---------------cut here---------------start------------->8---
(require 'org)

(global-set-key (kbd "C-c c") 'org-capture)

(setq org-default-notes-file "/tmp/inbox.org")

(setq org-capture-templates
      (quote (("t" "todo" entry (file)
               "* TODO %?\n%U\n%a\n" :clock-in t :clock-resume t))))

(setq org-clock-out-remove-zero-time-clocks t)
(setq org-log-into-drawer t)
--8<---------------cut here---------------end--------------->8---

Typing the sequence "C-c c t C-c C-c" will result in the following
backtrace:

--8<---------------cut here---------------start------------->8---
Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p nil)
  <=(nil 666)
  (and (memq (org-element-type up) (quote (center-block drawer dynamic-block quote-block special-block))) (<= (org-element-property :contents-begin up) beg) (> (org-element-property :contents-end up) end))
  (if (and (memq (org-element-type up) (quote (center-block drawer dynamic-block quote-block special-block))) (<= (org-element-property :contents-begin up) beg) (> (org-element-property :contents-end up) end)) (org-element--cache-shift-positions up offset (quote (:contents-end :end))) (setq before up) (if robust-flag (progn (setq robust-flag nil))))
  (while up (if (and (memq (org-element-type up) (quote (center-block drawer dynamic-block quote-block special-block))) (<= (org-element-property :contents-begin up) beg) (> (org-element-property :contents-end up) end)) (org-element--cache-shift-positions up offset (quote (:contents-end :end))) (setq before up) (if robust-flag (progn (setq robust-flag nil)))) (setq up (org-element-property :parent up)))
  (let ((up before) (robust-flag t)) (while up (if (and (memq (org-element-type up) (quote (center-block drawer dynamic-block quote-block special-block))) (<= (org-element-property :contents-begin up) beg) (> (org-element-property :contents-end up) end)) (org-element--cache-shift-positions up offset (quote (:contents-end :end))) (setq before up) (if robust-flag (progn (setq robust-flag nil)))) (setq up (org-element-property :parent up))) (if (or (< (org-element-property :end before) beg) robust-flag) after before))
  (if (not before) after (let ((up before) (robust-flag t)) (while up (if (and (memq (org-element-type up) (quote (center-block drawer dynamic-block quote-block special-block))) (<= (org-element-property :contents-begin up) beg) (> (org-element-property :contents-end up) end)) (org-element--cache-shift-positions up offset (quote (:contents-end :end))) (setq before up) (if robust-flag (progn (setq robust-flag nil)))) (setq up (org-element-property :parent up))) (if (or (< (org-element-property :end before) beg) robust-flag) after before)))
  (let* ((elements (org-element--cache-find (1- beg) (quote both))) (before (car elements)) (after (cdr elements))) (if (not before) after (let ((up before) (robust-flag t)) (while up (if (and (memq (org-element-type up) (quote ...)) (<= (org-element-property :contents-begin up) beg) (> (org-element-property :contents-end up) end)) (org-element--cache-shift-positions up offset (quote (:contents-end :end))) (setq before up) (if robust-flag (progn (setq robust-flag nil)))) (setq up (org-element-property :parent up))) (if (or (< (org-element-property :end before) beg) robust-flag) after before))))
  org-element--cache-for-removal(666 667 -1)
  (let ((first (org-element--cache-for-removal beg end offset))) (if first (setq org-element--cache-sync-requests (cons (let ((beg (org-element-property :begin first)) (key (org-element--cache-key first))) (cond ((> beg end) (vector key beg nil offset nil nil 1)) ((let ... ...)) (t (let* ... ... ...)))) org-element--cache-sync-requests)) (if org-element--cache-sync-requests (progn (let* ((v (car org-element--cache-sync-requests))) (aset v 3 (+ (aref v 3) 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 beg))) (let ((first (org-element--cache-for-removal beg end offset))) (if first (setq org-element--cache-sync-requests (con
 s (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 beg))) (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(666 667 -1)
  (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(666 666 1)
  replace-match("")
  org-capture-empty-lines-after(0)
  org-capture-finalize(nil)
  call-interactively(org-capture-finalize nil nil)
--8<---------------cut here---------------end--------------->8---

I assume that the cache code is trying to remove the clock information
from the draw that has already been removed because
org-clock-out-remove-zero-time-clocks is set.

Malcolm

-- 
	       Malcolm Purvis <malcolm@purvis.id.au>

             reply	other threads:[~2014-09-11  9:06 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-11  9:05 Malcolm Purvis [this message]
2014-09-11 21:20 ` Error with removing zero time clocks in capture Nicolas Goaziou
2014-09-11 22:31   ` Malcolm Purvis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m24mwe34sy.fsf@purvis.id.au \
    --to=malcolm@purvis.id.au \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public 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).