GNU bug report logs - #78474
31.0.50; Wrong char insertion in rxvt

Previous Next

Package: emacs;

Reported by: Bastien Guerry <bzg <at> gnu.org>

Date: Sat, 17 May 2025 22:56:02 UTC

Severity: normal

Found in version 31.0.50

To reply to this bug, email your comments to 78474 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#78474; Package emacs. (Sat, 17 May 2025 22:56:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Bastien Guerry <bzg <at> gnu.org>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sat, 17 May 2025 22:56:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Bastien Guerry <bzg <at> gnu.org>
To: bug-gnu-emacs <at> gnu.org
Cc: Sébastien Hinderer <Sebastien.Hinderer <at> inria.fr>,
 Samuel Thibault <samuel.thibault <at> gnu.org>
Subject: 31.0.50; Wrong char insertion in rxvt
Date: Sun, 18 May 2025 00:53:13 +0200
With Emacs >= 24 in rxvt (not urxvt), steps to reproduce:

1. find a new buffer and write "Coucou"
2. hit SPC
3. see the space inserted: it is too large.

https://dept-info.labri.fr/~thibault/tmp/coucou.png illustrates the bug.

Quoting Samuel: "Emacs, instead of sending a rightward cursor movement
(\e[C), sends \009\008 (a tabulation and a leftward cursor movement)"

This char insertion problem confuses assistive technologies for the
visually impaired.

Sebastien reported this problem and both Samuel and Sebastien might help
with further information on how to reproduce this, if needed.


In GNU Emacs 31.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
 3.24.38, cairo version 1.16.0) of 2025-05-16 built on guerry
Repository revision: 7d7d821c495abcd740fd20f6a8df6da5bd920cd3
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101007
System Description: Debian GNU/Linux 12 (bookworm)

Configured using:
 'configure --with-native-compilation --without-compress-install
 --with-mailutils --with-tree-sitter --with-imagemagick'

Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ
IMAGEMAGICK JPEG LCMS2 LIBSELINUX LIBXML2 MODULES NATIVE_COMP NOTIFY
INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINERAMA XINPUT2 XPM
XRANDR GTK3 ZLIB

Important settings:
  value of $LANG: fr_FR.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: IBuffer

Minor modes in effect:
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  server-mode: t
  pdf-occur-ibuffer-minor-mode: t
  pdf-occur-global-minor-mode: t
  envrc-global-mode: t
  envrc-mode: t
  which-key-mode: t
  hidden-mode-line-mode: t
  bzg-big-fringe-mode: t
  global-hl-line-mode: t
  pixel-scroll-mode: t
  auto-insert-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  minibuffer-regexp-mode: t
  buffer-read-only: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/home/bzg/.emacs.d/elpa/transient-20250511.1808/transient hides /usr/local/share/emacs/31.0.50/lisp/transient
