diff options
author | Nicolas Goaziou <mail@nicolasgoaziou.fr> | 2017-08-05 11:02:14 +0200 |
---|---|---|
committer | Nicolas Goaziou <mail@nicolasgoaziou.fr> | 2017-08-05 11:02:14 +0200 |
commit | e67f0f29dec2978b6230a9885cf04c90647b03d0 (patch) | |
tree | 22b40d1ea44959ef1aecacb9936f20f5331d078e | |
parent | f320f05192df50f3b6da22e7335b3ac38c8b9710 (diff) | |
download | org-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.el | 12 |
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 |