mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-23 10:34:07 +00:00
* 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'.
This commit is contained in:
parent
1afb1d0715
commit
c7197e5231
@ -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 <rgm@gnu.org>
|
||||
|
||||
|
@ -209,44 +209,66 @@ Root must be the root of an Emacs source tree."
|
||||
"\\(\\\\\\|\\.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 @@ Root must be the root of an Emacs source tree."
|
||||
@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 @@ Root must be the root of an Emacs source tree."
|
||||
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 @@ HTML 4.01 Transitional, and pulls in the gnu.org stylesheet using
|
||||
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 @@ the @import directive."
|
||||
|
||||
(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 @@ the @import directive."
|
||||
|
||||
(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 @@ the @import directive."
|
||||
(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))))
|
||||
|
Loading…
Reference in New Issue
Block a user