/home/bzg/.emacs.d/elpa/bind-key-20230203.2004/bind-key hides /usr/local/share/emacs/31.0.50/lisp/bind-key
/home/bzg/.emacs.d/elpa/which-key-20240620.2145/which-key hides /usr/local/share/emacs/31.0.50/lisp/which-key
/home/bzg/.emacs.d/elpa/use-package-20230426.2324/use-package-ensure hides /usr/local/share/emacs/31.0.50/lisp/use-package/use-package-ensure
/home/bzg/.emacs.d/elpa/use-package-20230426.2324/use-package-core hides /usr/local/share/emacs/31.0.50/lisp/use-package/use-package-core
/home/bzg/.emacs.d/elpa/use-package-20230426.2324/use-package hides /usr/local/share/emacs/31.0.50/lisp/use-package/use-package
/home/bzg/.emacs.d/elpa/use-package-20230426.2324/use-package-diminish hides /usr/local/share/emacs/31.0.50/lisp/use-package/use-package-diminish
/home/bzg/.emacs.d/elpa/use-package-20230426.2324/use-package-delight hides /usr/local/share/emacs/31.0.50/lisp/use-package/use-package-delight
/home/bzg/.emacs.d/elpa/use-package-20230426.2324/use-package-bind-key hides /usr/local/share/emacs/31.0.50/lisp/use-package/use-package-bind-key
/home/bzg/.emacs.d/elpa/use-package-20230426.2324/use-package-jump hides /usr/local/share/emacs/31.0.50/lisp/use-package/use-package-jump
/home/bzg/.emacs.d/elpa/use-package-20230426.2324/use-package-lint hides /usr/local/share/emacs/31.0.50/lisp/use-package/use-package-lint
/home/bzg/.emacs.d/elpa/markdown-ts-mode-20240422.2329/markdown-ts-mode hides /usr/local/share/emacs/31.0.50/lisp/textmodes/markdown-ts-mode
/home/bzg/.emacs.d/elpa/peg-20150708.641/peg hides /usr/local/share/emacs/31.0.50/lisp/progmodes/peg
~/install/git/org/org-mode/lisp/org-colview hides /usr/local/share/emacs/31.0.50/lisp/org/org-colview
~/install/git/org/org-mode/lisp/org-mouse hides /usr/local/share/emacs/31.0.50/lisp/org/org-mouse
~/install/git/org/org-mode/lisp/ox-org hides /usr/local/share/emacs/31.0.50/lisp/org/ox-org
~/install/git/org/org-mode/lisp/ol-docview hides /usr/local/share/emacs/31.0.50/lisp/org/ol-docview
~/install/git/org/org-mode/lisp/ob-calc hides /usr/local/share/emacs/31.0.50/lisp/org/ob-calc
~/install/git/org/org-mode/lisp/org-mobile hides /usr/local/share/emacs/31.0.50/lisp/org/org-mobile
~/install/git/org/org-mode/lisp/ob-lua hides /usr/local/share/emacs/31.0.50/lisp/org/ob-lua
~/install/git/org/org-mode/lisp/ob-lisp hides /usr/local/share/emacs/31.0.50/lisp/org/ob-lisp
~/install/git/org/org-mode/lisp/org-archive hides /usr/local/share/emacs/31.0.50/lisp/org/org-archive
~/install/git/org/org-mode/lisp/ol-info hides /usr/local/share/emacs/31.0.50/lisp/org/ol-info
~/install/git/org/org-mode/lisp/ob-julia hides /usr/local/share/emacs/31.0.50/lisp/org/ob-julia
~/install/git/org/org-mode/lisp/org hides /usr/local/share/emacs/31.0.50/lisp/org/org
~/install/git/org/org-mode/lisp/ob-awk hides /usr/local/share/emacs/31.0.50/lisp/org/ob-awk
~/install/git/org/org-mode/lisp/ol-gnus hides /usr/local/share/emacs/31.0.50/lisp/org/ol-gnus
~/install/git/org/org-mode/lisp/ob-sass hides /usr/local/share/emacs/31.0.50/lisp/org/ob-sass
~/install/git/org/org-mode/lisp/org-attach-git hides /usr/local/share/emacs/31.0.50/lisp/org/org-attach-git
~/install/git/org/org-mode/lisp/org-list hides /usr/local/share/emacs/31.0.50/lisp/org/org-list
~/install/git/org/org-mode/lisp/org-agenda hides /usr/local/share/emacs/31.0.50/lisp/org/org-agenda
~/install/git/org/org-mode/lisp/ol-w3m hides /usr/local/share/emacs/31.0.50/lisp/org/ol-w3m
~/install/git/org/org-mode/lisp/ob-haskell hides /usr/local/share/emacs/31.0.50/lisp/org/ob-haskell
~/install/git/org/org-mode/lisp/ox-koma-letter hides /usr/local/share/emacs/31.0.50/lisp/org/ox-koma-letter
~/install/git/org/org-mode/lisp/ob-sed hides /usr/local/share/emacs/31.0.50/lisp/org/ob-sed
~/install/git/org/org-mode/lisp/ob-clojure hides /usr/local/share/emacs/31.0.50/lisp/org/ob-clojure
~/install/git/org/org-mode/lisp/ox-ascii hides /usr/local/share/emacs/31.0.50/lisp/org/ox-ascii
~/install/git/org/org-mode/lisp/ox-texinfo hides /usr/local/share/emacs/31.0.50/lisp/org/ox-texinfo
~/install/git/org/org-mode/lisp/ob-exp hides /usr/local/share/emacs/31.0.50/lisp/org/ob-exp
~/install/git/org/org-mode/lisp/ob-plantuml hides /usr/local/share/emacs/31.0.50/lisp/org/ob-plantuml
~/install/git/org/org-mode/lisp/org-id hides /usr/local/share/emacs/31.0.50/lisp/org/org-id
~/install/git/org/org-mode/lisp/ob-comint hides /usr/local/share/emacs/31.0.50/lisp/org/ob-comint
~/install/git/org/org-mode/lisp/ol-irc hides /usr/local/share/emacs/31.0.50/lisp/org/ol-irc
~/install/git/org/org-mode/lisp/ox-publish hides /usr/local/share/emacs/31.0.50/lisp/org/ox-publish
~/install/git/org/org-mode/lisp/ob-processing hides /usr/local/share/emacs/31.0.50/lisp/org/ob-processing
~/install/git/org/org-mode/lisp/org-faces hides /usr/local/share/emacs/31.0.50/lisp/org/org-faces
~/install/git/org/org-mode/lisp/ob-sqlite hides /usr/local/share/emacs/31.0.50/lisp/org/ob-sqlite
~/install/git/org/org-mode/lisp/org-attach hides /usr/local/share/emacs/31.0.50/lisp/org/org-attach
~/install/git/org/org-mode/lisp/ob-lob hides /usr/local/share/emacs/31.0.50/lisp/org/ob-lob
~/install/git/org/org-mode/lisp/ox-beamer hides /usr/local/share/emacs/31.0.50/lisp/org/ox-beamer
~/install/git/org/org-mode/lisp/ox-latex hides /usr/local/share/emacs/31.0.50/lisp/org/ox-latex
~/install/git/org/org-mode/lisp/ob-core hides /usr/local/share/emacs/31.0.50/lisp/org/ob-core
~/install/git/org/org-mode/lisp/org-persist hides /usr/local/share/emacs/31.0.50/lisp/org/org-persist
~/install/git/org/org-mode/lisp/ob-octave hides /usr/local/share/emacs/31.0.50/lisp/org/ob-octave
~/install/git/org/org-mode/lisp/ob-gnuplot hides /usr/local/share/emacs/31.0.50/lisp/org/ob-gnuplot
~/install/git/org/org-mode/lisp/org-element-ast hides /usr/local/share/emacs/31.0.50/lisp/org/org-element-ast
~/install/git/org/org-mode/lisp/oc-natbib hides /usr/local/share/emacs/31.0.50/lisp/org/oc-natbib
~/install/git/org/org-mode/lisp/org-capture hides /usr/local/share/emacs/31.0.50/lisp/org/org-capture
~/install/git/org/org-mode/lisp/org-timer hides /usr/local/share/emacs/31.0.50/lisp/org/org-timer
~/install/git/org/org-mode/lisp/ob-scheme hides /usr/local/share/emacs/31.0.50/lisp/org/ob-scheme
~/install/git/org/org-mode/lisp/ob-ditaa hides /usr/local/share/emacs/31.0.50/lisp/org/ob-ditaa
~/install/git/org/org-mode/lisp/ol-mhe hides /usr/local/share/emacs/31.0.50/lisp/org/ol-mhe
~/install/git/org/org-mode/lisp/org-feed hides /usr/local/share/emacs/31.0.50/lisp/org/org-feed
~/install/git/org/org-mode/lisp/ol-man hides /usr/local/share/emacs/31.0.50/lisp/org/ol-man
~/install/git/org/org-mode/lisp/org-macro hides /usr/local/share/emacs/31.0.50/lisp/org/org-macro
~/install/git/org/org-mode/lisp/ol hides /usr/local/share/emacs/31.0.50/lisp/org/ol
~/install/git/org/org-mode/lisp/ob-makefile hides /usr/local/share/emacs/31.0.50/lisp/org/ob-makefile
~/install/git/org/org-mode/lisp/oc-basic hides /usr/local/share/emacs/31.0.50/lisp/org/oc-basic
~/install/git/org/org-mode/lisp/ob-ocaml hides /usr/local/share/emacs/31.0.50/lisp/org/ob-ocaml
~/install/git/org/org-mode/lisp/org-table hides /usr/local/share/emacs/31.0.50/lisp/org/org-table
~/install/git/org/org-mode/lisp/ob-groovy hides /usr/local/share/emacs/31.0.50/lisp/org/ob-groovy
~/install/git/org/org-mode/lisp/ox-man hides /usr/local/share/emacs/31.0.50/lisp/org/ox-man
~/install/git/org/org-mode/lisp/org-footnote hides /usr/local/share/emacs/31.0.50/lisp/org/org-footnote
~/install/git/org/org-mode/lisp/org-clock hides /usr/local/share/emacs/31.0.50/lisp/org/org-clock
~/install/git/org/org-mode/lisp/ob-tangle hides /usr/local/share/emacs/31.0.50/lisp/org/ob-tangle
~/install/git/org/org-mode/lisp/ob-screen hides /usr/local/share/emacs/31.0.50/lisp/org/ob-screen
~/install/git/org/org-mode/lisp/ob-forth hides /usr/local/share/emacs/31.0.50/lisp/org/ob-forth
~/install/git/org/org-mode/lisp/oc-biblatex hides /usr/local/share/emacs/31.0.50/lisp/org/oc-biblatex
~/install/git/org/org-mode/lisp/ol-bibtex hides /usr/local/share/emacs/31.0.50/lisp/org/ol-bibtex
~/install/git/org/org-mode/lisp/org-duration hides /usr/local/share/emacs/31.0.50/lisp/org/org-duration
~/install/git/org/org-mode/lisp/org-pcomplete hides /usr/local/share/emacs/31.0.50/lisp/org/org-pcomplete
~/install/git/org/org-mode/lisp/ob-css hides /usr/local/share/emacs/31.0.50/lisp/org/ob-css
~/install/git/org/org-mode/lisp/ob-C hides /usr/local/share/emacs/31.0.50/lisp/org/ob-C
~/install/git/org/org-mode/lisp/ob-matlab hides /usr/local/share/emacs/31.0.50/lisp/org/ob-matlab
~/install/git/org/org-mode/lisp/ob-latex hides /usr/local/share/emacs/31.0.50/lisp/org/ob-latex
~/install/git/org/org-mode/lisp/org-tempo hides /usr/local/share/emacs/31.0.50/lisp/org/org-tempo
~/install/git/org/org-mode/lisp/org-protocol hides /usr/local/share/emacs/31.0.50/lisp/org/org-protocol
~/install/git/org/org-mode/lisp/org-macs hides /usr/local/share/emacs/31.0.50/lisp/org/org-macs
~/install/git/org/org-mode/lisp/ol-eww hides /usr/local/share/emacs/31.0.50/lisp/org/ol-eww
~/install/git/org/org-mode/lisp/ob-R hides /usr/local/share/emacs/31.0.50/lisp/org/ob-R
~/install/git/org/org-mode/lisp/ob-dot hides /usr/local/share/emacs/31.0.50/lisp/org/ob-dot
~/install/git/org/org-mode/lisp/ol-bbdb hides /usr/local/share/emacs/31.0.50/lisp/org/ol-bbdb
~/install/git/org/org-mode/lisp/org-datetree hides /usr/local/share/emacs/31.0.50/lisp/org/org-datetree
~/install/git/org/org-mode/lisp/org-fold hides /usr/local/share/emacs/31.0.50/lisp/org/org-fold
~/install/git/org/org-mode/lisp/ob-emacs-lisp hides /usr/local/share/emacs/31.0.50/lisp/org/ob-emacs-lisp
~/install/git/org/org-mode/lisp/ob-fortran hides /usr/local/share/emacs/31.0.50/lisp/org/ob-fortran
~/install/git/org/org-mode/lisp/org-habit hides /usr/local/share/emacs/31.0.50/lisp/org/org-habit
~/install/git/org/org-mode/lisp/ob-lilypond hides /usr/local/share/emacs/31.0.50/lisp/org/ob-lilypond
~/install/git/org/org-mode/lisp/org-loaddefs hides /usr/local/share/emacs/31.0.50/lisp/org/org-loaddefs
~/install/git/org/org-mode/lisp/oc hides /usr/local/share/emacs/31.0.50/lisp/org/oc
~/install/git/org/org-mode/lisp/org-keys hides /usr/local/share/emacs/31.0.50/lisp/org/org-keys
~/install/git/org/org-mode/lisp/ob-org hides /usr/local/share/emacs/31.0.50/lisp/org/ob-org
~/install/git/org/org-mode/lisp/ol-doi hides /usr/local/share/emacs/31.0.50/lisp/org/ol-doi
~/install/git/org/org-mode/lisp/org-element hides /usr/local/share/emacs/31.0.50/lisp/org/org-element
~/install/git/org/org-mode/lisp/ob-sql hides /usr/local/share/emacs/31.0.50/lisp/org/ob-sql
~/install/git/org/org-mode/lisp/ox-md hides /usr/local/share/emacs/31.0.50/lisp/org/ox-md
~/install/git/org/org-mode/lisp/ob-eshell hides /usr/local/share/emacs/31.0.50/lisp/org/ob-eshell
~/install/git/org/org-mode/lisp/org-ctags hides /usr/local/share/emacs/31.0.50/lisp/org/org-ctags
~/install/git/org/org-mode/lisp/ob-shell hides /usr/local/share/emacs/31.0.50/lisp/org/ob-shell
~/install/git/org/org-mode/lisp/oc-csl hides /usr/local/share/emacs/31.0.50/lisp/org/oc-csl
~/install/git/org/org-mode/lisp/ox hides /usr/local/share/emacs/31.0.50/lisp/org/ox
~/install/git/org/org-mode/lisp/org-indent hides /usr/local/share/emacs/31.0.50/lisp/org/org-indent
~/install/git/org/org-mode/lisp/org-plot hides /usr/local/share/emacs/31.0.50/lisp/org/org-plot
~/install/git/org/org-mode/lisp/org-fold-core hides /usr/local/share/emacs/31.0.50/lisp/org/org-fold-core
~/install/git/org/org-mode/lisp/org-inlinetask hides /usr/local/share/emacs/31.0.50/lisp/org/org-inlinetask
~/install/git/org/org-mode/lisp/org-refile hides /usr/local/share/emacs/31.0.50/lisp/org/org-refile
~/install/git/org/org-mode/lisp/ob-ruby hides /usr/local/share/emacs/31.0.50/lisp/org/ob-ruby
~/install/git/org/org-mode/lisp/ob-java hides /usr/local/share/emacs/31.0.50/lisp/org/ob-java
~/install/git/org/org-mode/lisp/ob-maxima hides /usr/local/share/emacs/31.0.50/lisp/org/ob-maxima
~/install/git/org/org-mode/lisp/org-cycle hides /usr/local/share/emacs/31.0.50/lisp/org/org-cycle
~/install/git/org/org-mode/lisp/org-lint hides /usr/local/share/emacs/31.0.50/lisp/org/org-lint
~/install/git/org/org-mode/lisp/ox-html hides /usr/local/share/emacs/31.0.50/lisp/org/ox-html
~/install/git/org/org-mode/lisp/ob-perl hides /usr/local/share/emacs/31.0.50/lisp/org/ob-perl
~/install/git/org/org-mode/lisp/ob-eval hides /usr/local/share/emacs/31.0.50/lisp/org/ob-eval
~/install/git/org/org-mode/lisp/org-entities hides /usr/local/share/emacs/31.0.50/lisp/org/org-entities
~/install/git/org/org-mode/lisp/org-crypt hides /usr/local/share/emacs/31.0.50/lisp/org/org-crypt
~/install/git/org/org-mode/lisp/org-compat hides /usr/local/share/emacs/31.0.50/lisp/org/org-compat
~/install/git/org/org-mode/lisp/org-num hides /usr/local/share/emacs/31.0.50/lisp/org/org-num
~/install/git/org/org-mode/lisp/ob-js hides /usr/local/share/emacs/31.0.50/lisp/org/ob-js
~/install/git/org/org-mode/lisp/oc-bibtex hides /usr/local/share/emacs/31.0.50/lisp/org/oc-bibtex
~/install/git/org/org-mode/lisp/ob-table hides /usr/local/share/emacs/31.0.50/lisp/org/ob-table
~/install/git/org/org-mode/lisp/ol-rmail hides /usr/local/share/emacs/31.0.50/lisp/org/ol-rmail
~/install/git/org/org-mode/lisp/ob-python hides /usr/local/share/emacs/31.0.50/lisp/org/ob-python
~/install/git/org/org-mode/lisp/ol-eshell hides /usr/local/share/emacs/31.0.50/lisp/org/ol-eshell
~/install/git/org/org-mode/lisp/ob-ref hides /usr/local/share/emacs/31.0.50/lisp/org/ob-ref
~/install/git/org/org-mode/lisp/org-goto hides /usr/local/share/emacs/31.0.50/lisp/org/org-goto
~/install/git/org/org-mode/lisp/org-src hides /usr/local/share/emacs/31.0.50/lisp/org/org-src
~/install/git/org/org-mode/lisp/ox-icalendar hides /usr/local/share/emacs/31.0.50/lisp/org/ox-icalendar
~/install/git/org/org-mode/lisp/org-version hides /usr/local/share/emacs/31.0.50/lisp/org/org-version
~/install/git/org/org-mode/lisp/ox-odt hides /usr/local/share/emacs/31.0.50/lisp/org/ox-odt
~/install/git/org/org-mode/lisp/ob hides /usr/local/share/emacs/31.0.50/lisp/org/ob

