emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Orgmode] Re: PATCH: include in-progress/started todos into daily agenda


From: Max Mikhanosha
Subject: [Orgmode] Re: PATCH: include in-progress/started todos into daily agenda
Date: Thu, 27 Sep 2007 10:33:08 -0400
User-agent: Wanderlust/2.15.3 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.8 (Shijō) APEL/10.6 Emacs/22.0.51 (x86_64-unknown-linux-gnu) MULE/5.0 (SAKAKI)

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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]