]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix 'string-pixel-width' under 'line-prefix'
authorEli Zaretskii <eliz@gnu.org>
Mon, 31 Jul 2023 18:50:45 +0000 (21:50 +0300)
committerEli Zaretskii <eliz@gnu.org>
Mon, 31 Jul 2023 18:50:45 +0000 (21:50 +0300)
* lisp/emacs-lisp/subr-x.el (string-pixel-width): Disable
'line-prefix' and 'wrap-prefix' to avoid their effect on the
calculated string width.  (Bug#64971)

lisp/emacs-lisp/subr-x.el

index 8cdbdf1ef6af29d33c6abe5a24c4fbc01899ef7b..b164071763b4868f7de517c34ce0bdaec4c4647c 100644 (file)
@@ -322,12 +322,15 @@ as the new values of the bound variables in the recursive invocation."
     ;; Keeping a work buffer around is more efficient than creating a
     ;; new temporary buffer.
     (with-current-buffer (get-buffer-create " *string-pixel-width*")
-      ;; `display-line-numbers-mode' is enabled in internal buffers
-      ;; that breaks width calculation, so need to disable (bug#59311)
+      ;; If `display-line-numbers-mode' is enabled in internal
+      ;; buffers, it breaks width calculation, so disable it (bug#59311)
       (when (bound-and-true-p display-line-numbers-mode)
         (display-line-numbers-mode -1))
       (delete-region (point-min) (point-max))
-      (insert string)
+      ;; Disable line-prefix and wrap-prefix, for the same reason.
+      (setq line-prefix nil
+           wrap-prefix nil)
+      (insert (propertize string 'line-prefix nil 'wrap-prefix nil))
       (car (buffer-text-pixel-size nil nil t)))))
 
 ;;;###autoload