Features:
(shadow emacs-news-mode emacsbug cc-mode cc-fonts cc-guess cc-menus
cc-cmds cc-styles cc-align cc-engine helpful cc-langs cc-vars cc-defs
trace edebug info-look elisp-refs helpful-autoloads elisp-refs-autoloads
loaddefs-gen tar-mode display-line-numbers finder-inf macros hippie-exp
vc-filewise tramp-cmds tramp-cache time-stamp pdf-sync pdf-annot
pdf-outline pdf-links pdf-history gnus-search eieio-opt speedbar ezimage
dframe lsp-zig lsp-yang lsp-yaml lsp-xml lsp-wgsl lsp-volar
lsp-vimscript lsp-vhdl lsp-vetur lsp-html lsp-verilog lsp-vala lsp-v
lsp-typespec lsp-typeprof lsp-ttcn3 lsp-ts-query lsp-trunk lsp-toml
lsp-tilt lsp-tex lsp-terraform lsp-svelte lsp-steep lsp-sqls lsp-sql
lsp-sorbet lsp-solidity lsp-solargraph lsp-semgrep lsp-rust lsp-ruff
lsp-ruby-syntax-tree lsp-ruby-lsp lsp-rubocop lsp-roslyn lsp-roc lsp-rf
lsp-remark lsp-racket lsp-r lsp-qml lsp-pylsp lsp-pyls lsp-pwsh
lsp-purescript lsp-postgres lsp-pls lsp-php lsp-perlnavigator lsp-perl
lsp-openscad lsp-ocaml find-file lsp-nushell lsp-nix lsp-nim lsp-nginx
lsp-nextflow lsp-move lsp-mojo lsp-mint lsp-meson lsp-mdx lsp-matlab
lsp-marksman lsp-markdown lsp-magik lsp-fennel lsp-lua lsp-lisp
lsp-kubernetes-helm lsp-kotlin lsp-json lsp-jq lsp-javascript lsp-idris
lsp-haxe lsp-hack lsp-groovy lsp-graphql lsp-golangci-lint lsp-glsl
lsp-gleam lsp-gdscript lsp-fsharp lsp-futhark lsp-fortran lsp-eslint
lsp-erlang lsp-emmet lsp-elm lsp-elixir lsp-earthly lsp-dockerfile
lsp-dhall lsp-d lsp-cypher lsp-cucumber lsp-copilot lsp-css lsp-c3
lsp-csharp lsp-crystal lsp-credo lsp-cobol lsp-cmake lsp-clojure
lsp-clangd lsp-bufls lsp-go lsp-completion lsp-beancount lsp-bash
lsp-awk lsp-autotools lsp-astro lsp-asm lsp-ansible lsp-angular lsp-ada
lsp-semantic-tokens lsp-actionscript lsp-mode lsp-protocol tree-widget
markdown-mode ht f ewoc company-oddmuse company-keywords company-etags
etags fileloop company-gtags company-dabbrev-code company-dabbrev
company-files company-clang company-capf company-cmake company-semantic
company-template company-bbdb company origami origami-parsers cl s
org-duration help-fns radix-tree cl-print debug backtrace cal-iso
cal-china lunar solar cal-dst cal-bahai cal-islam cal-hebrew holidays
holiday-loaddefs cal-move tabify elfeed-link elfeed-show elfeed-search
elfeed-csv elfeed elfeed-curl elfeed-log xml-query elfeed-db elfeed-lib
bbdb-message mailalias flow-fill vc-hg vc-bzr vc-src vc-sccs vc-svn
vc-cvs vc-rcs log-view bug-reference magit-extras face-remap
magit-bookmark magit-submodule magit-blame magit-stash magit-reflog
magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote
magit-commit magit-sequence magit-notes magit-worktree magit-tag
magit-merge magit-branch magit-reset magit-files magit-refs magit-status
magit magit-repos magit-apply magit-wip magit-log which-func magit-diff
smerge-mode diff git-commit log-edit pcvs-util add-log magit-core
magit-autorevert autorevert magit-margin magit-transient magit-process
with-editor server magit-mode transient benchmark magit-git magit-base
magit-section llama dabbrev url-http url-gw url-cache url-auth char-fold
misearch multi-isearch sort gnus-cite smiley mm-archive mail-extr qp
textsec uni-scripts idna-mapping ucs-normalize uni-confusable
textsec-check gnus-async gnus-bcklg gnus-dup gnus-ml cursor-sensor nndoc
utf-7 network-stream nsm nnfolder nnnil gptel-curl gptel-org cus-start
gptel-anthropic gptel gptel-openai compat pdf-occur ibuf-ext tablist
tablist-filter semantic/wisent/comp semantic/wisent
semantic/wisent/wisent semantic/util-modes semantic/util semantic
semantic/tag semantic/lex semantic/fw mode-local cedet pdf-isearch
let-alist pdf-misc pdf-tools pdf-view bookmark pdf-cache pdf-info tq
pdf-util pdf-macs dired-subtree dired-hacks-utils dired-aux dash envrc
inheritenv which-key register-list ibuffer ibuffer-loaddefs whitespace
flycheck-clj-kondo flycheck clojure-ts-mode clj-refactor cap-words
superword subword hydra lv inflections mc-hide-unmatched-lines-mode
mc-mark-more sgml-mode facemenu mc-cycle-cursors multiple-cursors-core
rect yasnippet cider tramp-sh cider-debug cider-browse-ns cider-mode
cider-xref-backend cider-find cider-completion cider-profile
cider-inspector cider-eval cider-jar arc-mode archive-mode compile
cider-repl-history pulse cider-repl cider-resolve cider-test
cider-overlays cider-stacktrace cider-doc cider-browse-spec
cider-clojuredocs cider-eldoc cider-docstring cider-client cider-common
xref project cider-completion-context cider-connection cider-popup
sesman-browser nrepl-client sesman vc queue nrepl-dict cider-util color
spinner parseedn parseclj-parser parseclj-lex parseclj-alist
clojure-mode lisp-mnt imenu align paredit edmacro kmacro dired-x notmuch
notmuch-tree notmuch-jump notmuch-hello notmuch-show notmuch-print
notmuch-crypto notmuch-mua notmuch-message notmuch-draft
notmuch-maildir-fcc notmuch-address notmuch-company notmuch-parser
notmuch-wash coolj goto-addr notmuch-tag notmuch-lib notmuch-compat
hl-line bbdb-gnus bbdb-mua bbdb-anniv bbdb-com crm bbdb bbdb-site
timezone gnus-dired gnus-icalendar org-capture icalendar gnus-alias
advice gnus-delay gnus-draft gnus-agent gnus-srvr gnus-score score-mode
nnvirtual nntp gnus-cache gnus-msg nndraft nnmh use-package-core appt
diary-lib diary-loaddefs vc-git diff-mode track-changes vc-dispatcher
oc-basic disp-table ol-eww eww vtable mule-util url-queue mm-url
ol-rmail ol-mhe ol-irc ol-info ol-docview doc-view filenotify jka-compr
image-mode exif ol-bibtex bibtex ol-bbdb ol-w3m ol-doi org-link-doi
ox-koma-letter ox-beamer ox-md ox-odt rng-loc rng-uri rng-parse
rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok
nxml-util ox-latex ox-icalendar org-agenda ox-html table ox-ascii
ox-publish ox org-attach ob-gnuplot ob-R ob-plantuml ob-scheme ob-ledger
ob-ditaa ob-org ob-clojure ob-dot ob-shell org-clock org-element
org-persist org-id org-refile avl-tree generator ol-gnus nnselect
gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig gnus-sum shr
pixel-fill kinsoku url-file svg dom gnus-group gnus-undo gnus-start
gnus-dbus dbus xml gnus-cloud nnimap nnmail mail-source utf7 nnoo
gnus-spec gnus-int gnus-range message sendmail yank-media puny dired
dired-loaddefs rfc822 mml mml-sec epa epg rfc6068 epg-config mm-decode
mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums
mailabbrev gmm-utils gnus-win gnus nnheader gnus-util
text-property-search range mm-util mail-prsvr org-bullets org-tempo
tempo txl easy-mmode guess-language flyspell ispell org ob ob-tangle
ob-ref ob-lob ob-table ob-exp org-macro org-src sh-script smie treesit
executable ob-comint org-element-ast inline org-pcomplete org-list
org-footnote org-faces org-entities noutline outline ob-emacs-lisp
ob-core ob-eval org-cycle org-table ol org-fold org-fold-core org-keys
oc org-loaddefs thingatpt find-func cal-menu calendar cal-loaddefs
org-version org-compat org-macs request mailheader mail-utils
modus-operandi-theme modus-themes derived pixel-scroll cua-base time
autoinsert comp comp-cstr cl-extra comp-run comp-common tramp trampver
tramp-integration files-x tramp-message help-mode tramp-compat shell
pcomplete comint ansi-osc ring parse-time iso8601 time-date format-spec
ansi-color tramp-loaddefs cus-edit pp cus-load wid-edit affe-autoloads
aggressive-indent-autoloads async-autoloads bbdb-autoloads
browse-kill-ring-autoloads clj-refactor-autoloads
clojure-ts-mode-autoloads company-autoloads consult-autoloads
csv-mode-autoloads deadgrep-autoloads debbugs-autoloads
diff-hl-autoloads dired-narrow-autoloads dired-ranger-autoloads
dired-subtree-autoloads dired-hacks-utils-autoloads docker-autoloads
aio-autoloads elfeed-autoloads elpher-autoloads envrc-autoloads
exec-path-from-shell-autoloads fd-dired-autoloads
flycheck-clj-kondo-autoloads flycheck-clojure-autoloads
flycheck-autoloads cider-autoloads fzf-autoloads
git-timemachine-autoloads gnus-alias-autoloads gptel-autoloads
guide-key-autoloads htmlize-autoloads inf-clojure-autoloads
clojure-mode-autoloads inheritenv-autoloads jinx-autoloads
json-mode-autoloads rx json-reformat-autoloads
know-your-http-well-autoloads lsp-ui-autoloads lsp-mode-autoloads
ht-autoloads f-autoloads magit-autoloads pcase markdown-mode-autoloads
markdown-ts-mode-autoloads multiple-cursors-autoloads
nginx-mode-autoloads notmuch-autoloads org-noter-autoloads
orgalist-autoloads ox-json-autoloads pandoc-mode-autoloads
hydra-autoloads lv-autoloads paredit-autoloads parseedn-autoloads
parseclj-autoloads pdf-tools-autoloads dash-autoloads po-mode-autoloads
popwin-autoloads warnings relint-autoloads restclient-autoloads
rg-autoloads s-autoloads sesman-autoloads tablist-autoloads
taxy-magit-section-autoloads taxy-autoloads magit-section-autoloads
llama-autoloads transient-autoloads txl-autoloads
guess-language-autoloads request-autoloads use-package-autoloads
bind-key-autoloads varuga-autoloads vterm-autoloads web-mode-autoloads
wgrep-autoloads which-key-autoloads info with-editor-autoloads
xr-autoloads yasnippet-autoloads package browse-url xdg url url-proxy
url-privacy url-expand url-methods url-history url-cookie
generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs icons password-cache json
subr-x map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs cl-lib
rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win
term/common-win x-dnd touch-screen tool-bar dnd fontset image regexp-opt
fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode
register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice seq simple cl-generic indonesian philippine
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget keymap hashtable-print-readable backquote
threads dbusbind inotify lcms2 dynamic-setting system-font-setting
font-render-setting cairo gtk x-toolkit xinput2 x multi-tty move-toolbar
make-network-process tty-child-frames native-compile emacs)

