| 
					
				 | 
			
			
				@@ -165,6 +165,7 @@ Returns a list with the following elements: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   2: Optional deadline (nil if not present) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   3: If deadline, the repeater for the deadline, otherwise nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   4: A list of all the past dates this todo was mark closed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  5: Repeater type as a string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 This list represents a \"habit\" for the rest of this module." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (save-excursion 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -174,7 +175,7 @@ This list represents a \"habit\" for the rest of this module." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	   (scheduled-repeat (org-get-repeat org-scheduled-string)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	   (end (org-entry-end-position)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	   (habit-entry (org-no-properties (nth 4 (org-heading-components)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	   closed-dates deadline dr-days sr-days) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	   closed-dates deadline dr-days sr-days sr-type) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (if scheduled 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	  (setq scheduled (time-to-days scheduled)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	(error "Habit %s has no scheduled date" habit-entry)) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -182,7 +183,9 @@ This list represents a \"habit\" for the rest of this module." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	(error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 "Habit '%s' has no scheduled repeat period or has an incorrect one" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 habit-entry)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      (setq sr-days (org-habit-duration-to-days scheduled-repeat)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (setq sr-days (org-habit-duration-to-days scheduled-repeat) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    sr-type (progn (string-match "[\\.+]?\\+" scheduled-repeat) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			   (org-match-string-no-properties 0 scheduled-repeat))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (unless (> sr-days 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	(error "Habit %s scheduled repeat period is less than 1d" habit-entry)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (when (string-match "/\\([0-9]+[dwmy]\\)" scheduled-repeat) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -223,7 +226,7 @@ This list represents a \"habit\" for the rest of this module." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		      (org-match-string-no-properties 2)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		closed-dates) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	  (setq count (1+ count)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      (list scheduled sr-days deadline dr-days closed-dates)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (list scheduled sr-days deadline dr-days closed-dates sr-type)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (defsubst org-habit-scheduled (habit) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (nth 0 habit)) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -241,6 +244,8 @@ This list represents a \"habit\" for the rest of this module." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (org-habit-scheduled-repeat habit))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (defsubst org-habit-done-dates (habit) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (nth 4 habit)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(defsubst org-habit-repeat-type (habit) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (nth 5 habit)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (defsubst org-habit-get-priority (habit &optional moment) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Determine the relative priority of a habit. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -327,10 +332,27 @@ current time." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			     (not (< scheduled now))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			'(org-habit-clear-face . org-habit-clear-future-face) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		      (org-habit-get-faces 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		       habit start (and in-the-past-p 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					(if last-done-date 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					    (+ last-done-date s-repeat) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					  scheduled)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		       habit start 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		       (and in-the-past-p last-done-date 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			    ;; Compute scheduled time for habit at the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			    ;; time START was current. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			    (let ((type (org-habit-repeat-type habit))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			      (cond 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			       ((equal type ".+") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				(+ last-done-date s-repeat)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			       ((equal type "+") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				;; Since LAST-DONE-DATE, each done 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				;; mark shifted scheduled date by 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				;; S-REPEAT. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				(- scheduled (* (length done-dates) s-repeat))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			       (t 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				;; Scheduled time was the first time 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				;; past LAST-DONE-STATE which can jump 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				;; to current SCHEDULED time by 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				;; S-REPEAT hops. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				(- scheduled 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				   (* (/ (- scheduled last-done-date) s-repeat) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				      s-repeat)))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		       donep))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	     markedp face) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	(if donep 
			 |