From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: Re: Bug fix and org-agenda-todo-ignore-deadlines option Date: Tue, 10 Oct 2006 13:54:17 +0200 Message-ID: References: <3c12eb8d0610051815j1ae94eacqd8ec2dae3e9ca68c@mail.gmail.com> Mime-Version: 1.0 (Apple Message framework v624) Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1GXPt3-0004y9-Ko for emacs-orgmode@gnu.org; Tue, 10 Oct 2006 18:15:45 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1GXPt2-0004v1-6g for emacs-orgmode@gnu.org; Tue, 10 Oct 2006 18:15:45 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1GXPt1-0004uq-Pb for emacs-orgmode@gnu.org; Tue, 10 Oct 2006 18:15:43 -0400 Received: from [193.252.22.241] (helo=smtp-1.orange.nl) by monty-python.gnu.org with esmtp (Exim 4.52) id 1GXQ0t-0006nE-BA for emacs-orgmode@gnu.org; Tue, 10 Oct 2006 18:23:51 -0400 In-Reply-To: <3c12eb8d0610051815j1ae94eacqd8ec2dae3e9ca68c@mail.gmail.com> 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: Piotr Zielinski Cc: emacs-orgmode@gnu.org I am taking this patch, thank you. - Carsten On Oct 6, 2006, at 3:15, Piotr Zielinski wrote: > Carsten, > > Here's a patch that adds a new option > org-agenda-todo-ignore-deadlines. If set to t (default nil), the > global todo list does not display deadlines which are closer than > org-deadline-warning-days, because such deadlines will be displayed by > the agenda anyway. Besides, it fixes a bug with > org-agenda-todo-ignore-scheduled. > > Piotr > > --- org.el 2006-10-04 11:14:17.000000000 +0200 > +++ /home/pz215/myfiles/emacs/org.el 2006-10-06 03:09:24.000000000 > +0200 > @@ -1635,6 +1635,14 @@ > :group 'org-todo > :type 'boolean) > > +(defcustom org-agenda-todo-ignore-deadlines nil > + "Non-nil means, don't show entries in the global todo list that > +have a deadline within the next org-deadline-warning-days > +days. The idea behind this is that by such items will appear in the > deadline list anyway." > + :group 'org-agenda > + :group 'org-todo > + :type 'boolean) > + > (defcustom org-timeline-show-empty-dates 3 > "Non-nil means, `org-timeline' also shows dates without an entry. > When nil, only the days which actually have entries are shown. > @@ -5998,6 +6006,15 @@ > (setq ans1 (format-time-string "%Y-%m-%d" time))) > (if (active-minibuffer-window) (exit-minibuffer)))) > > +(defun org-days-to-time (timestamp-string) > + (- (time-to-days (org-time-string-to-time timestamp-string)) > + (time-to-days (current-time)))) > + > +(defun org-deadline-close (timestamp-string &optional ndays) > + (and (< (org-days-to-time timestamp-string) > + (or ndays org-deadline-warning-days)) > + (not (org-entry-is-done-p)))) > + > (defun org-check-deadlines (ndays) > "Check if there are any deadlines due or past due. > A deadline is considered due if it happens within > `org-deadline-warning-days' > @@ -6013,12 +6030,7 @@ > (case-fold-search nil) > (regexp (concat "\\<" org-deadline-string " *<\\([^>]+\\)>")) > (callback > - (lambda () > - (and (let ((d1 (time-to-days (current-time))) > - (d2 (time-to-days > - (org-time-string-to-time (match-string > 1))))) > - (< (- d2 d1) org-warn-days)) > - (not (org-entry-is-done-p)))))) > + (lambda () (org-deadline-close (match-string 1) > org-warn-days)))) > (message "%d deadlines past-due or due within %d days" > (org-occur regexp nil callback) > org-warn-days))) > @@ -8057,17 +8069,24 @@ > "\\)\\>") > org-not-done-regexp) > "[^\n\r]*\\)")) > - (sched-re (concat ".*\n?.*?" org-scheduled-time-regexp)) > + (deadline-re (concat ".*\\(\n[^*].*\\)?" > org-deadline-time-regexp)) > + (sched-re (concat ".*\\(\n[^*].*\\)?" > org-scheduled-time-regexp)) > marker priority category tags > ee txt) > (goto-char (point-min)) > (while (re-search-forward regexp nil t) > (catch :skip > - (when (and org-agenda-todo-ignore-scheduled > - (looking-at sched-re)) > - ;; FIXME: the following test also happens below, but we need > it here > - (or org-agenda-todo-list-sublevels (org-end-of-subtree > 'invisible)) > - (throw :skip nil)) > + (save-match-data > + (beginning-of-line) > + (when (or (and org-agenda-todo-ignore-scheduled > + (looking-at sched-re)) > + (and org-agenda-todo-ignore-deadlines > + (looking-at deadline-re) > + (org-deadline-close (match-string 2)))) > + > + ;; FIXME: the following test also happens below, but we > need it here > + (or org-agenda-todo-list-sublevels (org-end-of-subtree > 'invisible)) > + (throw :skip nil))) > (org-agenda-skip) > (goto-char (match-beginning 1)) > (setq marker (org-agenda-new-marker (1+ (match-beginning 0))) > > > -- > Piotr Zielinski, Research Associate > Cavendish Laboratory, University of Cambridge, UK > http://www.cl.cam.ac.uk/~pz215/ > > > _______________________________________________ > Emacs-orgmode mailing list > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode > > -- Carsten Dominik Sterrenkundig Instituut "Anton Pannekoek" Universiteit van Amsterdam Kruislaan 403 NL-1098SJ Amsterdam phone: +31 20 525 7477