emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] trunk r113309: * admin.el (make-manuals): Add the option t


From: Glenn Morris
Subject: [Emacs-diffs] trunk r113309: * admin.el (make-manuals): Add the option to only make certain output types.
Date: Sat, 06 Jul 2013 18:28:59 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 113309
revision-id: address@hidden
parent: address@hidden
committer: Glenn Morris <address@hidden>
branch nick: trunk
timestamp: Sat 2013-07-06 11:28:54 -0700
message:
  * admin.el (make-manuals): Add the option to only make certain output types.
  (manual-misc-html): Special-case ccmode and efaq.
  (manual-html-mono, manual-html-node, manual-pdf, manual-ps):
  Move creation of output directory here from make-manuals.
  (manual-html-fix-index-2): Avoid dynamic reference to `f'.
modified:
  admin/ChangeLog                changelog-20091113204419-o5vbwnq5f7feedwu-2226
  admin/admin.el                 admin.el-20091113204419-o5vbwnq5f7feedwu-2254
=== modified file 'admin/ChangeLog'
--- a/admin/ChangeLog   2013-07-06 02:32:13 +0000
+++ b/admin/ChangeLog   2013-07-06 18:28:54 +0000
@@ -2,6 +2,11 @@
 
        * admin.el (manual-misc-manuals): New function.
        (make-manuals): Avoid hard-coding list of misc manuals.
+       Add the option to only make certain type(s) of output.
+       (manual-misc-html): Special-case ccmode and efaq.
+       (manual-html-mono, manual-html-node, manual-pdf, manual-ps):
+       Move creation of output directory here from make-manuals.
+       (manual-html-fix-index-2): Avoid dynamic reference to `f'.
 
 2013-07-05  Glenn Morris  <address@hidden>
 

=== modified file 'admin/admin.el'
--- a/admin/admin.el    2013-07-06 02:32:13 +0000
+++ b/admin/admin.el    2013-07-06 18:28:54 +0000
@@ -209,44 +209,66 @@
                     "\\(\\\\\\|\\.info\\)" ""
                     (buffer-substring start (point)))))))
 
