bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#18285: 24.3.92; A combination of `display' on text and `invisible' a


From: Dmitry Gutov
Subject: bug#18285: 24.3.92; A combination of `display' on text and `invisible' and `before/after-string' leads to the before/after string being displayed twice
Date: Thu, 21 Aug 2014 19:40:58 +0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0

On 08/21/2014 06:57 PM, Eli Zaretskii wrote:

Hmm. Maybe the fix could be to make the `invisible' property disable
`display': as long as former is present, the latter won't work.

That would undoubtedly cause complaints from heavy users of those,
like Org, magit, etc.

Some change in code might be required, but the resulting code can be made backward-compatible, aside from the pathological examples, which might improve.

After all, that was the intention behind the code I encountered this bug
in. And with the current logic, like you say, if `display' is set,
`invisible' is redundant.

Yes, but not the other way around.

If the `invisible' starts even one character earlier, it *is* the other way around. So one might say that in general case it already disables `display'. Try this small modification of the original example:

(let ((pt (point)))
  (insert (propertize "a" 'display "bbb"))
  (let ((o (make-overlay (1- pt) (point))))
    (overlay-put o 'invisible t)
    (overlay-put o 'after-string "foo\nbar")))

The result looks like:

foo
bar

Thanks. That looks very much like a bug as well, though maybe again, too
expensive to fix. FWIW, for that issue, if myov2 has higher priority
than myov1 (if only by virtue of being inside and shorter), I'd display
just "STRING2" ("STRING1" would not be visible at all). But that's just
going by logic; maybe there's a use case that would break.

I'm quite sure there's some use case somewhere that will break.

Maybe. But at least it's consistent with the overlay priority rules.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]