CLIM mail archive
[Prev][Next][Index][Thread]
Buggy WITH-TEXT-STYLE Macro??
Date: Thu, 3 Dec 1992 09:08 EST
From: Markus Fischer <MF@sun4.sger>
Date: Thu, 3 Dec 1992 08:25+0100
From: berni@iml.fhg.de
I'm using CLIM 1.1 with MCL 2.0
and CLIM 1.1 under Genera 8.1.
If I'm using a text style with :bold face inside an enviromnent of
:italic face, the text gets formatted in (:bold :italic) face.
As all text-styles are fully specified, I assume it's a bug.
If I misunderstand the Documentation and it's a feature,
how can I do what I want (i.e. formatting the
text :bold, but NOT :italic??
The problem is that WITH-TEXT-STYLE always merges the new text style with
the existing one. The exact behavior is documented for the function
MERGE-TEXT-STYLES.
The question is about what should happen when a text style specifying
the face :bold is merged with a text style specifying the face :italic.
What berni expects is a text style with a face of :bold. That is what I
would expect since the face of :bold that he asked for is fully
specified (i.e. not NIL). That's what I would expect. What he is
getting is a text face of (:bold :italic).
However, you seem to want NO merging at all, since your test code
always specifies the text-style completely. I wrote a kludge to get
the behavior you're probably looking for. It temporarliy (for the extent
of the body) binds the medium's text-style to the medium's default text
style.
But maybe it would be desirable to have an additional keyword like
(:MERGE-P T) in the WITH-TEXT-XXX macros of CLIM 2.0 ?
(defmacro with-unmerged-text-style ((text-style stream) &body body)
`(clim-utils:letf-globally (((medium-text-style ,stream) (medium-default-text-style ,stream)))
(with-text-style (,text-style ,stream)
,@body)))
Then your test case is as follows:
(let ((stream *standard-output*))
(clim:with-text-style
((clim:make-text-style :sans-serif :roman :large) stream)
(format stream "~%Here is text with sans-serif normal large")
(clim:with-text-style
((clim:make-text-style :sans-serif :italic :large) stream)
(format stream "~%Here is text with sans-serif italic large")
(WITH-UNMERGED-TEXT-STYLE
((clim:make-text-style :sans-serif :bold :large) stream)
(format stream "~%This text is sans-serif, bold AND ITALIC, large,
")))))
0,,
Follow-Ups:
References:
Main Index |
Thread Index