emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Carsten Dominik <carsten.dominik@gmail.com>
To: Antoine Levitt <antoine.levitt@gmail.com>
Cc: emacs-orgmode@gnu.org
Subject: Re: org-agenda-log-mode doesn't list past scheduled items if org-agenda-skip-scheduled-if-done is t
Date: Mon, 2 May 2011 11:20:52 +0200	[thread overview]
Message-ID: <6BBB68CA-0FCD-4A1A-AFF8-CE3CF182B3E8@gmail.com> (raw)
In-Reply-To: <87fwpxgfc5.fsf@gmail.com>

Hi Antoine,

the agenda does list scheduled items anyway, so I do not see why
this information should be repeated in the logging items.

- Carsten

On Apr 5, 2011, at 12:30 PM, Antoine Levitt wrote:

> 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.
> 
> 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

- Carsten

  reply	other threads:[~2011-05-02  9:20 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-05 10:30 org-agenda-log-mode doesn't list past scheduled items if org-agenda-skip-scheduled-if-done is t Antoine Levitt
2011-05-02  9:20 ` Carsten Dominik [this message]
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=6BBB68CA-0FCD-4A1A-AFF8-CE3CF182B3E8@gmail.com \
    --to=carsten.dominik@gmail.com \
    --cc=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).