Subject: Re: bug#36232: 26.2; (elisp) `Click Events': OBJECT "string-type text property" etc.

From: Eli Zaretskii <[email-masked]>
Date: Sun, 16 Jun 2019 21:42:11 +0300

> Date: Sun, 16 Jun 2019 11:32:24 -0700 (PDT)
> From: Drew Adams <[email-masked]>
> Cc: [email-masked]
> 
> > When the text or overlay properties specify a string to display, that
> > string is displayed instead of, or in addition to, buffer text.  And
> > then you definitely CAN click on some character from such a string on
> > display.
> 
> Is that really what this is all about?  I guess you're
> talking about a "replacement" `display' property value
> that's a string.

Not necessarily "replacing".  For example, the 'before-string' overlay
property doesn't replace any text.

> (You're still not clicking a string.  You're clicking
> the displayed text of the string.  This is not to be
> pedantic; it's to say that the text quoted is unclear
> to confusing.)

You are splitting hair.  "Clicking a string" is as natural as
"clicking buffer text".  (Let's please not make this into another
bikeshedding galore.)

> > There is such a thing, but since you were confused, I replaced that
> > text with something more specific.
> 
> Thanks.  I'd still like to know what you are
> calling a "string-type property".  From above,
> are you talking about property `display'?

It's just one example, as I wrote before.

> > > Still, doesn't nil just mean that something besides
> > > buffer text (e.g. an image?) - and certainly not a
> > > string (IIUC) was what was clicked?
> > 
> > No, it means buffer text.
> 
> Not if it means clicking what property `display'
> shows.  That's not buffer text (chars in the buffer).

In that case, you get a string as OBJECT, not nil.

> > Among others, yes.  One example is the 'display' property whose value
> > is a string, a.k.a. "display string".  Another example is the
> > 'before-string' overlay property.
> 
> OK, now it's becoming more clear.  I don't think
> you should assume that that will be understood by
> just referring to "string-type" properties.

Which is why I replaced that text with a more concrete one.

> Overlay properties are not text properties.

I never said they were.

> > > > > `posn-object-x-y' is described as coordinates
> > > > > relative to a corner of "the object in POSITION"
> > > > > - what kind of cornered object is this, and
> > > > > what/where are its "corners"?
> > > >
> > > > Every object on display, be it a character glyph, a display string,
> > > > an image, or anything else, has 2 dimensions, which means it has 4
> > > > corners.
> > >
> > > So OBJECT means an "object on display"?
> > 
> > No, it means an object that caused something to be displayed.  That
> > something then has corners.
> 
> Then the object itself (e.g. string, nil, cons) does
> not have corners.

See above: I said "object on display".

> Too many shortcuts, too many assumptions that a
> reader will figure out what invisible jumps you're
> intending.

There should be fewer of them now.