From: Antoine Levitt <antoine.levitt@gmail.com>
To: emacs-orgmode@gnu.org
Subject: org-agenda-log-mode doesn't list past scheduled items if org-agenda-skip-scheduled-if-done is t
Date: Tue, 05 Apr 2011 12:30:50 +0200 [thread overview]
Message-ID: <87fwpxgfc5.fsf@gmail.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 839 bytes --]
I guess my use case is pretty common: I use org-agenda to keep track of
appointments, and use org-agenda-skip-scheduled-if-done to avoid
displaying past appointments. If I want to review what I did last week
for instance, I'd like the SCHEDULED dates to appear in
org-agenda-log-mode, not the dates where I closed the TODO entry. But
org-agenda-log-mode-items only has support for closed, clock and state
changes. A nice feature would be a 'scheduled option, which would
display done entries that have a SCHEDULED tag.
I tried to implement it, but got stuck at date handling (apparently, the
problem is that SCHEDULED items use <> syntax, while CLOSED uses
[]. Not sure why.) Could someone take a look at it?
I'm attaching a very preliminary attempt to implement it, in case anyone
is interested. It's buggy because of the date issues.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: org-log-scheduled.diff --]
[-- Type: text/x-diff, Size: 3482 bytes --]
diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el
index 9adc180..89c9dde 100644
--- a/lisp/org/org-agenda.el
+++ b/lisp/org/org-agenda.el
@@ -4733,6 +4733,7 @@ be skipped."
(list
(if (memq 'closed items) (concat "\\<" org-closed-string))
(if (memq 'clock items) (concat "\\<" org-clock-string))
+ (if (memq 'scheduled items) (concat "\\<" org-scheduled-string))
(if (memq 'state items) "- State \"\\([a-zA-Z0-9]+\\)\".*?"))))
(parts-re (if parts (mapconcat 'identity parts "\\|")
(error "`org-agenda-log-mode-items' is empty")))
@@ -4744,10 +4745,10 @@ be skipped."
(format-time-string
(car org-time-stamp-formats)
(apply 'encode-time ; DATE bound by calendar
- (list 0 0 0 (nth 1 date) (car date) (nth 2 date))))
+ (list 0 0 0 (nth 1 date) (car date) (nth 2 date))))
1 11))))
(org-agenda-search-headline-for-time nil)
- marker hdmarker priority category tags closedp statep clockp state
+ marker hdmarker priority category tags closedp statep clockp scheduledp state
ee txt extra timestr rest clocked)
(goto-char (point-min))
(while (re-search-forward regexp nil t)
@@ -4755,8 +4756,9 @@ be skipped."
(org-agenda-skip)
(setq marker (org-agenda-new-marker (match-beginning 0))
closedp (equal (match-string 1) org-closed-string)
+ scheduledp (equal (match-string 1) org-scheduled-string)
statep (equal (string-to-char (match-string 1)) ?-)
- clockp (not (or closedp statep))
+ clockp (not (or closedp scheduledp statep))
state (and statep (match-string 2))
category (org-get-category (match-beginning 0))
timestr (buffer-substring (match-beginning 0) (point-at-eol))
@@ -4765,7 +4767,7 @@ be skipped."
;; substring should only run to end of time stamp
(setq rest (substring timestr (match-end 0))
timestr (substring timestr 0 (match-end 0)))
- (if (and (not closedp) (not statep)
+ (if (and (not closedp) (not statep) (not scheduledp)
(string-match "\\([0-9]\\{1,2\\}:[0-9]\\{2\\}\\)\\].*?\\([0-9]\\{1,2\\}:[0-9]\\{2\\}\\)" rest))
(progn (setq timestr (concat (substring timestr 0 -1)
"-" (match-string 1 rest) "]"))
@@ -4780,6 +4782,9 @@ be skipped."
(setq extra (match-string 1))))
(clockp
(and (looking-at ".*\n[ \t]*-[ \t]+\\([^-\n \t].*?\\)[ \t]*$")
+ (setq extra (match-string 1))))
+ (scheduledp
+ (and (looking-at ".*\n[ \t]*-[ \t]+\\([^-\n \t].*?\\)[ \t]*$")
(setq extra (match-string 1)))))
(if (not (re-search-backward "^\\*+ " nil t))
(setq txt org-agenda-no-heading-message)
@@ -4788,6 +4793,8 @@ be skipped."
tags (org-get-tags-at))
(looking-at "\\*+[ \t]+\\([^\r\n]+\\)")
(setq txt (match-string 1))
+ (if (and scheduledp (not (string-match (regexp-opt org-done-keywords-for-agenda) txt)))
+ (throw :skip nil))
(when extra
(if (string-match "\\([ \t]+\\)\\(:[^ \n\t]*?:\\)[ \t]*$" txt)
(setq txt (concat (substring txt 0 (match-beginning 1))
@@ -4796,8 +4803,9 @@ be skipped."
(setq txt (org-format-agenda-item
(cond
(closedp "Closed: ")
- (statep (concat "State: (" state ")"))
- (t (concat "Clocked: (" clocked ")")))
+ (scheduledp "Scheduled: ")
+ (statep (concat "State: (" state ")"))
+ (t (concat "Clocked: (" clocked ")")))
txt category tags timestr)))
(setq priority 100000)
(org-add-props txt props
next reply other threads:[~2011-04-05 10:31 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-05 10:30 Antoine Levitt [this message]
2011-05-02 9:20 ` org-agenda-log-mode doesn't list past scheduled items if org-agenda-skip-scheduled-if-done is t Carsten Dominik
2011-05-02 9:52 ` Antoine Levitt
2011-05-02 12:07 ` Carsten Dominik
2011-05-02 12:09 ` Antoine Levitt
2011-05-02 14:53 ` Sébastien Vauban
2011-05-02 15:02 ` Antoine Levitt
2011-05-02 15:22 ` Matt Lundin
2011-05-02 15:35 ` Antoine Levitt
2011-05-02 15:54 ` Matt Lundin
2011-05-11 13:01 ` Antoine Levitt
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=87fwpxgfc5.fsf@gmail.com \
--to=antoine.levitt@gmail.com \
--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).