emacs-orgmode
[Top][All Lists]
Advanced

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

[Orgmode] Re: Feature request: skip blocked lines in agenda view grid


From: Michael Ekstrand
Subject: [Orgmode] Re: Feature request: skip blocked lines in agenda view grid
Date: Tue, 21 Oct 2008 08:21:40 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (gnu/linux)

Carsten Dominik <address@hidden> writes:
> you have just catapulted yourself onto the list of possible successors
> when I will quit as maintainer of Org...  :-)
>
> Good work - I don't think it works completely yet, though.

Thanks :)

> When I have
>
> * new one
>   <2008-10-21 Tue 08:01-11:55>
>
> * new two
>   <2008-10-21 Tue 13:59-14:55>
>
> Then I get this agenda:
>
> Day-agenda (W43):
> Tuesday    21 October 2008
>                8:00......  ----------------
>   past:        8:01-11:55  new one
>               11:00......  ----------------
>               12:00......  ----------------
>               13:00......  ----------------
>   past:       13:59-14:55  new two
>               15:00......  ----------------
>               16:00......  ----------------
>               17:00......  ----------------
>               18:00......  ----------------
>               20:00......  ----------------
>
> The line at 11:00 should be gone as well.

I think I've found the problem.  I was computing the end time by adding
minutes to start time, which doesn't quite work for obvious reasons.
I've fixed it in the following code.

(defadvice org-agenda-add-time-grid-maybe (around mde-org-agenda-grid-tweakify
                                                  (list ndays todayp))
  (if (member 'remove-match (car org-agenda-time-grid))
      (flet ((extract-window
              (line)
              (let ((start (get-text-property 1 'time-of-day line))
                    (dur (get-text-property 1 'duration line)))
                (cond
                 ((and start dur) (cons start dur))
                 (start start)
                 (t nil))))
             (duration-add
              (time duration)
              (+ time (* 100 (/ duration 60)) (% duration 60))))
        (let* ((windows (delq nil (mapcar 'extract-window list)))
               (org-agenda-time-grid
                (list (car org-agenda-time-grid)
                      (cadr org-agenda-time-grid)
                      (remove-if
                       (lambda (time)
                         (find-if (lambda (w)
                                    (if (numberp w)
                                        (equal w time)
                                      (and (>= time (car w))
                                           (< time (duration-add
                                                    (car w) (cdr w))))))
                                  windows))
                       (caddr org-agenda-time-grid)))))
          ad-do-it))
    ad-do-it))
(ad-activate 'org-agenda-add-time-grid-maybe)

- Michael

-- 
mouse, n: A device for pointing at the xterm in which you want to type.
Confused by the strange files?  I cryptographically sign my messages.
For more information see <http://www.elehack.net/resources/gpg>.

Attachment: pgpKkCyb1r8fo.pgp
Description: PGP signature


reply via email to

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