Re: [O] [PATCH 1/3] org-habit: Add org-habit-scheduled-past-days

2019-02-08 Thread John Lee
On Thu, 7 Feb 2019, at 21:27, John Lee wrote:
> On Wed, 6 Feb 2019, at 21:32, Nicolas Goaziou wrote:
> > I applied them in master. Thank you.
> 
> Thank you!
> 
> > Could you provide an entry for ORG-NEWS file, too?

Attached.
From ded5296358ec2bcfbe58a662b5112226298bf43f Mon Sep 17 00:00:00 2001
From: John Lee 
Date: Fri, 8 Feb 2019 23:13:01 +
Subject: [PATCH] Add to ORG-NEWS for recent org-habit changes

---
 etc/ORG-NEWS | 25 +
 1 file changed, 25 insertions(+)

diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index bf14412fd..595d1895c 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -13,6 +13,16 @@ Please send Org bug reports to mailto:emacs-orgmode@gnu.org.
 * Version 9.3
 
 ** Incompatible changes
+*** org-agenda now always shows the time of day for ~org-habit~ habits
+
+Scheduled items with an associated time of day don't normally show the
+time in the agenda if they were missed, because they're regarded as
+only a reminder of a specific appointment that was already missed.
+That behaviour is unchanged, except for scheduled items that represent
+~org-habit~ habits, which now always show any time designation,
+because the time of a habit is regarded as the time when the habit
+should be done, even if one repeat was missed.
+
 *** ob-clojure will not auto prepend ~(ns ..)~ statement now
 When tangling, user usually just want to tangle literally code instead
 of prepend inserting a ~(ns ..)~ statement before source block
@@ -54,6 +64,16 @@ alternative was removed and there is no more a :use-xcolor options
 since now it's implicitly always true.
 
 ** New features
+*** Support showing missed habits when ~org-scheduled-past-days~ is in effect
+
+This supports GTD-style workflows in which scheduled items are used as
+a way of "turning on" TODO items on a particular date, rather than as
+a means of creating calendar-based reminders to do tasks.  It was
+possible to achieve that using ~org-scheduled-past-days~, but that
+caused some habits to not be shown when it was time to do the habit.
+~org-habit-scheduled-past-days~ overrides that variable just for
+~org-habit~ items.
+
 *** Handle overlay specification for notes in Beamer export
 
 This aligns Beamer notes with slide overlays.
@@ -136,6 +156,11 @@ dynamic block in ~org-dynamic-block-alist~.
 It was unused throughout the code base.
 
 ** Miscellaneous
+*** Use face ~org-agenda-done~ for habits scheduled for future
+
+This has the effect that if you just did the habit, it is "greyed out"
+in the agenda (given appropriate face configuration).
+
 *** No more special indentation for description items
 
 Descriptions items are indented like regular ones, i.e., text starts
-- 
2.17.1



Re: [O] [PATCH 1/3] org-habit: Add org-habit-scheduled-past-days

2019-02-07 Thread John Lee
On Wed, 6 Feb 2019, at 21:32, Nicolas Goaziou wrote:
> I applied them in master. Thank you.

Thank you!

> Could you provide an entry for ORG-NEWS file, too?

Will do.



Re: [O] [PATCH 1/3] org-habit: Add org-habit-scheduled-past-days

2019-02-06 Thread Nicolas Goaziou
Hello,

John Lee  writes:

> OK I guess in fact I'm 1. supposed to attach the patches (?) 

You can also thread them.

> The new thing here since Nicolas reviewed this last year (apart from
> applying changes in response to review feedback) is "greying out"
> habits that you just did, by applying face 'org-agenda-done when
> a habit is scheduled for the future.

I applied them in master. Thank you.

Could you provide an entry for ORG-NEWS file, too?

Regards,

-- 
Nicolas Goaziou



Re: [O] [PATCH 1/3] org-habit: Add org-habit-scheduled-past-days

2019-02-03 Thread John Lee
OK I guess in fact I'm 1. supposed to attach the patches (?) and 2. they 
contain hashes so I guess I should reattach them all together, having changed 
the first.  Here they are.  Sorry, I'm new to this email workflow.

The new thing here since Nicolas reviewed this last year (apart from applying 
changes in response to review feedback) is "greying out" habits that you just 
did, by applying face 'org-agenda-done when a habit is scheduled for the future.