Memory information:
((conses 16 3611857 536322) (symbols 48 113233 45)
 (strings 32 1093966 148111) (string-bytes 1 38051469)
 (vectors 16 319894) (vector-slots 8 4352010 963665)
 (floats 8 4560 13360) (intervals 56 217767 5934) (buffers 1064 100))

-- 
 Bastien




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78474; Package emacs. (Sun, 18 May 2025 05:15:02 GMT) Full text and rfc822 format available.

Message #8 received at 78474 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Bastien Guerry <bzg <at> gnu.org>
Cc: 78474 <at> debbugs.gnu.org, samuel.thibault <at> gnu.org, Sebastien.Hinderer <at> inria.fr
Subject: Re: bug#78474: 31.0.50; Wrong char insertion in rxvt
Date: Sun, 18 May 2025 08:13:58 +0300
> Cc: Sébastien Hinderer <Sebastien.Hinderer <at> inria.fr>,
>  Samuel Thibault <samuel.thibault <at> gnu.org>
> From: Bastien Guerry <bzg <at> gnu.org>
> Date: Sun, 18 May 2025 00:53:13 +0200
> 
> 
> With Emacs >= 24 in rxvt (not urxvt), steps to reproduce:
> 
> 1. find a new buffer and write "Coucou"
> 2. hit SPC
> 3. see the space inserted: it is too large.
> 
> https://dept-info.labri.fr/~thibault/tmp/coucou.png illustrates the bug.
> 
> Quoting Samuel: "Emacs, instead of sending a rightward cursor movement
> (\e[C), sends \009\008 (a tabulation and a leftward cursor movement)"
> 
> This char insertion problem confuses assistive technologies for the
> visually impaired.
> 
> Sebastien reported this problem and both Samuel and Sebastien might help
> with further information on how to reproduce this, if needed.

Emacs has code to estimate the cost of the various ways of getting the
same effect on a text-only terminal and choose the least expensive
one, see cm.c.  If some of the calculations there need to be augmented
to avoid confusing the technologies you mention, someone who knows
about those technologies should study the code and tell us how to
modify the calculations.  Then we could have those modifications
either optional (subject to some user option), or even unconditional.

If Sébastien or Samuel (or someone else) can help us understand how to
modify the cost calculations and/or what optimizations of cursor
motion to avoid when these technologies for the visually impaired are
used, we could see how to fix this.

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78474; Package emacs. (Sun, 18 May 2025 08:02:02 GMT) Full text and rfc822 format available.

Message #11 received at 78474 <at> debbugs.gnu.org (full text, mbox):

From: Samuel Thibault <samuel.thibault <at> gnu.org>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: Bastien Guerry <bzg <at> gnu.org>, 78474 <at> debbugs.gnu.org,
 Sebastien.Hinderer <at> inria.fr
Subject: Re: bug#78474: 31.0.50; Wrong char insertion in rxvt
Date: Sun, 18 May 2025 10:01:17 +0200
Hello,

Eli Zaretskii, le dim. 18 mai 2025 08:13:58 +0300, a ecrit:
> > Quoting Samuel: "Emacs, instead of sending a rightward cursor movement
> > (\e[C), sends \009\008 (a tabulation and a leftward cursor movement)"
> 
> If Sébastien or Samuel (or someone else) can help us understand how to
> modify the cost calculations and/or what optimizations of cursor
> motion to avoid when these technologies for the visually impaired are
> used, we could see how to fix this.

That is exactly what is written above.

Samuel




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78474; Package emacs. (Sun, 18 May 2025 08:06:01 GMT) Full text and rfc822 format available.

Message #14 received at 78474 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Samuel Thibault <samuel.thibault <at> gnu.org>
Cc: bzg <at> gnu.org, 78474 <at> debbugs.gnu.org, Sebastien.Hinderer <at> inria.fr
Subject: Re: bug#78474: 31.0.50; Wrong char insertion in rxvt
Date: Sun, 18 May 2025 11:05:49 +0300
> Date: Sun, 18 May 2025 10:01:17 +0200
> From: Samuel Thibault <samuel.thibault <at> gnu.org>
> Cc: Bastien Guerry <bzg <at> gnu.org>, 78474 <at> debbugs.gnu.org,
> 	Sebastien.Hinderer <at> inria.fr
> 
> Hello,
> 
> Eli Zaretskii, le dim. 18 mai 2025 08:13:58 +0300, a ecrit:
> > > Quoting Samuel: "Emacs, instead of sending a rightward cursor movement
> > > (\e[C), sends \009\008 (a tabulation and a leftward cursor movement)"
> > 
> > If Sébastien or Samuel (or someone else) can help us understand how to
> > modify the cost calculations and/or what optimizations of cursor
> > motion to avoid when these technologies for the visually impaired are
> > used, we could see how to fix this.
> 
> That is exactly what is written above.

Sorry, I don't understand: what is written above?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78474; Package emacs. (Sun, 18 May 2025 08:31:02 GMT) Full text and rfc822 format available.

Message #17 received at 78474 <at> debbugs.gnu.org (full text, mbox):

From: Samuel Thibault <samuel.thibault <at> gnu.org>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: bzg <at> gnu.org, 78474 <at> debbugs.gnu.org, Sebastien.Hinderer <at> inria.fr
Subject: Re: bug#78474: 31.0.50; Wrong char insertion in rxvt
Date: Sun, 18 May 2025 10:30:01 +0200
Eli Zaretskii, le dim. 18 mai 2025 11:05:49 +0300, a ecrit:
> > Eli Zaretskii, le dim. 18 mai 2025 08:13:58 +0300, a ecrit:
> > > > Quoting Samuel: "Emacs, instead of sending a rightward cursor movement
> > > > (\e[C), sends \009\008 (a tabulation and a leftward cursor movement)"
> > > 
> > > If Sébastien or Samuel (or someone else) can help us understand how to
> > > modify the cost calculations and/or what optimizations of cursor
> > > motion to avoid when these technologies for the visually impaired are
> > > used, we could see how to fix this.
> > 
> > That is exactly what is written above.
> 
> Sorry, I don't understand: what is written above?

?

"Emacs, instead of sending a rightward cursor movement
(\e[C), sends \009\008 (a tabulation and a leftward cursor movement)"

that is the optimization that disturbs some terminals such as rxvt or
vte.

Samuel




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78474; Package emacs. (Sun, 18 May 2025 08:58:02 GMT) Full text and rfc822 format available.

Message #20 received at 78474 <at> debbugs.gnu.org (full text, mbox):

From: Bastien Guerry <bzg <at> gnu.org>
To: Samuel Thibault <samuel.thibault <at> gnu.org>
Cc: 78474 <at> debbugs.gnu.org, Eli Zaretskii <eliz <at> gnu.org>,
 Sebastien.Hinderer <at> inria.fr
Subject: Re: bug#78474: 31.0.50; Wrong char insertion in rxvt
Date: Sun, 18 May 2025 10:54:50 +0200
Samuel Thibault <samuel.thibault <at> gnu.org> writes:

> "Emacs, instead of sending a rightward cursor movement
> (\e[C), sends \009\008 (a tabulation and a leftward cursor movement)"

I'd describe it as the result of the "optimization" rather than the
optimization itself...

Line 90 of cm.c, there is this if clause that leads to a comment:

	if (tty->Wcm->cm_magicwrap)
	    ;			/* "limbo" */

I guess rxvt and vte implement a variant of magicwrap that is not
handled by addcol, which leaves the cursor in "limbo" state.

Maybe Samuel you can give details on how rxvt vte handle auto/magic
wrapping and, perhaps, how addcol should be fixed?

I don't see any interaction between addcol and evalcost but I might
be wrong.

-- 
 Bastien




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78474; Package emacs. (Sun, 18 May 2025 09:19:01 GMT) Full text and rfc822 format available.

Message #23 received at 78474 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Samuel Thibault <samuel.thibault <at> gnu.org>
Cc: bzg <at> gnu.org, 78474 <at> debbugs.gnu.org, Sebastien.Hinderer <at> inria.fr
Subject: Re: bug#78474: 31.0.50; Wrong char insertion in rxvt
Date: Sun, 18 May 2025 12:18:32 +0300
> Date: Sun, 18 May 2025 10:30:01 +0200
> From: Samuel Thibault <samuel.thibault <at> gnu.org>
> Cc: bzg <at> gnu.org, 78474 <at> debbugs.gnu.org, Sebastien.Hinderer <at> inria.fr
> 
> Eli Zaretskii, le dim. 18 mai 2025 11:05:49 +0300, a ecrit:
> > > Eli Zaretskii, le dim. 18 mai 2025 08:13:58 +0300, a ecrit:
> > > > > Quoting Samuel: "Emacs, instead of sending a rightward cursor movement
> > > > > (\e[C), sends \009\008 (a tabulation and a leftward cursor movement)"
> > > > 
> > > > If Sébastien or Samuel (or someone else) can help us understand how to
> > > > modify the cost calculations and/or what optimizations of cursor
> > > > motion to avoid when these technologies for the visually impaired are
> > > > used, we could see how to fix this.
> > > 
> > > That is exactly what is written above.
> > 
> > Sorry, I don't understand: what is written above?
> 
> ?
> 
> "Emacs, instead of sending a rightward cursor movement
> (\e[C), sends \009\008 (a tabulation and a leftward cursor movement)"
> 
> that is the optimization that disturbs some terminals such as rxvt or
> vte.

Yes, but what does that mean in general?  Should Emacs refrain from
sending TAB in all the cases?  Are there other characters that should
not be sent for similar reasons?

To modify the code, it is not enough to understand what should be done
in this specific case, we need to better understand the problem and
its various aspects, in order to be able to translate that into code
changes.

Also, I'm a bit confused: you say that sending \009\008 disturbs rxvt
or vte, but the original report seemed to be not about what the
terminals do, but about what that causes to the various software
solutions for the visually impaired.  Can you please tell more about
this to resolve the confusion?

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78474; Package emacs. (Sun, 18 May 2025 09:27:02 GMT) Full text and rfc822 format available.

Message #26 received at 78474 <at> debbugs.gnu.org (full text, mbox):

From: Samuel Thibault <samuel.thibault <at> gnu.org>
To: Bastien Guerry <bzg <at> gnu.org>
Cc: 78474 <at> debbugs.gnu.org, Eli Zaretskii <eliz <at> gnu.org>,
 Sebastien.Hinderer <at> inria.fr
Subject: Re: bug#78474: 31.0.50; Wrong char insertion in rxvt
Date: Sun, 18 May 2025 11:26:03 +0200
Hello,

Bastien Guerry, le dim. 18 mai 2025 10:54:50 +0200, a ecrit:
> Samuel Thibault <samuel.thibault <at> gnu.org> writes:
> 
> > "Emacs, instead of sending a rightward cursor movement
> > (\e[C), sends \009\008 (a tabulation and a leftward cursor movement)"
> 
> I'd describe it as the result of the "optimization" rather than the
> optimization itself...
> 
> Line 90 of cm.c, there is this if clause that leads to a comment:
> 
> 	if (tty->Wcm->cm_magicwrap)
> 	    ;			/* "limbo" */

But this is only about the end of a line? We are not talking about the
end of a line here.

That said, that pointed me to the optimization code in calccost, which
looks at tty->Wcm->cm_usetabs to determine whether to use tabs or not,
which is set from tabs_safe_p and TabWidth. Apparently, using 

stty -tabs

does avoid the issue, by making rxvt & vte switch to destructive tabs,
which emacs then knows to avoid just for moving the cursor.

Samuel




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78474; Package emacs. (Sun, 18 May 2025 09:34:01 GMT) Full text and rfc822 format available.

Message #29 received at 78474 <at> debbugs.gnu.org (full text, mbox):

From: Samuel Thibault <samuel.thibault <at> gnu.org>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: bzg <at> gnu.org, 78474 <at> debbugs.gnu.org, Sebastien.Hinderer <at> inria.fr
Subject: Re: bug#78474: 31.0.50; Wrong char insertion in rxvt
Date: Sun, 18 May 2025 11:33:00 +0200
Eli Zaretskii, le dim. 18 mai 2025 12:18:32 +0300, a ecrit:
> > Date: Sun, 18 May 2025 10:30:01 +0200
> > From: Samuel Thibault <samuel.thibault <at> gnu.org>
> > Cc: bzg <at> gnu.org, 78474 <at> debbugs.gnu.org, Sebastien.Hinderer <at> inria.fr
> > 
> > Eli Zaretskii, le dim. 18 mai 2025 11:05:49 +0300, a ecrit:
> > > > Eli Zaretskii, le dim. 18 mai 2025 08:13:58 +0300, a ecrit:
> > > > > > Quoting Samuel: "Emacs, instead of sending a rightward cursor movement
> > > > > > (\e[C), sends \009\008 (a tabulation and a leftward cursor movement)"
> > > > > 
> > > > > If Sébastien or Samuel (or someone else) can help us understand how to
> > > > > modify the cost calculations and/or what optimizations of cursor
> > > > > motion to avoid when these technologies for the visually impaired are
> > > > > used, we could see how to fix this.
> > > > 
> > > > That is exactly what is written above.
> > > 
> > > Sorry, I don't understand: what is written above?
> > 
> > ?
> > 
> > "Emacs, instead of sending a rightward cursor movement
> > (\e[C), sends \009\008 (a tabulation and a leftward cursor movement)"
> > 
> > that is the optimization that disturbs some terminals such as rxvt or
> > vte.
> 
> Yes, but what does that mean in general?  Should Emacs refrain from
> sending TAB in all the cases?

At least, having an option to avoid this optimization would be useful.

> Are there other characters that should not be sent for similar
> reasons?

I'm not aware of any other character movement sequence that would be
confused with text addition.

> Also, I'm a bit confused: you say that sending \009\008 disturbs rxvt
> or vte, but the original report seemed to be not about what the
> terminals do, but about what that causes to the various software
> solutions for the visually impaired.  Can you please tell more about
> this to resolve the confusion?

The eventual issue is that what when typing "coucou " in emacs, what
ends up sent by emacs to vte is "coucou\x09\x08", and what vte exposes
to accessibility technologies is "coucou\t", and it is then unable to
expose to them that the cursor position is in the middle of that "\t".

And it happens that rxvt gets a similar confusion, leading to that wide
cursor appearance
https://dept-info.labri.fr/~thibault/tmp/coucou.png

Samuel




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78474; Package emacs. (Sun, 18 May 2025 09:40:02 GMT) Full text and rfc822 format available.

Message #32 received at 78474 <at> debbugs.gnu.org (full text, mbox):

From: Andreas Schwab <schwab <at> linux-m68k.org>
To: Bastien Guerry <bzg <at> gnu.org>
Cc: 78474 <at> debbugs.gnu.org, Eli Zaretskii <eliz <at> gnu.org>,
 Samuel Thibault <samuel.thibault <at> gnu.org>, Sebastien.Hinderer <at> inria.fr
Subject: Re: bug#78474: 31.0.50; Wrong char insertion in rxvt
Date: Sun, 18 May 2025 11:39:39 +0200
On Mai 18 2025, Bastien Guerry wrote:

> Line 90 of cm.c, there is this if clause that leads to a comment:

That line is inside a #if 0 block.

-- 
Andreas Schwab, schwab <at> linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."




This bug report was last modified today.

Previous Next


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