emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[elpa] externals/ivy e8ac2e2 1/2: Consider character widths when inserti


From: Basil L. Contovounesios
Subject: [elpa] externals/ivy e8ac2e2 1/2: Consider character widths when inserting prompt
Date: Sat, 15 May 2021 09:14:06 -0400 (EDT)

branch: externals/ivy
commit e8ac2e23ffccb23600c5a3883805560927a54202
Author: Basil L. Contovounesios <contovob@tcd.ie>
Commit: Basil L. Contovounesios <contovob@tcd.ie>

    Consider character widths when inserting prompt
    
    * ivy.el (ivy--insert-prompt): Use string-width instead of length
    when comparing prompt to window width.  This avoids hscrolling the
    minibuffer, but does not fix imperfect line wrapping (#2869).
---
 ivy.el | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/ivy.el b/ivy.el
index 256aeaa..a8d2682 100644
--- a/ivy.el
+++ b/ivy.el
@@ -3108,13 +3108,13 @@ parts beyond their respective faces `ivy-confirm-face' 
and
         (save-excursion
           (goto-char (point-min))
           (delete-region (point-min) (minibuffer-prompt-end))
-          (let ((len-n (length n-str))
-                (len-d (length d-str))
+          (let ((wid-n (string-width n-str))
+                (wid-d (string-width d-str))
                 (ww (window-width)))
             (setq n-str
-                  (cond ((> (+ len-n len-d) ww)
+                  (cond ((> (+ wid-n wid-d) ww)
                          (concat n-str "\n" d-str "\n"))
-                        ((> (+ len-n len-d (length ivy-text)) ww)
+                        ((> (+ wid-n wid-d (string-width ivy-text)) ww)
                          (concat n-str d-str "\n"))
                         (t
                          (concat n-str d-str)))))
@@ -3122,6 +3122,9 @@ parts beyond their respective faces `ivy-confirm-face' and
             (setq n-str (concat (funcall ivy-pre-prompt-function) n-str)))
           (when ivy-add-newline-after-prompt
             (setq n-str (concat n-str "\n")))
+          ;; FIXME: This does not take character widths into account!
+          ;; Should ideally let the display engine wrap text, otherwise
+          ;; use `window-text-pixel-size'.  See e.g. #2869.
           (let ((regex (format "\\([^\n]\\{%d\\}\\)[^\n]" (window-width))))
             (while (string-match regex n-str)
               (setq n-str (replace-match



reply via email to

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