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

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

bug#74817: 31.0.50; mode-line-format-right-align doesn't work well on he


From: Eli Zaretskii
Subject: bug#74817: 31.0.50; mode-line-format-right-align doesn't work well on header-line
Date: Sat, 28 Dec 2024 13:32:59 +0200

> From: Ship Mints <shipmints@gmail.com>
> Date: Sun, 15 Dec 2024 15:25:19 -0500
> Cc: Eval Exec <execvy@gmail.com>, 74817@debbugs.gnu.org
> 
> To emulate the desired behavior, I lifted this from tab-bar's implementation 
> for a proof-of-concept.
> 
> (defun header-line-format-align-right ()
>   "Align the rest of `header-line' items to the right."
>   (let* ((rest (cdr (member '(:eval (header-line-format-align-right)) 
> header-line-format)))
>          (rest (tab-bar-format-list rest)) ; replace tab-bar-format-list with 
> your own beyond this POC
>          (rest (mapconcat (lambda (item) (nth 2 item)) rest ""))
>          (hpos (progn
>                  (add-face-text-property 0 (length rest) 'header-line t rest)
>                  (string-pixel-width rest)))
>          (str (propertize " " 'display
>                           ;; The `right' spec doesn't work on TTY frames
>                           ;; when windows are split horizontally (bug#59620)
>                           (if (window-system)
>                               `(space :align-to (- right (,hpos)))
>                             `(space :align-to (,(- (frame-inner-width) 
> hpos)))))))
>     `((align-right menu-item ,str ignore))))
> 
> (setq header-line-format '("TEST HEADER LINE" (:eval 
> (header-line-format-align-right)) (lambda () "FOO
> BAR BAZ")))
> 
> One gotcha is that tab-bar-format-list relies on "rest" being a list of 
> functions, hence the lambda at the end.
> 
> Adapt as you see fit.

No further comments in 2 weeks, so I'm now closing this bug.





reply via email to

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