Browse Source

Merge branch 'maint'

Nicolas Goaziou 8 years ago
parent
commit
c1c510ffe0
1 changed files with 45 additions and 45 deletions
  1. 45 45
      lisp/org-colview.el

+ 45 - 45
lisp/org-colview.el

@@ -1571,51 +1571,51 @@ This will add overlays to the date lines, to show the summary for each day."
     ;; Ensure there's at least one summation column.
     (when (cl-some (lambda (spec) (nth 3 spec)) fmt)
       (goto-char (point-max))
-      (while (not (bobp))
-	(when (or (get-text-property (point) 'org-date-line)
-		  (eq (get-text-property (point) 'face)
-		      'org-agenda-structure))
-	  ;; OK, this is a date line that should be used.
-	  (let (rest)
-	    (dolist (c cache (setq cache rest))
-	      (if (> (car c) (point))
-		  (push c entries)
-		(push c rest))))
-	  ;; Now ENTRIES contains entries below the current one.
-	  ;; CACHE is the rest.  Compute the summaries for the
-	  ;; properties we want, set nil properties for the rest.
-	  (when (setq entries (mapcar 'cdr entries))
-	    (org-columns--display-here
-	     (mapcar
-	      (lambda (spec)
-		(pcase spec
-		  (`("ITEM" . ,_)
-		   ;; Replace ITEM with current date.  Preserve
-		   ;; properties for fontification.
-		   (let ((date (buffer-substring
-				(line-beginning-position)
-				(line-end-position))))
-		     (list spec date date)))
-		  (`(,_ ,_ ,_ nil ,_) (list spec "" ""))
-		  (`(,_ ,_ ,_ ,operator ,printf)
-		   (let* ((summarize (org-columns--summarize operator))
-			  (values
-			   ;; Use real values for summary, not those
-			   ;; prepared for display.
-			   (delq nil
-				 (mapcar
-				  (lambda (e)
-				    (org-string-nw-p (nth 1 (assoc spec e))))
-				  entries)))
-			  (final (if values (funcall summarize values printf)
-				   "")))
-		     (unless (equal final "")
-		       (put-text-property 0 (length final) 'face 'bold final))
-		     (list spec final final)))))
-	      fmt)
-	     'dateline)
-	    (setq-local org-agenda-columns-active t)))
-	(forward-line -1)))))
+      (catch :complete
+	(while t
+	  (when (or (get-text-property (point) 'org-date-line)
+		    (eq (get-text-property (point) 'face) 'org-agenda-structure))
+	    ;; OK, this is a date line that should be used.
+	    (let (rest)
+	      (dolist (c cache (setq cache rest))
+		(if (> (car c) (point))
+		    (push c entries)
+		  (push c rest))))
+	    ;; Now ENTRIES contains entries below the current one.
+	    ;; CACHE is the rest.  Compute the summaries for the
+	    ;; properties we want, set nil properties for the rest.
+	    (when (setq entries (mapcar #'cdr entries))
+	      (org-columns--display-here
+	       (mapcar
+		(lambda (spec)
+		  (pcase spec
+		    (`("ITEM" . ,_)
+		     ;; Replace ITEM with current date.  Preserve
+		     ;; properties for fontification.
+		     (let ((date (buffer-substring
+				  (line-beginning-position)
+				  (line-end-position))))
+		       (list spec date date)))
+		    (`(,_ ,_ ,_ nil ,_) (list spec "" ""))
+		    (`(,_ ,_ ,_ ,operator ,printf)
+		     (let* ((summarize (org-columns--summarize operator))
+			    (values
+			     ;; Use real values for summary, not those
+			     ;; prepared for display.
+			     (delq nil
+				   (mapcar
+				    (lambda (e)
+				      (org-string-nw-p (nth 1 (assoc spec e))))
+				    entries)))
+			    (final (if values (funcall summarize values printf)
+				     "")))
+		       (unless (equal final "")
+			 (put-text-property 0 (length final) 'face 'bold final))
+		       (list spec final final)))))
+		fmt)
+	       'dateline)
+	      (setq-local org-agenda-columns-active t)))
+	  (if (bobp) (throw :complete t) (forward-line -1)))))))
 
 (defun org-agenda-colview-compute (fmt)
   "Compute the relevant columns in the contributing source buffers."