Emacs bindings and `home`/`end` don't scroll URL entry buffer, but arrow keys do
Describe the bug
When entering or editing a URL that is longer than the URL entry buffer is wide (and while in emacs-mode), pressing C-a, C-e, C-b, C-f, home, or end can all move the text cursor outside of the visible area of text. However, pressing the left and right arrow keys does correctly scroll the buffer.
Precise recipe to reproduce the issue
Activate emacs-mode and navigate to a page with a long URL(here's an example). Then, type C-l and move the cursor out of view with C-a, C-e, C-b, C-f, home, or end.
For website-specific issues: Can you reproduce this issue with Epiphany / GNOME Web (https://wiki.gnome.org/Apps/Web)? N/A
Information
- OS name+version: Guix 070c073
- Graphics card and driver: AMD Radeon 7900XTX, radv Mesa 24.3.2
- Desktop environment / Window manager name+version: Hyprland 0.47.0
- Installation method (Flatpak, Guix, package manager, build from source): Guix (channel aadcg cb6faa5, aadcg-nyxt)
- Output of
nyxt --system-information:
Nyxt version: 3.12.0
Renderer: GI-GTK
Operating system kernel: Linux 6.12.11
Lisp implementation: SBCL 2.4.10 (Dynamic space size: 3221225472)
Features: (:NYXT-GI-GTK :NYXT-GTK :NYXT-GI-GTK :NYXT-GTK :NYXT-3.12 :NYXT-3 :NYXT-3.12.0
:CLIPBOARD-CONTENT-METHOD :SWANK :SLYNK :PLUMP-UTF-32 :PARENSCRIPT :NSYMBOLS
:FSET-EXT-STRINGS :SBCL+SAFE-STANDARD-READTABLE :NAMED-READTABLES :GLOBAL-VARS
:CL-FAD :LPARALLEL :21BIT-CHARS :CUSTOM-HASH-TABLE-NATIVE :CL-PPCRE-UNICODE
:CL-UNICODE :CL-JSON-DOUBLE-FLOAT-IS-SUBSUMED
:CL-JSON-SINGLE-FLOAT-IS-SUBSUMED :CHUNGA :FLEXI-STREAMS :CL-PPCRE :WEBKIT2
:WEBKIT-2.44.1 :WEBKIT-2.44 :WEBKIT-2 :WEBKIT2-CORS-ALLOWLIST
:WEBKIT2-PASTE-PLAINTEXT :WEBKIT2-TRACKING :WEBKIT2-MUTE :WEBKIT2-EMOJI
:WEBKIT2-MEDIA :WEBKIT2-SANDBOXING :GTK-3-22 :GTK-3-20 :GTK-3-18 :GTK-3-16
:GTK-3-14 :GTK-3-12 :GTK-3-10 :GTK-3-8 :GTK-3-6 :GTK-3-4 :GTK :GDK-3-22
:GDK-3-20 :GDK-3-18 :GDK-3-16 :GDK-3-14 :GDK-3-12 :GDK-3-10 :GDK-3-8 :GDK-3-6
:GDK-3-4 :CAIRO-1-10 :CAIRO-1-12 :GDK-PIXBUF :CLOSER-MOP :GLIB-2-30 :GLIB-2-32
:GLIB-2-34 :GLIB-2-36 :GLIB-2-38 :GLIB-2-40 :GLIB-2-42 :GLIB-2-44 :GLIB-2-46
:GLIB-2-48 :GLIB-2-50 :GLIB-2-52 :GLIB-2-54 :GLIB-2-56 :GLIB-2-58 :GLIB
:BORDEAUX-THREADS :LPARALLEL.WITH-CLTL2 :LPARALLEL.WITH-CAS
:LPARALLEL.WITH-STEALING-SCHEDULER :SPLIT-SEQUENCE
CFFI-FEATURES:FLAT-NAMESPACE CFFI-FEATURES:X86-64 CFFI-FEATURES:UNIX :CFFI
CFFI-SYS::FLAT-NAMESPACE ALEXANDRIA::SEQUENCE-EMPTYP :FAST-IO-SV :FAST-IO
:CL-JSON-CLOS :CL-JSON :SBCL-USES-SB-ROTATE-BYTE CHIPZ-SYSTEM:GRAY-STREAMS
:THREAD-SUPPORT :ASDF3.3 :ASDF3.2 :ASDF3.1 :ASDF3 :ASDF2 :ASDF :OS-UNIX
:NON-BASE-CHARS-EXIST-P :ASDF-UNICODE :ARENA-ALLOCATOR :X86-64 :GENCGC :64-BIT
:ANSI-CL :COMMON-LISP :ELF :IEEE-FLOATING-POINT :LINUX :LITTLE-ENDIAN
:PACKAGE-LOCAL-NICKNAMES :SB-CORE-COMPRESSION :SB-LDB :SB-PACKAGE-LOCKS
:SB-THREAD :SB-UNICODE :SBCL :UNIX)
ASDF version: 3.3.7
ASDF registries: (NYXT-SOURCE-REGISTRY ENVIRONMENT-SOURCE-REGISTRY)
Critical dependencies: (/tmp/guix-build-aadcg-nyxt-3.12.0.drv-0/source/_build/cl-cffi-gtk/gtk/cl-cffi-gtk.asd
/tmp/guix-build-aadcg-nyxt-3.12.0.drv-0/source/_build/cl-gobject-introspection/cl-gobject-introspection.asd
/tmp/guix-build-aadcg-nyxt-3.12.0.drv-0/source/_build/cl-webkit/webkit2/cl-webkit2.asd)
Guix version:
Output when started from a shell
~ 🮲🮳 nyxt
Nyxt version 3.12.0
<INFO> [20:11:54] Source location: #P"/gnu/store/hd7mgl09glflizslbvjn5qffgdjbi349-aadcg-nyxt-3.12.0/share/nyxt/"
<INFO> [20:11:54] Loading Lisp file #P"/home/wong/.config/nyxt/auto-config.3.lisp".
<INFO> [20:11:54] Loading Lisp file #P"/home/wong/.config/nyxt/config.lisp".
<INFO> [20:11:54] Listening to socket: #P"/run/user/1000/nyxt/nyxt.socket"
(process:2): Gtk-WARNING **: 01:11:54.316: Locale not supported by C library.
Using the fallback 'C' locale.
(WebKitWebProcess:2): Gdk-WARNING **: 01:11:54.320: Failed to read portal settings: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such interface ?org.freedesktop.portal.Settings? on object at path /org/freedesktop/portal/desktop
<INFO> [20:11:54] Loading #P"/home/wong/.local/share/nyxt/history/default.lisp".
(process:2): Gtk-WARNING **: 01:11:54.839: Locale not supported by C library.
Using the fallback 'C' locale.
(WebKitWebProcess:2): Gdk-WARNING **: 01:11:54.842: Failed to read portal settings: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such interface ?org.freedesktop.portal.Settings? on object at path /org/freedesktop/portal/desktop
<INFO> [20:11:54] Loading #P"/home/wong/.local/share/nyxt/auto-rules.lisp".
<INFO> [20:11:54] Loading #P"/home/wong/.local/share/nyxt/hostlist-stevenblack.txt".
<INFO> [20:11:54] Restoring 2 buffers from history.
(process:2): Gtk-WARNING **: 01:11:55.617: Locale not supported by C library.
Using the fallback 'C' locale.
(WebKitWebProcess:2): Gdk-WARNING **: 01:11:55.620: Failed to read portal settings: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such interface ?org.freedesktop.portal.Settings? on object at path /org/freedesktop/portal/desktop
<INFO> [20:11:55] Loading "https://github.com/atlas-engineer/nyxt/issues/3593".
(process:2): Gtk-WARNING **: 01:11:55.749: Locale not supported by C library.
Using the fallback 'C' locale.
(WebKitWebProcess:2): Gdk-WARNING **: 01:11:55.752: Failed to read portal settings: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such interface ?org.freedesktop.portal.Settings? on object at path /org/freedesktop/portal/desktop
<INFO> [20:11:56] Finished loading "https://github.com/atlas-engineer/nyxt/issues/3593".
<INFO> [20:11:57] Pressed keys: C-x
(process:2): Gtk-WARNING **: 01:11:57.921: Locale not supported by C library.
Using the fallback 'C' locale.
(WebKitWebProcess:2): Gdk-WARNING **: 01:11:57.924: Failed to read portal settings: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such interface ?org.freedesktop.portal.Settings? on object at path /org/freedesktop/portal/desktop
(process:2): Gtk-WARNING **: 01:11:58.000: Locale not supported by C library.
Using the fallback 'C' locale.
(WebKitWebProcess:2): Gdk-WARNING **: 01:11:58.003: Failed to read portal settings: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such interface ?org.freedesktop.portal.Settings? on object at path /org/freedesktop/portal/desktop
<INFO> [20:11:58] Loading "https://wiki.futo.org/wiki/Introduction_to_a_Self_Managed_Life:_a_13_hour_%26_28_minute_presentation_by_FUTO_software".
<INFO> [20:12:01] Loading #P"/home/wong/.local/share/nyxt/bookmarks.lisp".
<INFO> [20:12:02] Finished loading "https://wiki.futo.org/wiki/Introduction_to_a_Self_Managed_Life:_a_13_hour_%26_28_minute_presentation_by_FUTO_software".
<INFO> [20:12:04] Deleting socket #P"/run/user/1000/nyxt/nyxt.socket".
Very good report, thanks!
There many issue here, so it's hard to choose from where to start. At some point, we will need to re-implement the prompt buffer so let's leave this issue for that time.