unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#1852: 23.0.60; describe-face: Wrong type argument: symbolp, (:slant oblique)
@ 2009-01-10 21:20 Stephen Berman
  0 siblings, 0 replies; 4+ messages in thread
From: Stephen Berman @ 2009-01-10 21:20 UTC (permalink / raw)
  To: emacs-pretest-bug

The bug described below still exists in GNU Emacs 23.0.60.28
(i686-pc-linux-gnu, GTK+ Version 2.14.4) of 2009-01-09 on escher, so I'm
submitting it to the bug tracker.  Note that the cited sexp from
faces.el is now at line 1360, not 1307.


From: Stephen Berman <Stephen.Berman@gmx.net>
Subject: describe-face: Wrong type argument: symbolp, (:slant oblique)
Newsgroups: gmane.emacs.devel
To: emacs-devel@gnu.org
Date: Mon, 26 May 2008 00:59:57 +0200

In GNU Emacs 23.0.60.4 (i686-pc-linux-gnu, GTK+ Version 2.12.0) of
2008-05-25 on escher

1. emacs -q
2. Put the cursor on any of the characters in the phrase "ABSOLUTELY NO
WARRANTY" in the splash screen.
3. Type C-u C-x =
4. In the resulting *Help* buffer click on the link labelled
"(variable-pitch (:slant oblique))"
=> Emacs beeps and throws the error in the Subject line.

This happens at line 1307 in faces.el, which is this sexp:

(insert "Face: " (symbol-name f))

when `f' gets the value `(:slant oblique)', which it does because the
list '(variable-pitch (:slant oblique)) is the value of 'face in the
plist of the character at point (as shown by text-properties-at).  I
don't know what the best fix is.

(In earlier versions of Emacs, including CVS trunk of 2007-08-24, this
value was '(variable-pitch :slant oblique), and doing the above steps
does not raise an error, but the resulting *Help* buffer contains these
dubious lines:

Face: :slant   undefined face.
Face: oblique   undefined face.

But in this version a wrong type argument error is also raised by the
above recipe for plist 'face values such as '(variable-pitch :foreground
"red"), on the string.  I could not determine when the change in the
representation of the plist value of 'face occurred, because I couldn't
figure out which part of the code constructs this plist.)

Steve Berman










^ permalink raw reply	[flat|nested] 4+ messages in thread

* bug#1852: 23.0.60; describe-face: Wrong type argument: symbolp, (:slant oblique)
@ 2009-01-11 22:29 Stephen Berman
  2009-01-12  2:38 ` Chong Yidong
  0 siblings, 1 reply; 4+ messages in thread
From: Stephen Berman @ 2009-01-11 22:29 UTC (permalink / raw)
  To: 1852; +Cc: Chong Yidong

>> 1. emacs -q
>> 2. Put the cursor on any of the characters in the phrase "ABSOLUTELY NO
>> WARRANTY" in the splash screen.
>> 3. Type C-u C-x =
>> 4. In the resulting *Help* buffer click on the link labelled
>> "(variable-pitch (:slant oblique))"
>> => Emacs beeps and throws the error in the Subject line.
>
> Since anonymous faces can't be usefully customized, I've changed
> describe-face to ignore those.  Thanks for the bug report.

Your fix prevents the error from being raised at step 4 above; however,
the behavior is nevertheless still not what I would naively expect:
namely, now it switches to a *Help* buffer describing variable-pitch
face, containing the line
         Slant: unspecified
i.e., this is not the face that I clicked to get a description of (as
the tooltip also promises).  Wouldn't it be better (if readily
implementable) to exclude `(:slant oblique)' from the the describe-face
link?

Steve Berman






^ permalink raw reply	[flat|nested] 4+ messages in thread

* bug#1852: 23.0.60; describe-face: Wrong type argument: symbolp, (:slant oblique)
  2009-01-11 22:29 bug#1852: 23.0.60; describe-face: Wrong type argument: symbolp, (:slant oblique) Stephen Berman
@ 2009-01-12  2:38 ` Chong Yidong
  2009-01-12 12:19   ` Stephen Berman
  0 siblings, 1 reply; 4+ messages in thread
From: Chong Yidong @ 2009-01-12  2:38 UTC (permalink / raw)
  To: Stephen Berman; +Cc: 1852

Stephen Berman <stephen.berman@gmx.net> writes:

