Subject: Re: bug#52129: 29.0.50; Wish: Extend `:align-to center' to work on lines in buffer

From: Arthur Miller <[email-masked]>
Date: Sun, 28 Nov 2021 00:40:30 +0100

Eli Zaretskii <[email-masked]> writes:

>> From: Arthur Miller <[email-masked]>
>> Cc: [email-masked]
>> Date: Sat, 27 Nov 2021 12:06:19 +0100
>> 
>> > No, I mean to put this property:
>> >
>> >     'display '(space :align-to center)
>> >
>> > on a space character (or any other character, which will not be
>> > displayed) that is prepended to the time-stamp-string you want to
>> > display.
>> 
>> Aha, like this?:
>> 
>> (defun evc--time ()
>>   (concat (propertize " " 'display '(space :align-to center))
>>           (propertize
>>            (time-stamp-string " %H:%M") 'face evc--time-face)))
>> 
>> That still seems to be dependanble on when the time string is inserted? Because
>> when I test to insert like this:
>> 
>> (defun evc--update ()
>>   (let ((time (evc--time))
>>         (date (evc--date)))
>>     (when (frame-live-p evc--frame)
>>       (select-frame evc--frame))
>>     (with-current-buffer evc--buffer
>>       (erase-buffer)
>>       (insert time "\n" date)
>>       (goto-char 1))))
>> 
>> the string is not centered correctly; there is ~70 pixels difference between
>> left and right margins.
>
> That's because it centers the first character of the string, not its
> middle character.

That too; so you see, it is not as simple to get it right by just prepending a
space with :align-to center property.

>> Is there any way to make it aware of surrounding context, like entire line? Or
>> would that be too demanding computationally?
>
> I don't think I understand what you mean by "surrounding context", and
> what would it mean for it to "be aware" of it?

With context I meant simply the line, or at least part of the line to be
displayed. To be aware of it = to take it into consideration when displaying
line, so things like suggested would be possible.