From: Don March <don@ohspite.net>
To: mail@nicolasgoaziou.fr, emacs-orgmode@gnu.org
Subject: Re: [PATCH] Make today's deadlines "close" without lead time
Date: Fri, 3 Jun 2016 03:17:04 -0400 [thread overview]
Message-ID: <CABSfPEqMx9o7VsNsgeyH2NTzzvS78vheZ2RM2tyDiQXaAkkMMQ@mail.gmail.com> (raw)
In-Reply-To: <87d1o09fhl.fsf@saiph.selenimh>
[-- Attachment #1: Type: text/plain, Size: 530 bytes --]
Nicolas Goaziou <mail@nicolasgoaziou.fr> writes:
> Thank you for the patch.
And thank you for your thousands of patches!
> Did you sign FSF papers?
Yes, August 2011, #699456.
> Also, would you mind providing a few tests for this function, in
> "test-org.el"?
Not at all. The new patch---which includes the original changes and the new
tests---is attached. While I was in there, I made a second patch that renames
the function to have a `-p' predicate suffix.
Hopefully I put the tests somewhere close to where they belong.
[-- Attachment #2: 0001-Make-today-s-deadlines-close-without-lead-time.patch --]
[-- Type: text/x-patch, Size: 2944 bytes --]
From 4953e495b938011582fb0c7c7bf9064530ce9294 Mon Sep 17 00:00:00 2001
From: Don March <don@ohspite.net>
Date: Wed, 1 Jun 2016 00:05:12 -0400
Subject: [PATCH 1/2] Make today's deadlines "close" without lead time
* lisp/org.el (org-deadline-close): A timestamp is close if the days
between now and the timestamp are less then or equal to the days of
lead time.
* testing/lisp/test-org.el: Add tests for org-deadline-close.
---
lisp/org.el | 2 +-
testing/lisp/test-org.el | 28 ++++++++++++++++++++++++++++
2 files changed, 29 insertions(+), 1 deletion(-)
diff --git a/lisp/org.el b/lisp/org.el
index e015a77..13883c5 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -17480,7 +17480,7 @@ If SECONDS is non-nil, return the difference in seconds."
(defun org-deadline-close (timestamp-string &optional ndays)
"Is the time in TIMESTAMP-STRING close to the current date?"
(setq ndays (or ndays (org-get-wdays timestamp-string)))
- (and (< (org-time-stamp-to-now timestamp-string) ndays)
+ (and (<= (org-time-stamp-to-now timestamp-string) ndays)
(not (org-entry-is-done-p))))
(defun org-get-wdays (ts &optional delay zero-delay)
diff --git a/testing/lisp/test-org.el b/testing/lisp/test-org.el
index 6884c24..576402a 100644
--- a/testing/lisp/test-org.el
+++ b/testing/lisp/test-org.el
@@ -364,6 +364,34 @@
(calendar-gregorian-from-absolute
(org-closest-date "<2012-03-29 +2y>" "<2014-03-04>" 'future)))))
+(ert-deftest test-org/deadline-close ()
+ "Test `org-deadline-close' specifications."
+ ;; Pretend that the current time is 2016-06-03 Fri 01:43
+ (cl-flet ((current-time () '(22353 6425 905205 644000)))
+ ;; Timestamps are close if they are within `ndays' of lead time.
+ (org-test-with-temp-text "* Heading"
+ (should (org-deadline-close "2016-06-03 Fri" 0))
+ (should (org-deadline-close "2016-06-02 Thu" 0))
+ (should-not (org-deadline-close "2016-06-04 Sat" 0))
+ (should (org-deadline-close "2016-06-04 Sat" 1))
+ (should (org-deadline-close "2016-06-03 Fri 12:00" 0)))
+ ;; Read `ndays' from timestamp if argument not given.
+ (org-test-with-temp-text "* H"
+ (should (org-deadline-close "2016-06-04 Sat -1d"))
+ (should-not (org-deadline-close "2016-06-04 Sat -0d"))
+ (should (org-deadline-close "2016-06-10 Fri -1w"))
+ (should-not (org-deadline-close "2016-06-11 Sat -1w")))
+ ;; Prefer `ndays' argument over lead time in timestamp.
+ (org-test-with-temp-text "* H"
+ (should (org-deadline-close "2016-06-04 Sat -0d" 1))
+ (should-not (org-deadline-close "2016-06-04 Sat -0d" 0)))
+ ;; Completed tasks are never close.
+ (let ((org-todo-keywords '(("TODO" "|" "DONE"))))
+ (org-test-with-temp-text "* TODO Heading"
+ (should (org-deadline-close "2016-06-03")))
+ (org-test-with-temp-text "* DONE Heading"
+ (should-not (org-deadline-close "2016-06-03"))))))
+
\f
;;; Drawers
--
2.8.1
[-- Attachment #3: 0002-Rename-org-deadline-is-close-to-have-p-suffix.patch --]
[-- Type: text/x-patch, Size: 5437 bytes --]
From 143f802073989fff8fe464244f53089e79e92812 Mon Sep 17 00:00:00 2001
From: Don March <don@ohspite.net>
Date: Fri, 3 Jun 2016 02:49:55 -0400
Subject: [PATCH 2/2] Rename org-deadline-is-close to have -p suffix
* lisp/org-agenda.el
(org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item):
* lisp/org.el (org-deadline-close): Rename to...
(org-deadline-close-p): ...this.
* testing/lisp/test-org.el (test-org/deadline-close): Rename to...
(test-org/deadline-close-p): ...this.
---
lisp/org-agenda.el | 4 ++--
lisp/org.el | 4 ++--
testing/lisp/test-org.el | 30 +++++++++++++++---------------
3 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index 50f520c..7994187 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -5550,7 +5550,7 @@ This function is invoked if `org-agenda-todo-ignore-deadlines',
(cond
((memq org-agenda-todo-ignore-deadlines '(t all)) t)
((eq org-agenda-todo-ignore-deadlines 'far)
- (not (org-deadline-close (match-string 1))))
+ (not (org-deadline-close-p (match-string 1))))
((eq org-agenda-todo-ignore-deadlines 'future)
(> (org-time-stamp-to-now
(match-string 1) org-agenda-todo-ignore-time-comparison-use-seconds) 0))
@@ -5560,7 +5560,7 @@ This function is invoked if `org-agenda-todo-ignore-deadlines',
((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)))))
+ (t (org-deadline-close-p (match-string 1)))))
(and org-agenda-todo-ignore-timestamp
(let ((buffer (current-buffer))
(regexp
diff --git a/lisp/org.el b/lisp/org.el
index 13883c5..fc3e0c0 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -17477,7 +17477,7 @@ If SECONDS is non-nil, return the difference in seconds."
(- (funcall fdiff (org-time-string-to-time timestamp-string))
(funcall fdiff (current-time)))))
-(defun org-deadline-close (timestamp-string &optional ndays)
+(defun org-deadline-close-p (timestamp-string &optional ndays)
"Is the time in TIMESTAMP-STRING close to the current date?"
(setq ndays (or ndays (org-get-wdays timestamp-string)))
(and (<= (org-time-stamp-to-now timestamp-string) ndays)
@@ -17533,7 +17533,7 @@ days. If the prefix is a raw \\[universal-argument] prefix, all deadlines are s
(case-fold-search nil)
(regexp (concat "\\<" org-deadline-string " *<\\([^>]+\\)>"))
(callback
- (lambda () (org-deadline-close (match-string 1) org-warn-days))))
+ (lambda () (org-deadline-close-p (match-string 1) org-warn-days))))
(message "%d deadlines past-due or due within %d days"
(org-occur regexp nil callback)
org-warn-days)))
diff --git a/testing/lisp/test-org.el b/testing/lisp/test-org.el
index 576402a..86b8866 100644
--- a/testing/lisp/test-org.el
+++ b/testing/lisp/test-org.el
@@ -364,33 +364,33 @@
(calendar-gregorian-from-absolute
(org-closest-date "<2012-03-29 +2y>" "<2014-03-04>" 'future)))))
-(ert-deftest test-org/deadline-close ()
- "Test `org-deadline-close' specifications."
+(ert-deftest test-org/deadline-close-p ()
+ "Test `org-deadline-close-p' specifications."
;; Pretend that the current time is 2016-06-03 Fri 01:43
(cl-flet ((current-time () '(22353 6425 905205 644000)))
;; Timestamps are close if they are within `ndays' of lead time.
(org-test-with-temp-text "* Heading"
- (should (org-deadline-close "2016-06-03 Fri" 0))
- (should (org-deadline-close "2016-06-02 Thu" 0))
- (should-not (org-deadline-close "2016-06-04 Sat" 0))
- (should (org-deadline-close "2016-06-04 Sat" 1))
- (should (org-deadline-close "2016-06-03 Fri 12:00" 0)))
+ (should (org-deadline-close-p "2016-06-03 Fri" 0))
+ (should (org-deadline-close-p "2016-06-02 Thu" 0))
+ (should-not (org-deadline-close-p "2016-06-04 Sat" 0))
+ (should (org-deadline-close-p "2016-06-04 Sat" 1))
+ (should (org-deadline-close-p "2016-06-03 Fri 12:00" 0)))
;; Read `ndays' from timestamp if argument not given.
(org-test-with-temp-text "* H"
- (should (org-deadline-close "2016-06-04 Sat -1d"))
- (should-not (org-deadline-close "2016-06-04 Sat -0d"))
- (should (org-deadline-close "2016-06-10 Fri -1w"))
- (should-not (org-deadline-close "2016-06-11 Sat -1w")))
+ (should (org-deadline-close-p "2016-06-04 Sat -1d"))
+ (should-not (org-deadline-close-p "2016-06-04 Sat -0d"))
+ (should (org-deadline-close-p "2016-06-10 Fri -1w"))
+ (should-not (org-deadline-close-p "2016-06-11 Sat -1w")))
;; Prefer `ndays' argument over lead time in timestamp.
(org-test-with-temp-text "* H"
- (should (org-deadline-close "2016-06-04 Sat -0d" 1))
- (should-not (org-deadline-close "2016-06-04 Sat -0d" 0)))
+ (should (org-deadline-close-p "2016-06-04 Sat -0d" 1))
+ (should-not (org-deadline-close-p "2016-06-04 Sat -0d" 0)))
;; Completed tasks are never close.
(let ((org-todo-keywords '(("TODO" "|" "DONE"))))
(org-test-with-temp-text "* TODO Heading"
- (should (org-deadline-close "2016-06-03")))
+ (should (org-deadline-close-p "2016-06-03")))
(org-test-with-temp-text "* DONE Heading"
- (should-not (org-deadline-close "2016-06-03"))))))
+ (should-not (org-deadline-close-p "2016-06-03"))))))
\f
;;; Drawers
--
2.8.1
next prev parent reply other threads:[~2016-06-03 7:17 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-01 5:57 [PATCH] Make today's deadlines "close" without lead time Don March
2016-06-02 8:12 ` Nicolas Goaziou
2016-06-03 7:17 ` Don March [this message]
2016-06-04 19:30 ` Nicolas Goaziou
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CABSfPEqMx9o7VsNsgeyH2NTzzvS78vheZ2RM2tyDiQXaAkkMMQ@mail.gmail.com \
--to=don@ohspite.net \
--cc=emacs-orgmode@gnu.org \
--cc=mail@nicolasgoaziou.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).