Don't error on tabbing to a widget at BOB (bug#69943)

* lisp/wid-edit.el (widget-move): Don't move backward when at
beginning of buffer, and keep point on widget's left side.

* test/lisp/wid-edit-tests.el (widget-test-widget-move): Test that
moving to a widget at beginning of buffer does not signal a
beginning-of-buffer error.
This commit is contained in:
Stephen Berman 2024-04-18 15:35:49 +02:00
parent 0a57dfcff8
commit 94dec95317
2 changed files with 9 additions and 3 deletions

View file

@ -1300,9 +1300,9 @@ nothing is shown in the echo area."
(unless (eq new old)
(setq arg (1+ arg))))))
(let ((new (widget-tabable-at)))
(while (eq (widget-tabable-at) new)
(while (and (eq (widget-tabable-at) new) (not (bobp)))
(backward-char)))
(forward-char))
(unless (bobp) (forward-char)))
(unless suppress-echo
(widget-echo-help (point)))
(run-hooks 'widget-move-hook))

View file

@ -336,7 +336,13 @@ return nil, even with a non-nil bubblep argument."
(widget-forward 2)
(forward-char)
(widget-backward 1)
(should (string= "Second" (widget-value (widget-at))))))
(should (string= "Second" (widget-value (widget-at))))
;; Check that moving to a widget at beginning of buffer does not
;; signal a beginning-of-buffer error (bug#69943).
(widget-backward 1) ; Should not signal beginning-of-buffer error.
(widget-forward 2)
(should (string= "Third" (widget-value (widget-at))))
(widget-forward 1))) ; Should not signal beginning-of-buffer error.
(ert-deftest widget-test-color-match ()
"Test that the :match function for the color widget works."