소스 검색

ox-icalendar: Prevent duplicates when writing agenda view

* lisp/ox-icalendar.el (org-icalendar-export-current-agenda): Prevent
  duplicates when writing agenda view.

Reported-by: Nicolae Cindea <ncindea@gmail.com>
http://lists.gnu.org/archive/html/emacs-orgmode/2017-08/msg00116.html
Nicolas Goaziou 7 년 전
부모
커밋
e67f0f29de
1개의 변경된 파일7개의 추가작업 그리고 5개의 파일을 삭제
  1. 7 5
      lisp/ox-icalendar.el

+ 7 - 5
lisp/ox-icalendar.el

@@ -879,22 +879,24 @@ The file is stored under the name chosen in
   "Export current agenda view to an iCalendar FILE.
 This function assumes major mode for current buffer is
 `org-agenda-mode'."
-  (let* ((org-export-babel-evaluate)	; Don't evaluate Babel block.
+  (let* ((org-export-babel-evaluate)	;don't evaluate Babel blocks
 	 (contents
 	  (org-export-string-as
 	   (with-output-to-string
 	     (save-excursion
-	       (let ((p (point-min)))
+	       (let ((p (point-min))
+		     (seen nil))	;prevent duplicates
 		 (while (setq p (next-single-property-change p 'org-hd-marker))
 		   (let ((m (get-text-property p 'org-hd-marker)))
-		     (when m
+		     (when (and m (not (memq m seen)))
+		       (push m seen)
 		       (with-current-buffer (marker-buffer m)
 			 (org-with-wide-buffer
 			  (goto-char (marker-position m))
 			  (princ
 			   (org-element-normalize-string
-			    (buffer-substring
-			     (point) (progn (outline-next-heading) (point)))))))))
+			    (buffer-substring (point)
+					      (org-entry-end-position))))))))
 		   (forward-line)))))
 	   'icalendar t
 	   '(:ascii-charset utf-8 :ascii-links-to-notes nil