From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: [Accepted] Add new option for ignoring past or future items in the global todo list Date: Wed, 26 Jan 2011 11:00:13 +0100 (CET) Message-ID: <20110126100013.972F6953CF8@u016822.science.uva.nl> References: <8739orgso1.fsf_-_@fastmail.fm> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from [140.186.70.92] (port=58698 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Pi2Al-0003Kx-CE for emacs-orgmode@gnu.org; Wed, 26 Jan 2011 05:00:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Pi2Aj-0002do-0q for emacs-orgmode@gnu.org; Wed, 26 Jan 2011 05:00:19 -0500 Received: from u016822.science.uva.nl ([146.50.39.34]:49397) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Pi2Ai-0002cl-NG for emacs-orgmode@gnu.org; Wed, 26 Jan 2011 05:00:16 -0500 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: emacs-orgmode@gnu.org Patch 545 (http://patchwork.newartisans.com/patch/545/) is now "Accepted". Maintainer comment: none This relates to the following submission: http://mid.gmane.org/%3C8739orgso1.fsf_-_%40fastmail.fm%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] Add new option for ignoring past or future items in the > global todo list > Date: Tue, 18 Jan 2011 01:51:42 -0000 > From: Matt Lundin > X-Patchwork-Id: 545 > Message-Id: <8739orgso1.fsf_-_@fastmail.fm> > To: Paul Sexton > Cc: emacs-orgmode@gnu.org > > * lisp/org-agenda.el: (org-agenda-todo-ignore-deadlines): New option. > (org-agenda-todo-ignore-scheduled): New option. > (org-agenda-todo-ignore-timestamp): New option. > (org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item): Allow user > to specify custom distance to ignore (future or past). > (org-agenda-todo-custom-ignore-p): New function. > > This patch gives users greater control over which past or future items > they would like to ignore in the global todo list. By setting > org-agenda-todo-ignore-scheduled to 7, for instance, a user can ignore > all items scheduled 7 or more days in the future. Similarly, by > setting org-agenda-todo-ignore-scheduled to -1, a user can ignore all > items that are truly in the past (unlike the 'past setting, which > ignores items scheduled today). Thanks to Paul Sexton for the idea for > this new functionality. > > --- > lisp/org-agenda.el | 42 +++++++++++++++++++++++++++++++++++++++--- > 1 files changed, 39 insertions(+), 3 deletions(-) > > diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el > index 0cd620c..68e781a 100644 > --- a/lisp/org-agenda.el > +++ b/lisp/org-agenda.el > @@ -599,6 +599,14 @@ all Don't show any entries with a timestamp in the global todo list. > The idea behind this is that by setting a timestamp, you > have already \"taken care\" of this item. > > +This variable can also have an integer as a value. If positive (N), > +todos with a timestamp N or more days in the future will be ignored. If > +negative (-N), todos with a timestamp N or more days in the past will be > +ignored. If 0, todos with a timestamp either today or in the future will > +be ignored. For example, a value of -1 will exclude todos with a > +timestamp in the past (yesterday or earlier), while a value of 7 will > +exclude todos with a timestamp a week or more in the future. > + > See also `org-agenda-todo-ignore-with-date'. > See also the variable `org-agenda-tags-todo-honor-ignore-options' if you want > to make his option also apply to the tags-todo list." > @@ -608,7 +616,8 @@ to make his option also apply to the tags-todo list." > (const :tag "Ignore future timestamp todos" future) > (const :tag "Ignore past or present timestamp todos" past) > (const :tag "Ignore all timestamp todos" all) > - (const :tag "Show timestamp todos" nil))) > + (const :tag "Show timestamp todos" nil) > + (integer :tag "Ignore if N or more days in past(-) or future(+)."))) > > (defcustom org-agenda-todo-ignore-scheduled nil > "Non-nil means, ignore some scheduled TODO items when making TODO list. > @@ -627,6 +636,9 @@ all Don't show any scheduled entries in the global todo list. > > t Same as `all', for backward compatibility. > > +This variable can also have an integer as a value. See > +`org-agenda-todo-ignore-timestamp' for more details. > + > See also `org-agenda-todo-ignore-with-date'. > See also the variable `org-agenda-tags-todo-honor-ignore-options' if you want > to make his option also apply to the tags-todo list." > @@ -637,7 +649,8 @@ to make his option also apply to the tags-todo list." > (const :tag "Ignore past- or present-scheduled todos" past) > (const :tag "Ignore all scheduled todos" all) > (const :tag "Ignore all scheduled todos (compatibility)" t) > - (const :tag "Show scheduled todos" nil))) > + (const :tag "Show scheduled todos" nil) > + (integer :tag "Ignore if N or more days in past(-) or future(+)."))) > > (defcustom org-agenda-todo-ignore-deadlines nil > "Non-nil means ignore some deadlined TODO items when making TODO list. > @@ -664,6 +677,9 @@ all Ignore all TODO entries that do have a deadline. > > t Same as `near', for backward compatibility. > > +This variable can also have an integer as a value. See > +`org-agenda-todo-ignore-timestamp' for more details. > + > See also `org-agenda-todo-ignore-with-date'. > See also the variable `org-agenda-tags-todo-honor-ignore-options' if you want > to make his option also apply to the tags-todo list." > @@ -674,7 +690,8 @@ to make his option also apply to the tags-todo list." > (const :tag "Ignore near deadlines (compatibility)" t) > (const :tag "Ignore far deadlines" far) > (const :tag "Ignore all TODOs with a deadlines" all) > - (const :tag "Show all TODOs, even if they have a deadline" nil))) > + (const :tag "Show all TODOs, even if they have a deadline" nil) > + (integer :tag "Ignore if N or more days in past(-) or future(+)."))) > > (defcustom org-agenda-tags-todo-honor-ignore-options nil > "Non-nil means honor todo-list ...ignore options also in tags-todo search. > @@ -4537,6 +4554,16 @@ the documentation of `org-diary'." > (org-end-of-subtree 'invisible)))) > (nreverse ee))) > > +(defun org-agenda-todo-custom-ignore-p (time n) > + "Check whether timestamp is farther away then n number of days. > +This function is invoked if `org-agenda-todo-ignore-deadlines', > +`org-agenda-todo-ignore-scheduled' or > +`org-agenda-todo-ignore-timestamp' is set to an integer." > + (let ((days (org-days-to-time time))) > + (if (>= n 0) > + (>= days n) > + (<= days n)))) > + > ;;;###autoload > (defun org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item > (&optional end) > @@ -4556,6 +4583,9 @@ the documentation of `org-diary'." > (> (org-days-to-time (match-string 1)) 0)) > ((eq org-agenda-todo-ignore-scheduled 'past) > (<= (org-days-to-time (match-string 1)) 0)) > + ((numberp org-agenda-todo-ignore-scheduled) > + (org-agenda-todo-custom-ignore-p > + (match-string 1) org-agenda-todo-ignore-scheduled)) > (t))) > (and org-agenda-todo-ignore-deadlines > (re-search-forward org-deadline-time-regexp end t) > @@ -4567,6 +4597,9 @@ the documentation of `org-diary'." > (> (org-days-to-time (match-string 1)) 0)) > ((eq org-agenda-todo-ignore-deadlines 'past) > (<= (org-days-to-time (match-string 1)) 0)) > + ((numberp org-agenda-todo-ignore-deadlines) > + (org-agenda-todo-custom-ignore-p > + (match-string 1) org-agenda-todo-ignore-deadlines)) > (t (org-deadline-close (match-string 1))))) > (and org-agenda-todo-ignore-timestamp > (let ((buffer (current-buffer)) > @@ -4589,6 +4622,9 @@ the documentation of `org-diary'." > (> (org-days-to-time (match-string 1)) 0)) > ((eq org-agenda-todo-ignore-timestamp 'past) > (<= (org-days-to-time (match-string 1)) 0)) > + ((numberp org-agenda-todo-ignore-timestamp) > + (org-agenda-todo-custom-ignore-p > + (match-string 1) org-agenda-todo-ignore-timestamp)) > (t)))))))))) > > (defconst org-agenda-no-heading-message >