summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2017-08-05 11:02:14 +0200
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2017-08-05 11:02:14 +0200
commite67f0f29dec2978b6230a9885cf04c90647b03d0 (patch)
tree22b40d1ea44959ef1aecacb9936f20f5331d078e
parentf320f05192df50f3b6da22e7335b3ac38c8b9710 (diff)
downloadorg-mode-e67f0f29dec2978b6230a9885cf04c90647b03d0.tar.gz
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
-rw-r--r--lisp/ox-icalendar.el12
1 files changed, 7 insertions, 5 deletions
diff --git a/lisp/ox-icalendar.el b/lisp/ox-icalendar.el
index 9ccbb27..3dd02bf 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