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

From: Juri Linkov <[email-masked]>
Date: Thu, 10 Nov 2022 09:45:11 +0200

>> Here is an experimental patch for outline.el
>> that demonstrates a possible way to fix this:
>>
>> diff --git a/lisp/outline.el b/lisp/outline.el
>> index a646f71db8..73ae707821 100644
>> --- a/lisp/outline.el
>> +++ b/lisp/outline.el
>> @@ -930,7 +930,8 @@ outline-flag-region
>>      ;; We use `front-advance' here because the invisible text begins at the
>>      ;; very end of the heading, before the newline, so text inserted at FROM
>>      ;; belongs to the heading rather than to the entry.
>> -    (let ((o (make-overlay from to nil 'front-advance)))
>> +    (let ((o (make-overlay from (1+ to))))
>> +      (overlay-put o 'display "\n")
>
> Note that 'font-advance is there for a reason.
>
> Also, what will happen with ellipsis when there is 'display property?

Then ellipsis could be added to (overlay-put o 'display "...\n").

Alternatively, maybe it would be sufficient to put the 'display "\n" property
only on the final newline, thus hiding its face properties.
The drawback is that it requires more overlays.