--- Begin Message ---
Subject: |
Running htmlfontify in batch mode |
Date: |
Fri, 21 May 2010 23:30:28 +0900 (JST) |
This is a bug report with a patch which fixes the bug.
Please, include the patch to the official emacs tree if appreciated.
I'm trying to convert a source code to a html file with
htmlfontify.el. I'd like to do it in a batch job.
With the following script(CONVERTER) and command line I expect
I can convert a source code file into html format:
---------------------------------------------------------------
#!/home/yamato/var/emacs/src/emacs --script
; CONVERTER
(defun print-to-stderr (str)
(mapcar 'external-debugging-output str))
(let ((input (car argv))
(output (cadr argv)))
(unless input
(print-to-stderr "*** No INPUT is given\n")
(kill-emacs 1)
)
(unless output
(print-to-stderr "*** No OUTPUT is given\n")
(kill-emacs 1)
)
(unless (file-readable-p input)
(print-to-stderr (format "*** Cannot read %s\n"
input))
(kill-exit 1)
)
(unless (file-writable-p output)
(print-to-stderr (format "*** Cannot write %s\n"
output))
(kill-emacs 1)
)
(let ((srcdir (or (file-name-directory input) "./"))
(dstdir output)
(file (file-name-nondirectory input)))
(require 'htmlfontify)
(htmlfontify-load-rgb-file)
(let ((hfy-display-class '((type . x-toolkit)
(class . color)
(background . light))))
(hfy-copy-and-fontify-file srcdir dstdir file))))
---------------------------------------------------------------
$ ./CONVERTER emacs/src/epaths.h /tmp/
But, the command line is failed because htmlfontify.el tries to
modify data in pure storage.
With following patch it works as I expected.
2010-05-21 Masatake YAMATO <address@hidden>
* htmlfontify.el (hfy-face-attr-for-class): Use `append'
instead of `nconc'.
=== modified file 'lisp/htmlfontify.el'
*** lisp/htmlfontify.el 2010-04-24 02:36:43 +0000
--- lisp/htmlfontify.el 2010-05-21 14:18:31 +0000
***************
*** 926,932 ****
new-spec)))))
(if (or (memq :inherit face-spec) (eq 'default face))
face-spec
! (nconc face-spec (list :inherit 'default))) ))
;; construct an assoc of (css-tag-name . css-tag-value) pairs
;; from a face or assoc of face attributes:
--- 926,936 ----
new-spec)))))
(if (or (memq :inherit face-spec) (eq 'default face))
face-spec
! ;; We cannot use `nconc' here.
! ;; As far as I inspected, (get face 'face-defface-spec) in
! ;; `hfy-combined-face-spec' returns data at pure storage
! ;; if noninteractive.
! (append face-spec (list :inherit 'default))) ))
;; construct an assoc of (css-tag-name . css-tag-value) pairs
;; from a face or assoc of face attributes:
--- End Message ---