GNU bug report logs - #5254
ps-print and faces specified as strings

Previous Next

Package: emacs;

Reported by: harven <harven <at> free.fr>

Date: Sun, 13 Dec 2009 00:05:04 UTC

Severity: normal

Done: Glenn Morris <rgm <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


Message #6 received at 5254 <at> debbugs.gnu.org (full text, mbox):

From: Eduard Wiebe <ew <at> pusto.de>
To: harven <harven <at> free.fr>
Cc: Vinicius Jose Latorre <viniciusjl <at> ig.com.br>, 5254 <at> debbugs.gnu.org
Subject: bug#5254: ps-print and faces specified as strings
Date: Wed, 23 Dec 2009 17:03:14 +0100
harven <harven <at> 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))

-- 
Eduard Wiebe

This bug report was last modified 15 years and 141 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.