1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-21 06:55:39 +00:00

Fix movement to the left in picture-mode

* lisp/textmodes/picture.el (picture-insert): Measure width by
counting columns on display, not by using 'string-width', because
the latter is inaccurate when TABs are involved.  (Bug#74255)
This commit is contained in:
Eli Zaretskii 2024-11-10 10:56:40 +02:00
parent dbcd9d782c
commit 7dabfe9465

View File

@ -264,9 +264,14 @@ Use \"\\[command-apropos] picture-movement\" to see commands which control motio
(move-to-column picture-desired-column t))
(let ((col (+ picture-desired-column width)))
(or (eolp)
(let ((pos (point)))
(move-to-column col t)
(let ((old-width (string-width (buffer-substring pos (point)))))
(let ((pos (point))
(col0 (current-column))
col1)
(setq col1 (move-to-column col t))
;; We count columns, not width, because move-to-column
;; could insert TABs, which width depends on horizontal
;; position.
(let ((old-width (- (max col0 col1) (min col0 col1))))
(delete-region pos (point))
(when (> old-width width)
(insert-char ? (- old-width width))