emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Max Mikhanosha <max@openchat.com>
To: emacs-orgmode@gnu.org
Subject: Re: PATCH: include in-progress/started todos into daily agenda
Date: Thu, 27 Sep 2007 10:33:08 -0400	[thread overview]
Message-ID: <87r6kkdvq3.wl%max@openchat.com> (raw)
In-Reply-To: <87sl51dud4.wl%max@openchat.com>

Responding to my own email, because I accidentally deleted Carsten
response.

Carsten suggested that I check the block agenda functionality to see
if it already does the same thing. The block agenda have the following
little quirks which made me implement my own solution instead:

Example of block agenda:

--------------------------------------------------------------------
Day-agenda:
Thursday  27 September 2007
  proj:       Scheduled:  TODO [#C] Some scheduled task

====================
Global list of TODO items of type: INPROGRESS                                                            
  proj:       INPROGRESS [#A] Some task that is already in progress
---------------------------------------------------------------------


1. Items from the block agenda are a separate block, and not sorted
   together with the items scheduled for the same day. So even if my
   in-progress item is A its shown below the scheduled for this day
   item that is C

2. There are 3 lines of vertical space taken by the empty line at the
   end of the daily agenda, the === separator and the "Global list"
   heading. I usually use emacs from tty, so my screen is 100x30 so 3
   lines is 1/3 of the whole agenda buffer.

Below is how it looks like when in-progress items are treated as if
they were scheduled for today, which is what my patch does.

--------------------------------------------------------------------
Day-agenda:
Thursday  27 September 2007
  proj:       INPROGRESS [#A] Some task that is already in progress
  proj:       Scheduled:  TODO [#C] Some scheduled task
---------------------------------------------------------------------

Which is much clearer to me.  The in-progress tasks are in the same
list as the tasks scheduled for today, and are sorted together.

Its not problem if my patch is rejected, I have a less invasive
solution for my own needs that does the same thing with a single
defadvice. I have only sent a patch because IMHO ppl were already
discussing the same method of mixing the daily agenda with in-progress
items, but with a "manual" method of managing the in-progress items,
ie re-scheduling them every day until done with them.

At Wed, 26 Sep 2007 16:50:15 -0400, Max Mikhanosha wrote:
> 
> I had always used the day/weekly/mothly agenda vs the searchable
> agenda separately and sometimes missed things because they were in one
> list but not another.  For example when looking into a tags based
> agenda for :computer, I may have missed some other item that was
> scheduled for today but not tagged with computer, and via versa.
> 
> The method described in the post titled "Not using GTD" post, where
> only the daily agenda is the primary agenda used solves this problem,
> but I don't like to schedule/reschedule my items all the time. 
> 
> So inspired by the "Not using GTD" post, proposed patch allows
> specifying a TODO type that would always be included into daily
> agenda on a current day, as if it was scheduled.
> 
> So one can just mark items that need to be worked on doing the day as
> lets say "INPROGRESS" and they would stay in the daily agenda
> alongside/intermixed with the items scheduled for today until you
> close them. If you like to postpone the item, you put it as TODO
> again, and it would disappear.
> 
> Proposed patch is as plain text below, feel free to rewrite/change 
> as the method I've used may not have been optimal.
> 
> Regards,
>   Max
> 
> diff -rp -x '*.orig' -x '*.elc' -x '*~' org-5.10a.orig/org.el org-5.10a/org.el
> *** org-5.10a.orig/org.el	Wed Sep 26 13:33:20 2007
> --- org-5.10a/org.el	Wed Sep 26 16:33:52 2007
> *************** When nil, only the days which actually h
> *** 2323,2328 ****
> --- 2323,2342 ----
>     :group 'org-agenda-daily/weekly
>     :type 'boolean)
>   
> + (defcustom org-agenda-show-inprogress-todos nil
> +   "Non-nil means, include the TODO's of the type specified by
> + `org-inprogress-todos' into the daily agenda."
> +   :group 'org-agenda-daily/weekly
> +   :type 'boolean)
> + 
> + (defcustom org-inprogress-todos "INPROGRESS"
> +   "Specifies TODO type that would be automatically included into
> + the daily agenda when `org-agenda-show-inprogress-todos' is set.
> + You can specify more then one value separating them with |, for
> + example INPROGRESS|STARTED"
> +   :group 'org-agenda-daily/weekly
> +   :type 'string)
> + 
>   (defcustom org-agenda-format-date 'org-agenda-format-date-aligned
>     "Format string for displaying dates in the agenda.
>   Used by the daily/weekly agenda and by the timeline.  This should be
> *************** NDAYS defaults to `org-agenda-ndays'."
> *** 18056,18062 ****
>   		    (- sd (+ (if (< d 0) 7 0) d)))))
>   	 (day-numbers (list start))
>   	 (inhibit-redisplay (not debug-on-error))
> ! 	 s e rtn rtnall file date d start-pos end-pos todayp nd)
>       (setq org-agenda-redo-command
>   	  (list 'org-agenda-list (list 'quote include-all) start-day ndays))
>       ;; Make the list of days
> --- 18070,18077 ----
>   		    (- sd (+ (if (< d 0) 7 0) d)))))
>   	 (day-numbers (list start))
>   	 (inhibit-redisplay (not debug-on-error))
> ! 	 s e rtn rtnall file date d start-pos end-pos todayp nd
> !          args)
>       (setq org-agenda-redo-command
>   	  (list 'org-agenda-list (list 'quote include-all) start-day ndays))
>       ;; Make the list of days
> *************** NDAYS defaults to `org-agenda-ndays'."
> *** 18102,18117 ****
>   	    (setq end-pos (point))))
>         (setq files thefiles
>   	    rtnall nil)
>         (while (setq file (pop files))
>   	(catch 'nextfile
>   	  (org-check-agenda-file file)
> ! 	  (if org-agenda-show-log
> ! 	      (setq rtn (org-agenda-get-day-entries
> ! 			 file date
> ! 			 :deadline :scheduled :timestamp :sexp :closed))
> ! 	    (setq rtn (org-agenda-get-day-entries
> ! 		       file date
> ! 		       :deadline :scheduled :sexp :timestamp)))
>   	  (setq rtnall (append rtnall rtn))))
>         (if org-agenda-include-diary
>   	  (progn
> --- 18117,18132 ----
>   	    (setq end-pos (point))))
>         (setq files thefiles
>   	    rtnall nil)
> +       (setq args '(:deadline :scheduled :timestamp :sexp))
> +       (when org-agenda-show-log
> +         (push :closed args)) 
> +       (when org-agenda-show-inprogress-todos
> +         (push :inprogress args))
>         (while (setq file (pop files))
>   	(catch 'nextfile
>   	  (org-check-agenda-file file)
> !           (setq rtn (apply 'org-agenda-get-day-entries
> !                            file date args))
>   	  (setq rtnall (append rtnall rtn))))
>         (if org-agenda-include-diary
>   	  (progn
> *************** the documentation of `org-diary'."
> *** 18606,18611 ****
> --- 18621,18632 ----
>   	      ;; The way we repeatedly append to `results' makes it O(n^2) :-(
>   	      (while (setq arg (pop args))
>   		(cond
> + 		 ((and (eq arg :inprogress)
> + 		       (equal date (calendar-current-date)))
> + 		  (let ((org-select-this-todo-keyword
> +                          org-inprogress-todos))
> +                     (setq rtn (org-agenda-get-todos))
> +                     (setq results (append results rtn))))
>   		 ((and (eq arg :todo)
>   		       (equal date (calendar-current-date)))
>   		  (setq rtn (org-agenda-get-todos))

  parent reply	other threads:[~2007-09-27 14:33 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-09-26 20:50 PATCH: include in-progress/started todos into daily agenda Max Mikhanosha
2007-09-27  1:33 ` Carsten Dominik
2007-09-27 14:33 ` Max Mikhanosha [this message]
2007-09-27 15:18   ` Carsten Dominik
2007-09-27 16:00     ` Max Mikhanosha
2007-09-27 20:49       ` Bastien
2007-10-09 16:09 ` Carsten Dominik
2007-10-09 19:18   ` Max Mikhanosha
2007-10-09 20:52     ` Bastien

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=87r6kkdvq3.wl%max@openchat.com \
    --to=max@openchat.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).