Subject: Re: bug#59141: 28.1.90; Face :extend when all the line but trailing \n is invisible

From: Eli Zaretskii <[email-masked]>
Date: Tue, 22 Nov 2022 20:42:59 +0200

> From: Juri Linkov <[email-masked]>
> Cc: [email-masked],  [email-masked],
>   [email-masked],  [email-masked]
> Date: Tue, 22 Nov 2022 19:35:34 +0200
> 
> >> (progn
> >>   (insert "ab")
> >>   (let ((o (make-overlay 1 2)))
> >>     (overlay-put o 'after-string "!"))
> >>   (let ((o (make-overlay 2 3)))
> >>     (overlay-put o 'invisible t)))
> >>
> >> The problem is that "!" from 'after-string' is not displayed,
> >> even when it's on the text that is not invisible.
> >
> > There's no bug here.  after-string is displayed when the end position of the
> > overlay is reached, and in this case the end position is invisible, so it is
> > skipped.
> 
> If really there is no way to display a string overlay before the invisible overlay,
> this is fine because when a new option will be added, the ellipsis overlay
> will be added to the end of the line, and the invisible overlay will start
> at the beginning of the next line.

Does the below produce what you want?

  (progn
    (insert "ab")
    (let ((o (make-overlay 2 3)))
      (overlay-put o 'after-string "!"))
    (let ((o (make-overlay 2 3)))
      (overlay-put o 'invisible t)))