Nicolas Goaziou <m...@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.
From 4953e495b938011582fb0c7c7bf9064530ce9294 Mon Sep 17 00:00:00 2001 From: Don March <d...@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")))))) + ;;; Drawers -- 2.8.1
From 143f802073989fff8fe464244f53089e79e92812 Mon Sep 17 00:00:00 2001 From: Don March <d...@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")))))) ;;; Drawers -- 2.8.1