On Sun, 3 Feb 2019, at 16:03, John Lee wrote:
> * lisp/org-habit.el (org-habit-scheduled-past-days): New variable
> 
> * lisp/org-agenda.el (org-agenda-get-scheduled): override
>   `org-scheduled-past-days' for habits if
>   `org-habit-scheduled-past-days` is not nil
> 
> TINYCHANGE
> ---
>  lisp/org-agenda.el |  4 +++-
>  lisp/org-habit.el  | 15 +++
>  2 files changed, 18 insertions(+), 1 deletion(-)
> 
> diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
> index 489ecec95..784a555a9 100644
> --- a/lisp/org-agenda.el
> +++ b/lisp/org-agenda.el
> @@ -90,6 +90,7 @@
>  (defvar org-habit-show-habits)
>  (defvar org-habit-show-habits-only-for-today)
>  (defvar org-habit-show-all-today)
> +(defvar org-habit-scheduled-past-days)
>  
>  ;; Defined somewhere in this file, but used before definition.
>  (defvar org-agenda-buffer-name "*Org Agenda*")
> @@ -6201,7 +6202,8 @@ scheduled items with an hour specification like 
> [h]h:mm."
>  habitp
>  (bound-and-true-p org-habit-show-all-today))
>   (when (or (and (> ddays 0) (< diff ddays))
> -   (> diff org-scheduled-past-days)
> +   (> diff (or (and habitp org-habit-scheduled-past-days)
> +   org-scheduled-past-days))
> (> schedule current)
> (and (/= current schedule)
>  (/= current today)
> diff --git a/lisp/org-habit.el b/lisp/org-habit.el
> index af4520729..88df38ce0 100644
> --- a/lisp/org-habit.el
> +++ b/lisp/org-habit.el
> @@ -89,6 +89,21 @@ It will be green even if it was done after the deadline."
>:group 'org-habit
>:type 'boolean)
>  
> +(defcustom org-habit-scheduled-past-days nil
> +"Value to use instead of `org-scheduled-past-days', for habits only.
> +
> +If nil, `org-scheduled-past-days' is used.
> +
> +Setting this to say 1 is a way to make habits always show up
> +as a reminder, even if you set `org-scheduled-past-days' to a
> +small value because you regard scheduled items as a way of
> +\"turning on\" TODO items on a particular date, rather than as a
> +means of creating calendar-based reminders."
> +  :group 'org-habit
> +  :type '(choice integer (const nil))
> +  :package-version '(Org . "9.3")
> +  :safe (lambda (v) (or (integerp v) (null v
> +
>  (defface org-habit-clear-face
>'background light)) (:background "#8270f9"))
>  (((background dark)) (:background "blue")))
> -- 
> 2.17.1
> 
> 
From 81a56b4b2fd8bfa92695a8386158f6e03584f948 Mon Sep 17 00:00:00 2001
From: John Lee 
Date: Sun, 3 Feb 2019 12:35:39 +
Subject: [PATCH 1/3] org-habit: Add org-habit-scheduled-past-days

* lisp/org-habit.el (org-habit-scheduled-past-days): New variable

* lisp/org-agenda.el (org-agenda-get-scheduled): override
  `org-scheduled-past-days' for habits if
  `org-habit-scheduled-past-days` is not nil

TINYCHANGE
---
 lisp/org-agenda.el |  4 +++-
 lisp/org-habit.el  | 15 +++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index 489ecec95..784a555a9 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -90,6 +90,7 @@
 (defvar org-habit-show-habits)
 (defvar org-habit-show-habits-only-for-today)
 (defvar org-habit-show-all-today)
+(defvar org-habit-scheduled-past-days)
 
 ;; Defined somewhere in this file, but used before definition.
 (defvar org-agenda-buffer-name "*Org Agenda*")
@@ -6201,7 +6202,8 @@ scheduled items with an hour specification like [h]h:mm."
 		   habitp
 		   (bound-and-true-p org-habit-show-all-today))
 	(when (or (and (> ddays 0) (< diff ddays))
-		  (> diff org-scheduled-past-days)
+		  (> diff (or (and habitp org-habit-scheduled-past-days)
+  org-scheduled-past-days))
 		  (> schedule current)
 		  (and (/= current schedule)
 			   (/= current today)
diff --git a/lisp/org-habit.el b/lisp/org-habit.el
index af4520729..88df38ce0 100644
--- a/lisp/org-habit.el
+++ b/lisp/org-habit.el
@@ -89,6 +89,21 @@ It will be green even if it was done after the deadline."
   :group 'org-habit
   :type 'boolean)
 
+(defcustom org-habit-scheduled-past-days nil
+"Value to use instead of `org-scheduled-past-days', for habits only.
+
+If nil, `org-scheduled-past-days' is used.
+
+Setting this to say 1 is a way to make habits always show up
+as a reminder, even if you set `org-scheduled-past-days' to a
+small value because you regard scheduled items as a way of
+\"turning on\" TODO items on a 

[O] [PATCH 1/3] org-habit: Add org-habit-scheduled-past-days

2019-02-03 Thread John Lee
* lisp/org-habit.el (org-habit-scheduled-past-days): New variable

* lisp/org-agenda.el (org-agenda-get-scheduled): override
  `org-scheduled-past-days' for habits if
  `org-habit-scheduled-past-days` is not nil

TINYCHANGE
---
 lisp/org-agenda.el |  4 +++-
 lisp/org-habit.el  | 15 +++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index 489ecec95..784a555a9 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -90,6 +90,7 @@
 (defvar org-habit-show-habits)
 (defvar org-habit-show-habits-only-for-today)
 (defvar org-habit-show-all-today)
+(defvar org-habit-scheduled-past-days)
 
 ;; Defined somewhere in this file, but used before definition.
 (defvar org-agenda-buffer-name "*Org Agenda*")
@@ -6201,7 +6202,8 @@ scheduled items with an hour specification like [h]h:mm."
   habitp
   (bound-and-true-p org-habit-show-all-today))
(when (or (and (> ddays 0) (< diff ddays))
- (> diff org-scheduled-past-days)
+ (> diff (or (and habitp org-habit-scheduled-past-days)
+ org-scheduled-past-days))
  (> schedule current)
  (and (/= current schedule)
   (/= current today)
diff --git a/lisp/org-habit.el b/lisp/org-habit.el
index af4520729..88df38ce0 100644
--- a/lisp/org-habit.el
+++ b/lisp/org-habit.el
@@ -89,6 +89,21 @@ It will be green even if it was done after the deadline."
   :group 'org-habit
   :type 'boolean)
 
+(defcustom org-habit-scheduled-past-days nil
+"Value to use instead of `org-scheduled-past-days', for habits only.
+
+If nil, `org-scheduled-past-days' is used.
+
+Setting this to say 1 is a way to make habits always show up
+as a reminder, even if you set `org-scheduled-past-days' to a
+small value because you regard scheduled items as a way of
+\"turning on\" TODO items on a particular date, rather than as a
+means of creating calendar-based reminders."
+  :group 'org-habit
+  :type '(choice integer (const nil))
+  :package-version '(Org . "9.3")
+  :safe (lambda (v) (or (integerp v) (null v
+
 (defface org-habit-clear-face
   'background light)) (:background "#8270f9"))
 (((background dark)) (:background "blue")))
-- 
2.17.1




[O] [PATCH 1/3] org-habit: Add org-habit-scheduled-past-days

2019-02-03 Thread John Lee
* lisp/org-habit.el (org-habit-scheduled-past-days): New variable

* lisp/org-agenda.el (org-agenda-get-scheduled): override
  `org-scheduled-past-days' for habits if
  `org-habit-scheduled-past-days` is not nil

TINYCHANGE
---
 lisp/org-agenda.el |  8 +++-
 lisp/org-habit.el  | 15 +++
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index 489ecec95..9145cafa8 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -90,6 +90,7 @@
 (defvar org-habit-show-habits)
 (defvar org-habit-show-habits-only-for-today)
 (defvar org-habit-show-all-today)
+(defvar org-habit-scheduled-past-days)
 
 ;; Defined somewhere in this file, but used before definition.
 (defvar org-agenda-buffer-name "*Org Agenda*")
@@ -6201,7 +6202,12 @@ scheduled items with an hour specification like [h]h:mm."
   habitp
   (bound-and-true-p org-habit-show-all-today))
(when (or (and (> ddays 0) (< diff ddays))
- (> diff org-scheduled-past-days)
+ (> diff
+(if habitp
+(if (null org-habit-scheduled-past-days)
+org-scheduled-past-days
+  org-habit-scheduled-past-days)
+  org-scheduled-past-days))
  (> schedule current)
  (and (/= current schedule)
   (/= current today)
diff --git a/lisp/org-habit.el b/lisp/org-habit.el
index af4520729..88df38ce0 100644
--- a/lisp/org-habit.el
+++ b/lisp/org-habit.el
@@ -89,6 +89,21 @@ It will be green even if it was done after the deadline."
   :group 'org-habit
   :type 'boolean)
 
+(defcustom org-habit-scheduled-past-days nil
+"Value to use instead of `org-scheduled-past-days', for habits only.
+
+If nil, `org-scheduled-past-days' is used.
+
+Setting this to say 1 is a way to make habits always show up
+as a reminder, even if you set `org-scheduled-past-days' to a
+small value because you regard scheduled items as a way of
+\"turning on\" TODO items on a particular date, rather than as a
+means of creating calendar-based reminders."
+  :group 'org-habit
+  :type '(choice integer (const nil))
+  :package-version '(Org . "9.3")
+  :safe (lambda (v) (or (integerp v) (null v
+
 (defface org-habit-clear-face
   'background light)) (:background "#8270f9"))
 (((background dark)) (:background "blue")))
-- 
2.17.1