| 
					
				 | 
			
			
				@@ -2694,16 +2694,15 @@ LEVEL is an integer.  Indent by two spaces per level above 1." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (defun org-clocktable-steps (params) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Step through the range to make a number of clock tables." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  (let* ((p1 (copy-sequence params)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 (ts (plist-get p1 :tstart)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 (te (plist-get p1 :tend)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 (ws (plist-get p1 :wstart)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 (ms (plist-get p1 :mstart)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 (step0 (plist-get p1 :step)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 (step (cdr (assoc step0 '((day . 86400) (week . 604800))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 (stepskip0 (plist-get p1 :stepskip0)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 (block (plist-get p1 :block)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 cc step-time tsb) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (let* ((ts (plist-get params :tstart)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 (te (plist-get params :tend)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 (ws (plist-get params :wstart)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 (ms (plist-get params :mstart)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 (step0 (plist-get params :step)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 (step (cdr (assq step0 '((day . 86400) (week . 604800))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 (stepskip0 (plist-get params :stepskip0)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 (block (plist-get params :block)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 cc tsb) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     (when block 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (setq cc (org-clock-special-range block nil t ws ms) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	    ts (car cc) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2726,37 +2725,37 @@ LEVEL is an integer.  Indent by two spaces per level above 1." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     (setq tsb 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	  (if (eq step0 'week) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	      (let ((dow (nth 6 (decode-time (seconds-to-time ts))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		(if (< dow ws) ts 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		(if (<= dow ws) ts 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		  (- ts (* 86400 (- dow ws))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	    ts)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    (setq p1 (plist-put p1 :header "")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    (setq p1 (plist-put p1 :step nil)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    (setq p1 (plist-put p1 :block nil)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     (while (< tsb te) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      (or (bolp) (insert "\n")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      (setq p1 (plist-put p1 :tstart (format-time-string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				      (org-time-stamp-format nil t) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				      (seconds-to-time (max tsb ts))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      (cl-incf tsb (let ((dow (nth 6 (decode-time (seconds-to-time tsb))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		     (if (or (eq step0 'day) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			     (= dow ws)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			 step 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		       (* 86400 (- ws dow))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      (setq p1 (plist-put p1 :tend (format-time-string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				    (org-time-stamp-format nil t) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				    (seconds-to-time (min te tsb))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      (insert "\n" (if (eq step0 'day) "Daily report: " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		     "Weekly report starting on: ") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	      (plist-get p1 :tstart) "\n") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      (setq step-time (org-dblock-write:clocktable p1)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      (re-search-forward "^[ \t]*#\\+END:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      (when (and (equal step-time 0) stepskip0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	;; Remove the empty table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	(delete-region (point-at-bol) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		       (save-excursion 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			 (re-search-backward "^\\(Daily\\|Weekly\\) report" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					     nil t) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			 (point)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (unless (bolp) (insert "\n")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (let ((start-time (seconds-to-time (max tsb ts)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	(cl-incf tsb (let ((dow (nth 6 (decode-time (seconds-to-time tsb))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		       (if (or (eq step0 'day) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			       (= dow ws)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			   step 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 (* 86400 (- ws dow))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	(insert "\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		(if (eq step0 'day) "Daily report: " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  "Weekly report starting on: ") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		(format-time-string (org-time-stamp-format nil t) start-time) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"\n") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	(let ((table-begin (line-beginning-position 0)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      (step-time 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	       (org-dblock-write:clocktable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		(org-combine-plists 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 params 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 (list 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  :header "" :step nil :block nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  :tstart (format-time-string (org-time-stamp-format t t) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					      start-time) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  :tend (format-time-string (org-time-stamp-format t t) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					    (seconds-to-time (min te tsb)))))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (re-search-forward "^[ \t]*#\\+END:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (when (and stepskip0 (equal step-time 0)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    ;; Remove the empty table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    (delete-region (line-beginning-position) table-begin)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (end-of-line 0)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (defun org-clock-get-table-data (file params) 
			 |