> Your fix prevents the error from being raised at step 4 above; however,
> the behavior is nevertheless still not what I would naively expect:
> namely, now it switches to a *Help* buffer describing variable-pitch
> face, containing the line
>          Slant: unspecified
> i.e., this is not the face that I clicked to get a description of (as
> the tooltip also promises).  Wouldn't it be better (if readily
> implementable) to exclude `(:slant oblique)' from the the describe-face
> link?

The "face" you are trying to customize is actually two faces---the
`variable-pitch' face plus an anonymous face consisting of the
property-value pair (:slant oblique).  The best that Custom can do is to
allow you to customize the former.  The latter can't be customized
because it lacks a face name (how would we save the customized face?).






^ permalink raw reply	[flat|nested] 4+ messages in thread

* bug#1852: 23.0.60; describe-face: Wrong type argument: symbolp, (:slant oblique)
  2009-01-12  2:38 ` Chong Yidong
@ 2009-01-12 12:19   ` Stephen Berman
  0 siblings, 0 replies; 4+ messages in thread
From: Stephen Berman @ 2009-01-12 12:19 UTC (permalink / raw)
  To: Chong Yidong; +Cc: 1852

On Sun, 11 Jan 2009 21:38:45 -0500 Chong Yidong <cyd@stupidchicken.com> wrote:

> Stephen Berman <stephen.berman@gmx.net> writes:
>
>> Your fix prevents the error from being raised at step 4 above; however,
>> the behavior is nevertheless still not what I would naively expect:
>> namely, now it switches to a *Help* buffer describing variable-pitch
>> face, containing the line
>>          Slant: unspecified
>> i.e., this is not the face that I clicked to get a description of (as
>> the tooltip also promises).  Wouldn't it be better (if readily
>> implementable) to exclude `(:slant oblique)' from the the describe-face
>> link?
>
> The "face" you are trying to customize is actually two faces---the
> `variable-pitch' face plus an anonymous face consisting of the
> property-value pair (:slant oblique).  

I was obviously confused above, but I also think it's confusing to say
there are two faces here and to call `(:slant oblique)' an anonymous
face. `(variable-pitch (:slant oblique))' is simply the value of the
face property (as indeed the *Help* buffer explicitly says; I don't know
why I was confused).

>                                        The best that Custom can do is to
> allow you to customize the former.  The latter can't be customized
> because it lacks a face name (how would we save the customized face?).

Since the value of the face property can contain named faces, I expect
these to be customizable, and indeed, when I type `C-u
C-x =' on the `A' of `Authors' in the *About GNU Emacs* buffer, the
*Help* buffer shows this:

     There are text properties here:
       face                 (link variable-pitch)

and when I click on this value I do indeed get a buffer describing both
the link and variable-pitch faces, each with an accompanying customize
button.  Since `(:slant oblique)' in the previous case is not a named
face, it cannot, as you say, be customized.  But for this reason, I
think it would be better, as I suggested, to have `(:slant oblique)' not
be clickable in the output of `C-u C-x ='.

I found two other cases that seem buggy:

(a) Type `C-u C-x =' on any of the letters in `GNU Emacs' or `GNU/Linux'
in the line directly below the Emacs logo in the *About GNU Emacs*
buffer.  The resulting *Help* buffer shows this as the value of the face
property:

      face                 (link (variable-pitch (:foreground "red")))

This is not a valid value of the face property; instead, it should be this:

      face                 (link variable-pitch (:foreground "red"))

Moreover, I would expect clicking on the value to show me descriptions
of the link and variable-pitch faces, as above.  Instead, there is only
a description of the link face.  (I would recommend two clickable links
here, one for each named face, and none for the property-value pair.)

(b) In a Text mode buffer, mark a region of text, click the menu entry
Edit->Text Properties->Foreground Color->red, and on one of the
resulting red characters type `C-u C-x ='.  The *Help* buffers shows:

      face                 ((:foreground "red"))

which is fine, but when I click on the value, I get an empty *Help*
buffer.  This is another reason for this type of face value not to be
overlayed with a clickable link.

Steve Berman






^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-01-12 12:19 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-01-11 22:29 bug#1852: 23.0.60; describe-face: Wrong type argument: symbolp, (:slant oblique) Stephen Berman
2009-01-12  2:38 ` Chong Yidong
2009-01-12 12:19   ` Stephen Berman
  -- strict thread matches above, loose matches on Subject: below --
2009-01-10 21:20 Stephen Berman

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).