emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* [PATCH] Include missing files when sitemap style is tree
@ 2020-09-12  3:26 Anthony Carrico
  2020-10-24 12:21 ` Bastien
  0 siblings, 1 reply; 3+ messages in thread
From: Anthony Carrico @ 2020-09-12  3:26 UTC (permalink / raw)
  To: emacs-orgmode

* ox-publish.el (org-publish-sitemap): Include files that have an 
ancestor below base-directory with no published files and sitemap style 
is tree.

This entire patch is released to the public domain by its author, 
Anthony Carrico.  TINYCHANGE
---
  lisp/ox-publish.el | 21 +++++++++++++++++++--
  1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/lisp/ox-publish.el b/lisp/ox-publish.el
index 7bb2fed6e..314b48ffc 100644
--- a/lisp/ox-publish.el
+++ b/lisp/ox-publish.el
@@ -747,6 +747,20 @@ return a string.  Return value is a list as returned by
  	 (funcall subtree-to-list root)))
        (_ (user-error "Unknown site-map style: `%s'" style)))))

+(defun org-publish-dir-name-parent (dir-name)
+  (file-name-as-directory (expand-file-name (concat dir-name ".."))))
+
+(defun org-publish-dir-name-and-parents (dir-name root-dir-name)
+  (pcase dir-name
+     ("" nil)
+     ((or "./" "/" (pred (string= root-dir-name))) (list dir-name))
+     (_ (cons dir-name (org-publish-dir-name-and-parents
+			(org-publish-dir-name-parent dir-name) root-dir-name)))))
+
+(defun org-publish-file-name-parents (file root)
+  (org-publish-dir-name-and-parents (file-name-directory file)
+				    (file-name-as-directory root)))
+
  (defun org-publish-sitemap (project &optional sitemap-filename)
    "Create a sitemap of pages in set defined by PROJECT.
  Optionally set the filename of the sitemap with SITEMAP-FILENAME.
@@ -819,8 +833,11 @@ Default for SITEMAP-FILENAME is `sitemap.org'."
  	 ;; Add directories, if applicable.
  	 (unless (and (eq style 'list) (eq sort-folders 'ignore))
  	   (setq files
-		 (nconc (remove root (org-uniquify
-				      (mapcar #'file-name-directory files)))
+		 (nconc (remove
+			 root
+			 (org-uniquify
+			  (mapcan (lambda (f) (org-publish-file-name-parents f root))
+				  files)))
  			files)))
  	 ;; Eventually sort all entries.
  	 (when (or sort-files (not (memq sort-folders 'ignore)))
-- 
2.25.4



^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-10-27  0:40 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-09-12  3:26 [PATCH] Include missing files when sitemap style is tree Anthony Carrico
2020-10-24 12:21 ` Bastien
2020-10-27  0:38   ` Anthony Carrico

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).