-(defun make-manuals (root)
-  "Generate the web manuals for the Emacs webpage."
-  (interactive "DEmacs root directory: ")
+(defun make-manuals (root &optional type)
+  "Generate the web manuals for the Emacs webpage.
+Interactively with a prefix argument, prompt for TYPE.
+Optional argument TYPE is type of output (nil means all)."
+  (interactive (let ((root (read-directory-name "Emacs root directory: "
+                                               source-directory nil t)))
+                (list root
+                      (if current-prefix-arg
+                          (completing-read
+                           "Type: "
+                           (append
+                            '("misc" "pdf" "ps")
+                            (let (res)
+                              (dolist (i '("emacs" "elisp" "eintr") res)
+                                (dolist (j '("" "-mono" "-node" "-ps" "-pdf"))
+                                  (push (concat i j) res))))
+                            (manual-misc-manuals root)))))))
   (let* ((dest (expand-file-name "manual" root))
         (html-node-dir (expand-file-name "html_node" dest))
         (html-mono-dir (expand-file-name "html_mono" dest))
         (ps-dir (expand-file-name "ps" dest))
-        (pdf-dir (expand-file-name "pdf" dest)))
+        (pdf-dir (expand-file-name "pdf" dest))
+        (emacs (expand-file-name "doc/emacs/emacs.texi" root))
+        (elisp (expand-file-name "doc/lispref/elisp.texi" root))
+        (eintr (expand-file-name "doc/lispintro/emacs-lisp-intro.texi" root))
+        (misc (manual-misc-manuals root)))
+    ;; TODO this makes it non-continuable.
+    ;; Instead, delete the individual dest directory each time.
     (when (file-directory-p dest)
-      (if (y-or-n-p (format "Directory %s exists, delete it first?" dest))
+      (if (y-or-n-p (format "Directory %s exists, delete it first? " dest))
          (delete-directory dest t)
-       (error "Aborted")))
-    (make-directory dest)
-    (make-directory html-node-dir)
-    (make-directory html-mono-dir)
-    (make-directory ps-dir)
-    (make-directory pdf-dir)
-    ;; Emacs manual
-    (let ((texi (expand-file-name "doc/emacs/emacs.texi" root)))
-      (manual-html-node texi (expand-file-name "emacs" html-node-dir))
-      (manual-html-mono texi (expand-file-name "emacs.html" html-mono-dir))
-      (manual-pdf texi (expand-file-name "emacs.pdf" pdf-dif))
-      (manual-ps texi (expand-file-name "emacs.ps" ps-dir)))
-    ;; Lisp manual
-    (let ((texi (expand-file-name "doc/lispref/elisp.texi" root)))
-      (manual-html-node texi (expand-file-name "elisp" html-node-dir))
-      (manual-html-mono texi (expand-file-name "elisp.html" html-mono-dir))
-      (manual-pdf texi (expand-file-name "elisp.pdf" pdf-dir))
-      (manual-ps texi (expand-file-name "elisp.ps" ps-dir)))
-    ;; Lisp intro.
-    (let ((texi (expand-file-name "doc/lispintro/emacs-lisp-intro.texi" root)))
-      (manual-html-node texi (expand-file-name "eintr" html-node-dir))
-      (manual-html-mono texi (expand-file-name "eintr.html" html-mono-dir))
-      (manual-pdf texi (expand-file-name "eintr.pdf" pdf-dir))
-      (manual-ps texi (expand-file-name "eintr.ps" ps-dir)))
+       (user-error "Aborted")))
+    (if (member type '(nil "emacs" "emacs-node"))
+       (manual-html-node emacs (expand-file-name "emacs" html-node-dir)))
+    (if (member type '(nil "emacs" "emacs-mono"))
+       (manual-html-mono emacs (expand-file-name "emacs.html" html-mono-dir)))
+    (if (member type '(nil "emacs" "emacs-pdf" "pdf"))
+       (manual-pdf emacs (expand-file-name "emacs.pdf" pdf-dir)))
+    (if (member type '(nil "emacs" "emacs-ps" "ps"))
+       (manual-ps emacs (expand-file-name "emacs.ps" ps-dir)))
+    (if (member type '(nil "elisp" "elisp-node"))
+       (manual-html-node elisp (expand-file-name "elisp" html-node-dir)))
+    (if (member type '(nil "elisp" "elisp-mono"))
+       (manual-html-mono elisp (expand-file-name "elisp.html" html-mono-dir)))
+    (if (member type '(nil "elisp" "elisp-pdf" "pdf"))
+       (manual-pdf elisp (expand-file-name "elisp.pdf" pdf-dir)))
+    (if (member type '(nil "elisp" "elisp-ps" "ps"))
+       (manual-ps elisp (expand-file-name "elisp.ps" ps-dir)))
+    (if (member type '(nil "eintr" "eintr-node"))
+       (manual-html-node eintr (expand-file-name "eintr" html-node-dir)))
+    (if (member type '(nil "eintr" "eintr-node"))
+       (manual-html-mono eintr (expand-file-name "eintr.html" html-mono-dir)))
+    (if (member type '(nil "eintr" "eintr-pdf" "pdf"))
+       (manual-pdf eintr (expand-file-name "eintr.pdf" pdf-dir)))
+    (if (member type '(nil "eintr" "eintr-ps" "ps"))
+       (manual-ps eintr (expand-file-name "eintr.ps" ps-dir)))
     ;; Misc manuals
-    (dolist (manual (manual-misc-manuals root))
-      (manual-misc-html manual root html-node-dir html-mono-dir))
+    (dolist (manual misc)
+      (if (member type `(nil ,manual "misc"))
+         (manual-misc-html manual root html-node-dir html-mono-dir)))
     (message "Manuals created in %s" dest)))
 
 (defconst manual-doctype-string
@@ -264,7 +286,12 @@
 @import url('/s/emacs/manual.css');\n</style>\n")
 
 (defun manual-misc-html (name root html-node-dir html-mono-dir)
-  (let ((texi (expand-file-name (format "doc/misc/%s.texi" name) root)))
+  ;; Hack to deal with the cases where .texi creates a different .info.
+  ;; Blech.  TODO Why not just rename the .texi files?
+  (let* ((texiname (cond ((equal name "ccmode") "cc-mode")
+                        ((equal name "efaq") "faq")
+                        (t name)))
+        (texi (expand-file-name (format "doc/misc/%s.texi" texiname) root)))
     (manual-html-node texi (expand-file-name name html-node-dir))
     (manual-html-mono texi (expand-file-name (concat name ".html")
                                             html-mono-dir))))
@@ -274,6 +301,7 @@
 This function also edits the HTML files so that they validate as
 HTML 4.01 Transitional, and pulls in the gnu.org stylesheet using
 the @import directive."
+  (make-directory (or (file-name-directory dest) ".") t)
   (call-process "makeinfo" nil nil nil
                "-D" "WWW_GNU_ORG"
                "-I" (expand-file-name "../emacs"
@@ -300,6 +328,7 @@
 the @import directive."
   (unless (file-exists-p texi-file)
     (error "Manual file %s not found" texi-file))
+  (make-directory dir t)
   (call-process "makeinfo" nil nil nil
                "-D" "WWW_GNU_ORG"
                "-I" (expand-file-name "../emacs"
@@ -336,6 +365,7 @@
 
 (defun manual-pdf (texi-file dest)
   "Run texi2pdf on TEXI-FILE, emitting pdf output to DEST."
+  (make-directory (or (file-name-directory dest) ".") t)
   (let ((default-directory (file-name-directory texi-file)))
     (call-process "texi2pdf" nil nil nil
                  "-I" "../emacs" "-I" "../misc"
@@ -343,6 +373,7 @@
 
 (defun manual-ps (texi-file dest)
   "Generate a PostScript version of TEXI-FILE as DEST."
+  (make-directory (or (file-name-directory dest) ".") t)
   (let ((dvi-dest (concat (file-name-sans-extension dest) ".dvi"))
        (default-directory (file-name-directory texi-file)))
     (call-process "texi2dvi" nil nil nil
@@ -454,7 +485,8 @@
        (setq done t))
        (t
        (if (eobp)
-           (error "Parse error in %s" f)) ; f is bound in manual-html-node
+           (error "Parse error in %s"
+                  (file-name-nondirectory buffer-file-name)))
        (unless open-td
          (setq done t))))
       (forward-line 1))))


reply via email to

[Prev in Thread] Current Thread [Next in Thread]