all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Thomas Voss" via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
To: 73463@debbugs.gnu.org
Subject: bug#73463: [PATCH] Align columns with wide characters properly
Date: Wed, 25 Sep 2024 02:23:29 +0200	[thread overview]
Message-ID: <D4EXQO3Q5G2B.2O2XVK8E3OQCI@thomasvoss.com> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 777 bytes --]

Hi all,

For a while I’ve been bugged by some behaviour in Which-Key.  My font of
choice is Iosevka — a font that is quite popular — and it chooses to make
the ellipsis character 2-columns wide.  This is typically not a problem,
but it causes Which-Key columns to appear misaligned as it truncates long
descriptions with the ellipsis by default when the user configures it to
use Unicode (and I rather enjoy the ellipsis).

This happens despite the following being in my init.el:

    (set-char-table-range char-width-table ?… 2)

After further investigation, this appears to be due to a simple usage of
‘length’ instead of ‘string-width’.  The following trivial patch attached
to this email seems to have solved this issue.

-- 
— Thomas

[-- Attachment #2: 0001-Align-columns-with-wide-characters-properly.patch --]
[-- Type: text/x-patch, Size: 1214 bytes --]

From b87de8beb17582608afb7e9f30e67085c5d78d7a Mon Sep 17 00:00:00 2001
From: Thomas Voss <mail@thomasvoss.com>
Date: Wed, 25 Sep 2024 02:17:49 +0200
Subject: [PATCH] Align columns with wide characters properly
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

In the case that a character in takes up multple columns (such as `…'
when used as a truncation character) make sure that the columns are
still aligned properly.
* lisp/which-key.el (which-key--pad-column):
Use `string-width' instead of `length'.

Copyright-paperwork-exempt: yes
---
 lisp/which-key.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lisp/which-key.el b/lisp/which-key.el
index 91eb05c..fb0685c 100644
--- a/lisp/which-key.el
+++ b/lisp/which-key.el
@@ -2037,7 +2037,7 @@ that width."
           (mapcar (pcase-lambda (`(,key ,sep ,desc ,_doc))
                     (concat
                      (format col-format key sep desc)
-                     (make-string (- col-desc-width (length desc)) ?\s)))
+                     (make-string (- col-desc-width (string-width desc)) ?\s)))
                   col-keys))))
 
 (defun which-key--partition-list (n list)
-- 
2.46.1


             reply	other threads:[~2024-09-25  0:23 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-25  0:23 Thomas Voss via Bug reports for GNU Emacs, the Swiss army knife of text editors [this message]
2024-09-25 11:57 ` bug#73463: [PATCH] Align columns with wide characters properly Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=D4EXQO3Q5G2B.2O2XVK8E3OQCI@thomasvoss.com \
    --to=bug-gnu-emacs@gnu.org \
    --cc=73463@debbugs.gnu.org \
    --cc=mail@thomasvoss.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.