From 94dec95317994f36f1355b972850d9565b61c433 Mon Sep 17 00:00:00 2001 From: Stephen Berman Date: Thu, 18 Apr 2024 15:35:49 +0200 Subject: [PATCH] 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. --- lisp/wid-edit.el | 4 ++-- test/lisp/wid-edit-tests.el | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el index cb6d8ebc2c4..dc481d4d0a5 100644 --- a/lisp/wid-edit.el +++ b/lisp/wid-edit.el @@ -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)) diff --git a/test/lisp/wid-edit-tests.el b/test/lisp/wid-edit-tests.el index 4b049478b29..d416eb99022 100644 --- a/test/lisp/wid-edit-tests.el +++ b/test/lisp/wid-edit-tests.el @@ -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."