| 
					
				 | 
			
			
				@@ -449,10 +449,16 @@ matching the regexp SKIP-DIR when recursing through BASE-DIR." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			  (not (string-match match fnd))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		(pushnew f org-publish-temp-files))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	(if org-sitemap-requested 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	    (sort (directory-files base-dir t (unless recurse match)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		  'org-publish-compare-directory-files) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	  (directory-files base-dir t (unless recurse match))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	(let ((all-files (if (not recurse) (directory-files base-dir t match) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			   ;; If RECURSE is non-nil, we want all files 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			   ;; matching MATCH and sub-directories. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			   (org-remove-if-not 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			    (lambda (file) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			      (or (file-directory-p file) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				  (and match (string-match match file)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			    (directory-files base-dir t))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (if (not org-sitemap-requested) all-files 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    (sort all-files 'org-publish-compare-directory-files))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (defun org-publish-get-base-files (project &optional exclude-regexp) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Return a list of all files in PROJECT. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -811,30 +817,32 @@ Default for SITEMAP-FILENAME is 'sitemap.org'." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (defun org-publish-find-date (file) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Find the date of FILE in project. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-If FILE provides a DATE keyword use it else use the file system's 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-modification time.  Return time in `current-time' format." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  (let* ((org-inhibit-startup t) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 (visiting (find-buffer-visiting file)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 (file-buf (or visiting (find-file-noselect file nil))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 (date (plist-get 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		(with-current-buffer file-buf 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		  (org-mode) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		  (org-export-get-environment)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		:date))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    (unless visiting (kill-buffer file-buf)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ;; DATE is either a timestamp object or a secondary string.  If it 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ;; is a timestamp or if the secondary string contains a timestamp, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ;; convert it to internal format.  Otherwise, use FILE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ;; modification time. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    (cond ((eq (org-element-type date) 'timestamp) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	   (org-time-string-to-time (org-element-interpret-data date))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	  ((let ((ts (and (consp date) (assq 'timestamp date)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	     (and ts 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		  (let ((value (org-element-interpret-data ts))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		    (and (org-string-nw-p value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			 (org-time-string-to-time value)))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	  ((file-exists-p file) (nth 5 (file-attributes file))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	  (t (error "No such file: \"%s\"" file))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+This function assumes FILE is either a directory or an Org file. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+If FILE is an Org file and provides a DATE keyword use it.  In 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+any other case use the file system's modification time.  Return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+time in `current-time' format." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (if (file-directory-p file) (nth 5 (file-attributes file)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    (let* ((visiting (find-buffer-visiting file)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	   (file-buf (or visiting (find-file-noselect file nil))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	   (date (plist-get 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  (with-current-buffer file-buf 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		    (let ((org-inhibit-startup t)) (org-mode)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		    (org-export-get-environment)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  :date))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (unless visiting (kill-buffer file-buf)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ;; DATE is either a timestamp object or a secondary string.  If it 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ;; is a timestamp or if the secondary string contains a timestamp, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ;; convert it to internal format.  Otherwise, use FILE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ;; modification time. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (cond ((eq (org-element-type date) 'timestamp) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	     (org-time-string-to-time (org-element-interpret-data date))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    ((let ((ts (and (consp date) (assq 'timestamp date)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	       (and ts 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		    (let ((value (org-element-interpret-data ts))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		      (and (org-string-nw-p value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			   (org-time-string-to-time value)))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    ((file-exists-p file) (nth 5 (file-attributes file))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    (t (error "No such file: \"%s\"" file)))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |