From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: Re: [PATCH] org-agenda: fix start/end time in timerange Date: Tue, 25 Jan 2011 06:48:23 +0100 Message-ID: References: <1295716131-12190-1-git-send-email-julien@danjou.info> Mime-Version: 1.0 (Apple Message framework v936) Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Return-path: Received: from [140.186.70.92] (port=45239 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Phbli-000571-9h for emacs-orgmode@gnu.org; Tue, 25 Jan 2011 00:48:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Phble-0008Ne-8D for emacs-orgmode@gnu.org; Tue, 25 Jan 2011 00:48:41 -0500 Received: from mail-ew0-f41.google.com ([209.85.215.41]:56047) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Phbld-0008N2-UI for emacs-orgmode@gnu.org; Tue, 25 Jan 2011 00:48:38 -0500 Received: by ewy27 with SMTP id 27so2277993ewy.0 for ; Mon, 24 Jan 2011 21:48:35 -0800 (PST) In-Reply-To: <1295716131-12190-1-git-send-email-julien@danjou.info> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Julien Danjou Cc: emacs-orgmode@gnu.org Applied, thanks. - Carsten On Jan 22, 2011, at 6:08 PM, Julien Danjou wrote: > * 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 > --- > 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))) > -- > 1.7.2.3 > > > _______________________________________________ > Emacs-orgmode mailing list > Please use `Reply All' to send replies to the list. > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode