Browse Source

Hide .orgx files and use theindex.org directly.

Deleting .orgx files is an error -- thanks to Carsten for pointing
at this.  Instead, we "hide" them by using dotted files: .file.orgx.

Also, use theindex.org directly instead of including theindex.inc in
theindex.org.  This prevents a bug about republication of theindex.org
being skipped because the file has not been updated.

* org-publish.el (org-publish-index-generate-theindex): rename
from `org-publish-index-generate-theindex.inc'.  Use the file
theindex.org directly instead of including theindex.inc.
(org-publish-projects): Don't delete .orgx files.
(org-publish-aux-preprocess): Use .file.orgx.
Bastien Guerry 6 years ago
parent
commit
f0d7acfb78
1 changed files with 11 additions and 22 deletions
  1. 11 22
      lisp/org-publish.el

+ 11 - 22
lisp/org-publish.el

@@ -740,14 +740,12 @@ If :makeindex is set, also produce a file theindex.org."
        (while (setq file (pop files))
 	 (org-publish-file file project t))
        (when (plist-get project-plist :makeindex)
-	 (org-publish-index-generate-theindex.inc
-	  ;; (or org-publish-orgx-directory
-	      (plist-get project-plist :base-directory)); )
+	 (org-publish-index-generate-theindex
+	  (plist-get project-plist :base-directory))
 	 (org-publish-file (expand-file-name
 			    "theindex.org"
 			    (plist-get project-plist :base-directory))
-			   project t)
-	 (delete-file (expand-file-name "theindex.orgx")))
+			   project t))
        (when completion-function (run-hooks 'completion-function))
      (org-publish-write-cache-file)))
    (org-publish-expand-projects projects)))
@@ -964,11 +962,14 @@ the project."
 			 target ""))
 	(push (cons entry target) index)))
     (with-temp-file
-	(concat (file-name-sans-extension org-current-export-file) ".orgx")
+	(concat
+	 (file-name-directory org-current-export-file) "."
+	 (file-name-sans-extension
+	  (file-name-nondirectory org-current-export-file)) ".orgx")
       (dolist (entry (nreverse index))
 	(insert (format "INDEX: (%s) %s\n" (cdr entry) (car entry)))))))
 
-(defun org-publish-index-generate-theindex.inc (directory)
+(defun org-publish-index-generate-theindex (directory)
   "Generate the index from all .orgx files in DIRECTORY."
   (require 'find-lisp)
   (let* ((fulldir (file-name-as-directory
@@ -984,7 +985,7 @@ the project."
 	 main last-main letter last-letter file sub link tgext)
     ;; `files' contains the list of relative file names
     (dolist (file files)
-      (setq origfile (substring file 0 -1))
+      (setq origfile (substring file 1 -1))
       (setq buf (find-file-noselect file))
       (with-current-buffer buf
 	(goto-char (point-min))
@@ -993,11 +994,9 @@ the project."
 		entry (match-string 2))
 	  (push (list entry origfile target) index)))
       (kill-buffer buf))
-    ;; delete .orgx files from current directory:
-    (mapc 'delete-file full-files)
     (setq index (sort index (lambda (a b) (string< (downcase (car a))
 						   (downcase (car b))))))
-    (setq ibuffer (find-file-noselect (expand-file-name "theindex.inc" directory)))
+    (setq ibuffer (find-file-noselect (expand-file-name "theindex.org" directory)))
     (with-current-buffer ibuffer
       (erase-buffer)
       (insert "* Index\n")
@@ -1024,17 +1023,7 @@ the project."
 	    (insert "     - " link "\n")
 	  (insert "   - " link "\n")))
       (save-buffer))
-    (kill-buffer ibuffer)
-
-    (let ((index-file (expand-file-name "theindex.org" directory)))
-      (unless (file-exists-p index-file)
-	(setq ibuffer (find-file-noselect index-file))
-	(with-current-buffer ibuffer
-	  (erase-buffer)
-	  (insert "\n\n#+include: \"theindex.inc\"\n\n")
-	  (save-buffer))
-	(kill-buffer ibuffer)))))
-
+    (kill-buffer ibuffer)))
 
 ;; Caching functions: