emacs-orgmode
[Top][All Lists]
Advanced

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

[Accepted] [Orgmode] org-agenda: fix start/end time in timerange


From: Carsten Dominik
Subject: [Accepted] [Orgmode] org-agenda: fix start/end time in timerange
Date: Tue, 25 Jan 2011 06:47:22 +0100 (CET)

Patch 555 (http://patchwork.newartisans.com/patch/555/) is now "Accepted".

Maintainer comment: No comment

This relates to the following submission:

http://mid.gmane.org/%3C1295716131-12190-1-git-send-email-julien%40danjou.info%3E

Here is the original message containing the patch:

> Content-Type: text/plain; charset="utf-8"
> MIME-Version: 1.0
> Content-Transfer-Encoding: 7bit
> Subject: [Orgmode] org-agenda: fix start/end time in timerange
> Date: Sat, 22 Jan 2011 22:08:51 -0000
> From: Julien Danjou <address@hidden>
> X-Patchwork-Id: 555
> Message-Id: <address@hidden>
> To: address@hidden
> Cc: Julien Danjou <address@hidden>
> 
> * org-agenda.el (org-agenda-get-blocks): Fix time of start/end
> of events with range. This display things like:
> <2011-01-22 Sat 14:00>--<2011-01-23 Sun 20:00>
> correctly, with the event starting at 14:00 and ending at 20:00.
> 
> Signed-off-by: Julien Danjou <address@hidden>
> 
> ---
> lisp/org-agenda.el |   92 +++++++++++++++++++++++++++------------------------
>  1 files changed, 49 insertions(+), 43 deletions(-)
> 
> diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
> index 4f06eb0..3c1104e 100644
> --- a/lisp/org-agenda.el
> +++ b/lisp/org-agenda.el
> @@ -5075,55 +5075,61 @@ FRACTION is what fraction of the head-warning time 
> has passed."
>                             (abbreviate-file-name buffer-file-name))))
>        (regexp org-tr-regexp)
>        (d0 (calendar-absolute-from-gregorian date))
> -      marker hdmarker ee txt d1 d2 s1 s2 timestr category todo-state tags pos
> +      marker hdmarker ee txt d1 d2 s1 s2 category todo-state tags pos
>        head donep)
>      (goto-char (point-min))
>      (while (re-search-forward regexp nil t)
>        (catch :skip
>       (org-agenda-skip)
>       (setq pos (point))
> -     (setq timestr (match-string 0)
> -           s1 (match-string 1)
> -           s2 (match-string 2)
> -           d1 (time-to-days (org-time-string-to-time s1))
> -           d2 (time-to-days (org-time-string-to-time s2)))
> -     (if (and (> (- d0 d1) -1) (> (- d2 d0) -1))
> -         ;; Only allow days between the limits, because the normal
> -         ;; date stamps will catch the limits.
> -         (save-excursion
> -           (setq todo-state (org-get-todo-state))
> -           (setq donep (member todo-state org-done-keywords))
> -           (if (and donep org-agenda-skip-timestamp-if-done)
> -               (throw :skip t))
> -           (setq marker (org-agenda-new-marker (point)))
> -           (setq category (org-get-category))
> -           (if (not (re-search-backward "^\\*+ " nil t))
> -               (setq txt org-agenda-no-heading-message)
> -             (goto-char (match-beginning 0))
> -             (setq hdmarker (org-agenda-new-marker (point)))
> -             (setq tags (org-get-tags-at))
> -             (looking-at "\\*+[ \t]+\\([^\r\n]+\\)")
> -             (setq head (match-string 1))
> -             (let ((remove-re
> -                    (if org-agenda-remove-timeranges-from-blocks
> -                        (concat
> -                         "<" (regexp-quote s1) ".*?>"
> -                         "--"
> -                         "<" (regexp-quote s2) ".*?>")
> -                      nil)))
> -               (setq txt (org-format-agenda-item
> -                          (format
> -                           (nth (if (= d1 d2) 0 1)
> -                                org-agenda-timerange-leaders)
> -                           (1+ (- d0 d1)) (1+ (- d2 d1)))
> -                          head category tags
> -                          timestr nil remove-re))))
> -           (org-add-props txt props
> -             'org-marker marker 'org-hd-marker hdmarker
> -             'type "block" 'date date
> -             'todo-state todo-state
> -             'priority (org-get-priority txt) 'org-category category)
> -           (push txt ee)))
> +     (let ((start-time (match-string 1))
> +           (end-time (match-string 2)))
> +       (setq s1 (match-string 1)
> +             s2 (match-string 2)
> +             d1 (time-to-days (org-time-string-to-time s1))
> +             d2 (time-to-days (org-time-string-to-time s2)))
> +       (if (and (> (- d0 d1) -1) (> (- d2 d0) -1))
> +           ;; Only allow days between the limits, because the normal
> +           ;; date stamps will catch the limits.
> +           (save-excursion
> +             (setq todo-state (org-get-todo-state))
> +             (setq donep (member todo-state org-done-keywords))
> +             (if (and donep org-agenda-skip-timestamp-if-done)
> +                 (throw :skip t))
> +             (setq marker (org-agenda-new-marker (point)))
> +             (setq category (org-get-category))
> +             (if (not (re-search-backward "^\\*+ " nil t))
> +                 (setq txt org-agenda-no-heading-message)
> +               (goto-char (match-beginning 0))
> +               (setq hdmarker (org-agenda-new-marker (point)))
> +               (setq tags (org-get-tags-at))
> +               (looking-at "\\*+[ \t]+\\([^\r\n]+\\)")
> +               (setq head (match-string 1))
> +               (let ((remove-re
> +                      (if org-agenda-remove-timeranges-from-blocks
> +                          (concat
> +                           "<" (regexp-quote s1) ".*?>"
> +                           "--"
> +                           "<" (regexp-quote s2) ".*?>")
> +                        nil)))
> +                 (setq txt (org-format-agenda-item
> +                            (format
> +                             (nth (if (= d1 d2) 0 1)
> +                                  org-agenda-timerange-leaders)
> +                             (1+ (- d0 d1)) (1+ (- d2 d1)))
> +                            head category tags
> +                            (cond ((= d1 d0)
> +                                   (concat "<" start-time ">"))
> +                                  ((= d2 d0)
> +                                   (concat "<" end-time ">"))
> +                                  (t nil))
> +                            remove-re))))
> +             (org-add-props txt props
> +               'org-marker marker 'org-hd-marker hdmarker
> +               'type "block" 'date date
> +               'todo-state todo-state
> +               'priority (org-get-priority txt) 'org-category category)
> +             (push txt ee))))
>       (goto-char pos)))
>      ;; Sort the entries by expiration date.
>      (nreverse ee)))
> 



reply via email to

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