GNU bug report logs - #69943
30.0.50; Tabbing through widgets can signal beginning-of-buffer error

Previous Next

Package: emacs;

Reported by: Stephen Berman <stephen.berman <at> gmx.net>

Date: Fri, 22 Mar 2024 15:22:02 UTC

Severity: normal

Found in version 30.0.50

Done: Stephen Berman <stephen.berman <at> gmx.net>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Stephen Berman <stephen.berman <at> gmx.net>
Subject: bug#69943: closed (Re: bug#69943: 30.0.50; Tabbing through
 widgets can signal beginning-of-buffer error)
Date: Thu, 18 Apr 2024 13:38:08 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#69943: 30.0.50; Tabbing through widgets can signal beginning-of-buffer error

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 69943 <at> debbugs.gnu.org.

-- 
69943: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=69943
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Stephen Berman <stephen.berman <at> gmx.net>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 69943-done <at> debbugs.gnu.org, Mauro Aranda <maurooaranda <at> gmail.com>
Subject: Re: bug#69943: 30.0.50; Tabbing through widgets can signal
 beginning-of-buffer error
Date: Thu, 18 Apr 2024 15:37:22 +0200
On Thu, 18 Apr 2024 14:35:50 +0300 Eli Zaretskii <eliz <at> gnu.org> wrote:

>> Date: Thu, 18 Apr 2024 07:09:56 -0300
>> Cc: 69943 <at> debbugs.gnu.org
>> From: Mauro Aranda <maurooaranda <at> gmail.com>
>> 
>> Eli Zaretskii <eliz <at> gnu.org> writes:
>> 
>>  > Ping! Ping!
>>  >
>>  >> Cc: 69943 <at> debbugs.gnu.org, maurooaranda <at> gmail.com
>>  >> Date: Sat, 06 Apr 2024 11:57:31 +0300
>>  >> From: Eli Zaretskii <eliz <at> gnu.org>
>>  >>
>>  >> Ping! Mauro, can you please chime in?
>>  >>
>>  >> > From: Stephen Berman <stephen.berman <at> gmx.net>
>>  >> > Cc: maurooaranda <at> gmail.com,  69943 <at> debbugs.gnu.org
>>  >> > Date: Mon, 01 Apr 2024 17:41:36 +0200
>>  >> >
>>  >> > On Mon, 01 Apr 2024 18:37:35 +0300 Eli Zaretskii <eliz <at> gnu.org> wrote:
>>  >> >
>>  >> > >> From: Stephen Berman <stephen.berman <at> gmx.net>
>>  >> > >> Cc: Mauro Aranda <maurooaranda <at> gmail.com>,  69943 <at> debbugs.gnu.org
>>  >> > >> Date: Mon, 01 Apr 2024 17:20:04 +0200
>>  >> > >>
>>  >> > >> On Fri, 22 Mar 2024 17:36:31 +0200 Eli Zaretskii <eliz <at> gnu.org> 
>> wrote:
>>  >> > >>
>>  >> > >> > Mauro, any comments to the proposed patch?
>>  >> > >>
>> 
>> Looks good to me.  Sorry for the delay.
>
> Thanks.  Stephen, feel free to install and close the bug.

Done as commit 94dec953179 to master and bug closed.  Thanks.

Steve Berman

[Message part 3 (message/rfc822, inline)]
From: Stephen Berman <stephen.berman <at> gmx.net>
To: bug-gnu-emacs <at> gnu.org
Subject: 30.0.50; Tabbing through widgets can signal beginning-of-buffer error
Date: Fri, 22 Mar 2024 15:45:16 +0100
[Message part 4 (text/plain, inline)]
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  <stephen.berman <at> gmx.net>

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.

[widget-move.diff (text/x-patch, attachment)]
[Message part 6 (text/plain, inline)]

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


This bug report was last modified 1 year and 33 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.