From e67f0f29dec2978b6230a9885cf04c90647b03d0 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sat, 5 Aug 2017 11:02:14 +0200 Subject: [PATCH] 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 http://lists.gnu.org/archive/html/emacs-orgmode/2017-08/msg00116.html --- lisp/ox-icalendar.el | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lisp/ox-icalendar.el b/lisp/ox-icalendar.el index 9ccbb2724..3dd02bfe4 100644 --- a/lisp/ox-icalendar.el +++ b/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