Some non-ascii characters is double-width (e.g. CJK characters), which
means that its `length' is not the same as `string-width' (display
width). This commit fixes the width calculation in
notmuch-search-insert-authors so that author field with these
characters can be properly aligned.
---
 emacs/notmuch.el | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/emacs/notmuch.el b/emacs/notmuch.el
index 69aff347..379a0d46 100644
--- a/emacs/notmuch.el
+++ b/emacs/notmuch.el
@@ -802,14 +802,14 @@ non-authors is found, assume that all of the authors 
match."
           (invisible-string "")
           (padding ""))
       ;; Truncate the author string to fit the specification.
-      (when (> (length formatted-authors)
-              (length formatted-sample))
-       (let ((visible-length (- (length formatted-sample)
-                                (length "... "))))
+      (when (> (string-width formatted-authors)
+              (string-width formatted-sample))
+       (let ((visible-width (- (string-width formatted-sample)
+                                (string-width "... "))))
          ;; Truncate the visible string according to the width of
          ;; the display string.
-         (setq visible-string (substring formatted-authors 0 visible-length))
-         (setq invisible-string (substring formatted-authors visible-length))
+         (setq visible-string (truncate-string-to-width formatted-authors 
visible-width))
+         (setq invisible-string (substring formatted-authors (length 
visible-string)))
          ;; If possible, truncate the visible string at a natural
          ;; break (comma or pipe), as incremental search doesn't
          ;; match across the visible/invisible border.
@@ -823,9 +823,9 @@ non-authors is found, assume that all of the authors match."
          ;; `visible-string' may be shorter than the space allowed
          ;; by `format-string'. If so we must insert some padding
          ;; after `invisible-string'.
-         (setq padding (make-string (- (length formatted-sample)
-                                       (length visible-string)
-                                       (length "..."))
+         (setq padding (make-string (- (string-width formatted-sample)
+                                       (string-width visible-string)
+                                       (string-width "..."))
                                     ? ))))
       ;; Use different faces to show matching and non-matching authors.
       (if (string-match "\\(.*\\)|\\(.*\\)" visible-string)
-- 
2.49.0

_______________________________________________
notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-le...@notmuchmail.org

Reply via email to