| 
					
				 | 
			
			
				@@ -1,4 +1,4 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;;; ox-icalendar.el --- iCalendar Back-End for Org Export Engine 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+;;; ox-icalendar.el --- iCalendar Back-End for Org Export Engine -*- lexical-binding: t; -*- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ;; Copyright (C) 2004-2015 Free Software Foundation, Inc. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -407,27 +407,25 @@ Universal Time, ignoring `org-icalendar-date-time-format'." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ENTRY is a headline or an inlinetask element.  INFO is a plist 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 used as a communication channel." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (mapconcat 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   'identity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   #'identity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    (org-uniquify 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     (let (categories) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      (mapc (lambda (type) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	      (case type 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		(category 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		 (push (org-export-get-category entry info) categories)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		(todo-state 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		 (let ((todo (org-element-property :todo-keyword entry))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		   (and todo (push todo categories)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		(local-tags 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		 (setq categories 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		       (append (nreverse (org-export-get-tags entry info)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			       categories))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		(all-tags 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		 (setq categories 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		       (append (nreverse (org-export-get-tags entry info nil t)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			       categories))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	    org-icalendar-categories) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      ;; Return list of categories, following specified order. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      (nreverse categories))) ",")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (dolist (type org-icalendar-categories (nreverse categories)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	(case type 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (category 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	   (push (org-export-get-category entry info) categories)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (todo-state 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	   (let ((todo (org-element-property :todo-keyword entry))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	     (and todo (push todo categories)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (local-tags 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	   (setq categories 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 (append (nreverse (org-export-get-tags entry info)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 categories))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (all-tags 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	   (setq categories 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 (append (nreverse (org-export-get-tags entry info nil t)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 categories))))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   ",")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (defun org-icalendar-transcode-diary-sexp (sexp uid summary) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Transcode a diary sexp into iCalendar format. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -479,7 +477,7 @@ or subject for the event." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ;;; Filters 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-(defun org-icalendar-clear-blank-lines (headline back-end info) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(defun org-icalendar-clear-blank-lines (headline _back-end _info) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Remove blank lines in HEADLINE export. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 HEADLINE is a string representing a transcoded headline. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 BACK-END and INFO are ignored." 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -839,24 +837,20 @@ external process." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (let ((files (org-remove-if-not 'file-exists-p (org-agenda-files t)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	(org-export-async-start 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	    (lambda (results) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	      (mapc (lambda (f) (org-export-add-to-stack f 'icalendar)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		    results)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      (dolist (f results) (org-export-add-to-stack f 'icalendar))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	  `(let (output-files) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	     (mapc (lambda (file) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		     (with-current-buffer (org-get-agenda-file-buffer file) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		       (push (expand-file-name (org-icalendar-export-to-ics)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			     output-files))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		   ',files) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	     output-files))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	     (dolist (file ',files outputfiles) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	       (with-current-buffer (org-get-agenda-file-buffer file) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 (push (expand-file-name (org-icalendar-export-to-ics)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		       output-files)))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     (let ((files (org-agenda-files t))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (org-agenda-prepare-buffers files) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (unwind-protect 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	  (mapc (lambda (file) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		  (catch 'nextfile 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		    (org-check-agenda-file file) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		    (with-current-buffer (org-get-agenda-file-buffer file) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		      (org-icalendar-export-to-ics)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		files) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (dolist (file files) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    (catch 'nextfile 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      (org-check-agenda-file file) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      (with-current-buffer (org-get-agenda-file-buffer file) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		(org-icalendar-export-to-ics)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	(org-release-buffers org-agenda-new-buffers))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ;;;###autoload 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -871,14 +865,14 @@ The file is stored under the name chosen in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 `org-icalendar-combined-agenda-file'." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (interactive) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (if async 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      (let ((files (org-remove-if-not 'file-exists-p (org-agenda-files t)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (let ((files (org-remove-if-not #'file-exists-p (org-agenda-files t)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	(org-export-async-start 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	    (lambda (dummy) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    (lambda (_) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	      (org-export-add-to-stack 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	       (expand-file-name org-icalendar-combined-agenda-file) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	       'icalendar)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	  `(apply 'org-icalendar--combine-files ',files))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    (apply 'org-icalendar--combine-files (org-agenda-files t)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  `(apply #'org-icalendar--combine-files ',files))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    (apply #'org-icalendar--combine-files (org-agenda-files t)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (defun org-icalendar-export-current-agenda (file) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Export current agenda view to an iCalendar FILE. 
			 |