From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stephen Berman via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#69943: 30.0.50; Tabbing through widgets can signal beginning-of-buffer error Date: Fri, 22 Mar 2024 15:45:16 +0100 Message-ID: <87il1enx4z.fsf@rub.de> Reply-To: Stephen Berman Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="13522"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) To: 69943@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Mar 22 16:21:40 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1rngiB-0003Ij-IE for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 22 Mar 2024 16:21:39 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rnghw-0002Lg-J4; Fri, 22 Mar 2024 11:21:24 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rnghu-0002LN-Jh for bug-gnu-emacs@gnu.org; Fri, 22 Mar 2024 11:21:22 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rnghu-0003jR-BP for bug-gnu-emacs@gnu.org; Fri, 22 Mar 2024 11:21:22 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rngiY-0002cN-HE for bug-gnu-emacs@gnu.org; Fri, 22 Mar 2024 11:22:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Stephen Berman Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 22 Mar 2024 15:22:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 69943 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.17111208749920 (code B ref -1); Fri, 22 Mar 2024 15:22:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 22 Mar 2024 15:21:14 +0000 Original-Received: from localhost ([127.0.0.1]:59882 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rnghl-0002Zu-9L for submit@debbugs.gnu.org; Fri, 22 Mar 2024 11:21:14 -0400 Original-Received: from lists.gnu.org ([209.51.188.17]:60984) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rngNO-0001Xf-5T for submit@debbugs.gnu.org; Fri, 22 Mar 2024 11:00:10 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rng95-0004ly-TB for bug-gnu-emacs@gnu.org; Fri, 22 Mar 2024 10:45:24 -0400 Original-Received: from mout.gmx.net ([212.227.15.18]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rng92-0003ad-Sb for bug-gnu-emacs@gnu.org; Fri, 22 Mar 2024 10:45:23 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1711118716; x=1711723516; i=stephen.berman@gmx.net; bh=FJYXjxLoVvLGIu0Eg1k5j3silJjKXgyVoMjvtSSWzyk=; h=X-UI-Sender-Class:From:To:Subject:Date; b=nypx/y+ois4faCXv7WgxOGi/QSp0nJXOplfejeXBI0co8BfqCsgj7BdeLAk09oaF K1LBlgcwVD2cra//H0IIyE20zMkSh46uUapDf6b6qmos6z/jd0RTAHsDUmwsPKfA5 DvFcC0E4eKY96xfLBNYF/jT8eEOCfQ45GnGHqgPH4Qjwj69Rk0YqOz//vEzDb9qU8 LF0DZlSxqI/6Ez2tY3ek4FqRFikK0iVFsyPx8g5cGieMenlwTrLptfAJ3WuoTEsoJ NRMmghBD8OzJI/0iXGQfqR+GQKF5dixrd5o87b6dc2ZxIrJk9WKwwGFhNA5J0bSYk rRIrOL57Eu58i2W4QQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Original-Received: from strobelfs2 ([88.130.50.228]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1N6sn7-1qgbTP22fP-018LzQ for ; Fri, 22 Mar 2024 15:45:16 +0100 X-Provags-ID: V03:K1:mI6PidQgapMmaadPxQ7MvOP8d9P2xZQXYXkcVnyRueKJpGEjOed boOXmnbrj0xM0m2dNdALbuNhmSsUlCRT2e1nBdMzeqlrvXa478a2OfAxVQof+uLasSHZwm3 DrKqEbTtyNuFU6sO2WvjI4ZBvKu8YNCmhVCgVWlvH5kXcgnBrnUskn9UfMr80M1lLkaeSKA LsTh7aXZiPq1gDHIp52sg== UI-OutboundReport: notjunk:1;M01:P0:MxbVqSSSU5M=;AFyBnc8/OMxlZm5Cv4AeQQ+Ghg/ Oq4OoBz1ziFJ6q6iSwLi88YGbPEbkdOJ5PLVCgSJhnzwFJbtcwCID7gzBuYeh0dRCzGZ/4QeW 2+JqE/BwByYKzbXqXF8nDfRDmElafV0qf7WeYpejPyP4rWKo8Viq6WXCcU3OYwhNv5mqddAKb daZpPd2SP8gHeISLjhcPijNHf94qbduomCnmPK3p/6RoHRiNU3q+zLTWe9mS6cNaK33rEb6Yo 7sZUcQZ9Yw35HvL12hIlicVez083vELy+tecOVJykBQN6I/Dcomvtotcyrt0cQn/CG0vH13rF FQ1vZMG9FBmPapwVYSWTk7/nfmyttizWEm0J/fnn06Kc9tn1iRVL00vMU69MmUAeQDJMC8ktm 95RAFnnUHPU/DeXfDOPr6RgnzU9QlWfh9RMJWC4pt7UDp3S7tynCjCS3Af+v1f5t3STxSjs13 joPJHutn3c8ZHLta7kFP9svJ7eC4crxRFvr00mZMsaZIyAvKfGiJZvdQQIwe43Ci7mnqT0Xqo ROG85ftbSBr+d43ZOVTpn/5wogYUQsr4TD4piuAxt2NBJgA79t4bpI29LbVESdwIl59qEQB5i RGomMuDPScX20drN4XHpjg9oYrlVdYI+EpJjAv73KFvFAiRVbaNJRVWfLugaHEqDOuWHphMKt c74t540vJwXscu9uR1n/w2zcE1hLEw4dvCiFdg4A0m6XyTOPAh90ZzNDshA49jEwmT7FbpVQ5 RTmVKC01IEfSc+yK4D7krnfHUQ4gEnZqqufEfATN2KSjWlHUlFblhTfNJuUyPc70sIwhFQMj Received-SPF: pass client-ip=212.227.15.18; envelope-from=stephen.berman@gmx.net; helo=mout.gmx.net X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:281945 Archived-At: --=-=-= Content-Type: text/plain 0. emacs -Q 1. Evaluate the following sexp: (let ((buf (get-buffer-create "*Widget Test*"))) (switch-to-buffer buf) (dolist (el '("First" "Second" "Third")) (widget-create 'push-button el)) (use-local-map widget-keymap) (widget-setup) (goto-char (point-min))) Now the current buffer is *Widget Test* containing three push-button widgets labeled "First", "Second", and "Third", and point is at the start of the first widget, at BOB. 2. Hit the TAB key (bound to widget-forward) three times: this moves point successively from "First" to "Second" to "Third" and then back to "First" -- but on returning to the initial position after the third TAB, a beginning-of-buffer error is also signaled. 3. Likewise, hitting S-TAB (bound to widget-backward) three times moves backwards across the widgets, from "Third" to "Second" to "First", again signaling a beginning-of-buffer error after the last S-TAB. These beginning-of-buffer errors are due to widget-move (the workhorse behind widget-forward and widget-backward) calling backward-char in a loop without checking for BOB. The attached patch fixes this. The patch also includes additions to widget-test-widget-move (from which most of the above sexp was taken) that test moving to a widget at BOB. (If the patch is acceptable, whoever commits it should use the correct bug# before pushing it, or I can do that myself.) 2024-03-22 Stephen Berman Prevent error on tabbing to widget at beginning of buffer (bug#xxxxx) * 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): Adds checks that moving to a widget at beginning of buffer does not signal a beginning-of-buffer error. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=widget-move.diff Content-Transfer-Encoding: quoted-printable diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el index 172da3db1e0..948a9ed06a5 100644 =2D-- a/lisp/wid-edit.el +++ b/lisp/wid-edit.el @@ -1276,9 +1276,9 @@ widget-move (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..3aef683f15e 100644 =2D-- a/test/lisp/wid-edit-tests.el +++ b/test/lisp/wid-edit-tests.el @@ -336,7 +336,13 @@ widget-test-widget-move (widget-forward 2) (forward-char) (widget-backward 1) - (should (string=3D "Second" (widget-value (widget-at)))))) + (should (string=3D "Second" (widget-value (widget-at)))) + ;; Check that moving to a widget at beginning of buffer does not + ;; signal a beginning-of-buffer error (bug#xxxxx). + (widget-backward 1) ; Should not signal beginning-of-buffer error. + (widget-forward 2) + (should (string=3D "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." --=-=-= Content-Type: text/plain In GNU Emacs 30.0.50 (build 3, x86_64-pc-linux-gnu, GTK+ Version 3.24.38, cairo version 1.18.0) of 2024-03-22 built on strobelfs2 Repository revision: c1530a2e4973005633ebe00d447f1f3aa1200301 Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12101009 System Description: Linux From Scratch r12.0-112 Configured using: 'configure -C --with-xwidgets 'CFLAGS=-Og -g3' PKG_CONFIG_PATH=/opt/qt5/lib/pkgconfig' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON LCMS2 LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM XWIDGETS GTK3 ZLIB --=-=-=--