GNU bug report logs - #72309
propertized-buffer-identification with maximum width

Previous Next

Package: emacs;

Reported by: Heime <heimeborgia <at> protonmail.com>

Date: Fri, 26 Jul 2024 19:05:01 UTC

Severity: normal

Tags: notabug

Done: Stefan Kangas <stefankangas <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


Message #46 received at 72309 <at> debbugs.gnu.org (full text, mbox):

From: Heime <heimeborgia <at> protonmail.com>
To: Heime <heimeborgia <at> protonmail.com>
Cc: 72309 <at> debbugs.gnu.org, Eli Zaretskii <eliz <at> gnu.org>
Subject: Re: bug#72309: propertized-buffer-identification with maximum width
Date: Sun, 28 Jul 2024 12:18:32 +0000




Sent with Proton Mail secure email.

On Sunday, July 28th, 2024 at 10:55 PM, Heime via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org> wrote:

> 
> 
> 
> 
> 
> Sent with Proton Mail secure email.
> 
> 
> On Sunday, July 28th, 2024 at 4:55 PM, Eli Zaretskii eliz <at> gnu.org wrote:
> 
> > > Date: Sat, 27 Jul 2024 20:49:05 +0000
> > > From: Heime heimeborgia <at> protonmail.com
> > > Cc: 72309 <at> debbugs.gnu.org, Eli Zaretskii eliz <at> gnu.org
> > > 
> > > On Sunday, July 28th, 2024 at 3:27 AM, Heime via "Bug reports for GNU Emacs, the Swiss army knife of text editors" bug-gnu-emacs <at> gnu.org wrote:
> > > 
> > > > Sent with Proton Mail secure email.
> > > > 
> > > > On Sunday, July 28th, 2024 at 2:56 AM, Heime via "Bug reports for GNU Emacs, the Swiss army knife of text editors" bug-gnu-emacs <at> gnu.org wrote:
> > > > 
> > > > > Sent with Proton Mail secure email.
> > > > > 
> > > > > On Sunday, July 28th, 2024 at 1:29 AM, Eli Zaretskii eliz <at> gnu.org wrote:
> > > > > 
> > > > > > > Date: Sat, 27 Jul 2024 13:08:31 +0000
> > > > > > > From: Heime heimeborgia <at> protonmail.com
> > > > > > > Cc: 72309 <at> debbugs.gnu.org
> > > > > > > 
> > > > > > > On Sunday, July 28th, 2024 at 1:00 AM, Eli Zaretskii eliz <at> gnu.org wrote:
> > > > > > > 
> > > > > > > > Yes, but the (WIDTH something) construct is not for truncating long
> > > > > > > > names, it's for ensuring the string produced by "something" doesn't
> > > > > > > > take too many columns. So you are using this for a wrong purpose. If
> > > > > > > > you want to truncate a buffer's name, use truncate-string-to-width
> > > > > > > > instead, which is also capable of showing the ellipsis at the end.
> > > > > > > 
> > > > > > > I do not know how to access the buffer name and apply truncate-string-to-width
> > > > > > > when setting mode-line-buffer-identification on propertized-buffer-identification.
> > > > > > 
> > > > > > Use :eval.
> > > > > 
> > > > > I have done it without success
> > > > > 
> > > > > (defun vodil-rtgbfn (wmin)
> > > > > (setq-default mode-line-buffer-identification
> > > > > (propertized-buffer-identification (format " %%%db " wmin))))
> > > > > 
> > > > > (vodil-rtgbfn 8)
> > > > > 
> > > > > (setq-default mode-line-format
> > > > > '( "%e" (:eval (truncate-string-to-width mode-line-buffer-identification 13))
> > > > > vodil-panelit-bfselec))
> > > > 
> > > > Have now done, but now the buffer name is not displayed. Why has there
> > > > to be so much torture to change the defaults !
> > > > 
> > > > (defun vodil-tkbfn-ellipses (wmax)
> > > > "Get the buffer name truncated to WMAX width with ellipsis."
> > > > 
> > > > (let* ( (bfname (buffer-name (window-buffer)))
> > > > (tkname (if (> (length bfname) wmax)
> > > > 
> > > > (truncate-string-to-width bfname wmax nil nil "...")
> > > > bfname)))
> > > > (propertized-buffer-identification (format " %s " tkname))))
> > > > 
> > > > (defun vodil-tkbfn (wmax)
> > > > "Set mode-line-buffer-identification with WMAX maximum width."
> > > > 
> > > > (setq-default mode-line-buffer-identification
> > > > '(:eval (vodil-tkbfn-ellipses wmax))))
> > > 
> > > What is the big problem of showing how to implement this, buffer name
> > > with truncation ellipses using mode-line-buffer-identification ?
> > 
> > We don't have people here whose job is to write code for others. This
> > is a volunteer-based project, where people help you with ideas, but
> > the actual job of writing and debugging the code is yours.
> > 
> > So please take the ideas, read the documentation, and work on the
> > implementation you want. If you have questions about the
> > implementation, please ask them on help-gnu-emacs, which is where
> > user-level help should be sought.
 
The implementations do not work.  

For instance, using 

(name (buffer-name))

or with 

(buffer-name (window-buffer))

See

(setq-default mode-line-buffer-identification
  (propertized-buffer-identification
    (format " %s "
      (let ( (name (buffer-name)) )
         (if (> (length name) wmax)
         (concat (substring name 0 (- wmax 3)) "...")
         name))))) )

And neither does this

  (let* ( (bfname (buffer-name (window-buffer)))
          (tkname (if (> (length bfname) wmax)
                      (truncate-string-to-width bfname wmax nil nil "...")
                    bfname)))
    (propertized-buffer-identification (format " %s " tkname))))

So there is no option other than using %b, where one has no control about
how it gets displayed. 






This bug report was last modified 141 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.