harven<harven@free.fr> writes:
Hi,
and thank you for your report.
ps-spool-buffer-with-faces and ps-print-buffer-with-faces report errors
if there is a face specified as a string in the buffer.
Tested with emacs22 and emacs23 ; starting in a buffer in fundamental
mode, we type and execute the following:
(facemenu-set-face "bold" 1 (point-max))
The text in the buffer becomes bold as expected.
We now try to spool the buffer using M-x ps-spool-buffer-with-faces.
This gives the error:
ps-face-attribute-list: Wrong type argument: listp, "bold"
A *postscript* buffer has been created, as expected, but it is empty.
It should have contained a faithful postscript image of the buffer.
The error can be reproduced with any face, not just bold.
It seems that the problem comes from the fact that somewhere in the
ps-print-* functions, the face is expected to be a symbol -- 'bold.
Indeed.
In the function given below, the face is defined by facemenu-set-face
as a string -- "bold". If we use instead
(facemenu-set-face 'bold 1 (point-max))
to color the buffer, the error disappear.
It may not be a bug per se, yet it would be nice (and more consistent)
if the ps-print package could handle faces specified as strings.
Can you try following patch:
diff --git a/lisp/ps-print.el b/lisp/ps-print.el
index 386fc14..f799926 100644
--- a/lisp/ps-print.el
+++ b/lisp/ps-print.el
@@ -6254,7 +6254,8 @@ If FACE is not a valid face name, use default face."
(or (and (symbolp face)
(cdr (assq face ps-black-white-faces-alist)))
(vector 0 nil nil)))
- ((symbolp face)
+ ((or (symbolp face) (facep face))
+ (and (stringp face) (setq face (intern face)))
(cdr (or (assq face ps-print-face-extension-alist)
(assq face ps-print-face-alist)
(let* ((the-face (if (facep face) face 'default))