Subject: 29.0.50; Visual line mode movement bug
From: Jacky Li <[email-masked]>
To: [email-masked]
Date: Sat, 01 Oct 2022 11:14:35 +0800
List-Id: <debbugs-submit.debbugs.gnu.org>

If visual-line-mode is turned on, using C-a, C-e or C-k will move to the
line above, resulting in a unwanted behaviour. This behaviour was not
observed in the build of Sept 24 HEAD, but in the build of Sept 30
HEAD. I suspect that the bug commit is within this period.

Also, this bug only happens when visual-line-mode is enabled. The
related interactive functions are (beginning-of-visual-line),
(end-of-visual-line), (kill-visual-line).

In GNU Emacs 29.0.50 (build 11, x86_64-pc-linux-gnu, GTK+ Version
 3.24.34, cairo version 1.17.6) of 2022-10-01 built on artix
Repository revision: 2ceb09315c0d590d6f50ff8649066f260e35e7fb
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101004
System Description: Artix Linux

Configured using:
 'configure --with-native-compilation --with-imagemagick --with-x
 --with-x-toolkit=gtk3 --with-xwidgets --with-xinput2 --with-mailutils'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ
IMAGEMAGICK JPEG JSON LCMS2 LIBOTF LIBSYSTEMD LIBXML2 M17N_FLT MODULES
NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3
THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11 XDBE XIM XINPUT2 XPM XWIDGETS
GTK3 ZLIB

Important settings:
  value of $LC_ALL: en_US.UTF-8
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=exwm-xim
  locale-coding-system: utf-8-unix

Major mode: Shell

Minor modes in effect:
  electric-pair-mode: t
  display-time-mode: t
  exwm-firefox-mode: t
  pixel-scroll-precision-mode: t
  sly-symbol-completion-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  emms-playing-time-display-mode: t
  emms-playing-time-mode: t
  mood-line-mode: t
  global-tree-sitter-mode: t
  corfu-history-mode: t
  global-corfu-mode: t
  corfu-mode: t
  global-auto-revert-mode: t
  which-key-mode: t
  marginalia-mode: t
  savehist-mode: t
  vertico-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  shell-switcher-mode: t
  shell-dirtrack-mode: t
  org-roam-db-autosync-mode: t
  pdf-occur-global-minor-mode: t
  comint-fontify-input-mode: t
  straight-use-package-mode: t
  straight-package-neutering-mode: t
  windmove-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  column-number-mode: t
  line-number-mode: t
  visual-line-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/home/jacky/.config/emacs/straight/build/jsonrpc/jsonrpc hides /usr/local/share/emacs/29.0.50/lisp/jsonrpc
/home/jacky/.config/emacs/straight/build/transient/transient hides /usr/local/share/emacs/29.0.50/lisp/transient
/home/jacky/.config/emacs/straight/build/project/project hides /usr/local/share/emacs/29.0.50/lisp/progmodes/project
/home/jacky/.config/emacs/straight/build/xref/xref hides /usr/local/share/emacs/29.0.50/lisp/progmodes/xref
/home/jacky/.config/emacs/straight/build/flymake/flymake hides /usr/local/share/emacs/29.0.50/lisp/progmodes/flymake
/home/jacky/.config/emacs/straight/build/eldoc/eldoc hides /usr/local/share/emacs/29.0.50/lisp/emacs-lisp/eldoc
/home/jacky/.config/emacs/straight/build/let-alist/let-alist hides /usr/local/share/emacs/29.0.50/lisp/emacs-lisp/let-alist

Features:
(shadow mail-extr emacsbug misearch multi-isearch sh-script smie
executable consult-flymake mule-util python whitespace vc-hg vc-git
vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs log-view vc vc-dispatcher
cursor-sensor display-line-numbers init init-shapeless-blog
shapeless-blog shapeless-blog-autoloads init-ui elec-pair time init-font
init-exwm exwm-firefox exwm-firefox-core exwm-firefox-core-autoloads
exwm-edit exwm-edit-autoloads exwm-randr xcb-randr exwm-xim xcb-xim
xcb-xlib exwm exwm-input xcb-keysyms xcb-xkb exwm-manage exwm-floating
xcb-cursor xcb-render exwm-layout exwm-workspace exwm-core xcb-ewmh
xcb-icccm xcb xcb-xproto xcb-types xcb-debug exwm-autoloads
xelb-autoloads init-pixel-scroll-precision pixel-scroll cua-base
init-geiser geiser-guile geiser-repl geiser-image geiser-capf geiser-doc
geiser-menu geiser-edit geiser-completion geiser-autodoc geiser-eval
geiser-connection geiser-syntax scheme geiser-log geiser-popup
geiser-guile-autoloads geiser-impl geiser-custom geiser-base geiser
geiser-autoloads init-sly sly sly-completion sly-buttons sly-messages
sly-common apropos hyperspec sly-autoloads init-pass pass password-store
pass-autoloads password-store-otp-autoloads password-store-autoloads
auth-source-pass init-mentor mentor url-scgi mentor-rpc mentor-files
mentor-data xml-rpc async mentor-autoloads async-autoloads
xml-rpc-autoloads init-notmuch 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 icalendar
diary-lib diary-loaddefs notmuch-tag notmuch-lib notmuch-version
notmuch-compat mm-view mml-smime smime dig init-magit forge-list
forge-commands forge-semi forge-bitbucket buck forge-gogs gogs
forge-gitea gtea forge-gitlab glab forge-github ghub-graphql treepy
gsexp ghub url-http url-gw nsm url-auth gnutls forge-notify
forge-revnote forge-pullreq forge-issue forge-topic yaml bug-reference
forge-post forge-repo forge forge-core forge-db closql forge-autoloads
yaml-autoloads ghub-autoloads treepy-autoloads closql-autoloads
magit-bookmark magit-submodule magit-obsolete 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 diff-mode git-commit log-edit
message yank-media rfc822 mml mml-sec gnus-util mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils pcvs-util add-log
magit-core magit-autorevert magit-margin magit-transient magit-process
with-editor magit-mode magit-git magit-base crm magit-autoloads
git-commit-autoloads with-editor-autoloads init-w3m w3m doc-view
timezone w3m-hist w3m-fb bookmark-w3m w3m-ems w3m-favicon w3m-image
tab-line w3m-proc w3m-util w3m-autoloads init-emms emms-librefm-stream
emms-librefm-scrobbler emms-playlist-limit emms-i18n emms-history
emms-score emms-stream-info emms-metaplaylist-mode emms-bookmarks
emms-cue emms-mode-line-icon emms-browser sort emms-volume
emms-volume-sndioctl emms-volume-mixerctl emms-volume-pulse
emms-volume-amixer emms-playlist-sort emms-last-played emms-player-xine
emms-player-mpd emms-lyrics emms-url emms-streams emms-show-all
emms-tag-editor emms-tag-tracktag emms-mark emms-mode-line emms-cache
emms-info-native bindat emms-info-exiftool emms-info-tinytag
emms-info-metaflac emms-info-opusinfo emms-info-ogginfo
emms-info-mp3info emms-playlist-mode emms-player-vlc emms-player-mpv
emms-playing-time emms-info emms-later-do emms-player-mplayer
emms-player-simple emms-source-playlist emms-source-file locate
emms-setup emms emms-compat emms-autoloads init-pdf pdf-view-restore
pdf-view-restore-autoloads init-eglot shapeless-c-arrow clang-format
eglot array jsonrpc ert ewoc eglot-autoloads flymake-autoloads
eldoc-autoloads jsonrpc-autoloads init-format-all format-all language-id
inheritenv format-all-autoloads language-id-autoloads
inheritenv-autoloads init-indent-guide indent-guide
indent-guide-autoloads init-caddyfile caddyfile-mode loop
caddyfile-mode-autoloads loop-autoloads init-typescript typescript-mode
typescript-mode-autoloads init-lilypond lilypond-mode init-json
json-mode json-snatcher js cc-mode cc-fonts cc-guess cc-menus cc-cmds
cc-styles cc-align cc-engine json-mode-autoloads json-snatcher-autoloads
init-wat wat-mode wat-mode-macro wat-mode-font-lock wat-mode-autoloads
init-flutter flutter flutter-l10n flutter-project flutter-autoloads
init-dart dart-mode dart-mode-autoloads init-glsl glsl-mode
glsl-mode-autoloads init-yaml yaml-mode yaml-mode-autoloads init-web
web-mode web-mode-autoloads init-nginx nginx-mode nginx-mode-autoloads
init-rust cargo cargo-process cargo-autoloads toml-mode conf-mode align
toml-mode-autoloads rustic-spellcheck rustic-expand rustic-lsp
rustic-playpen rustic-rustfix rustic-racer rustic-babel rustic-rustfmt
rustic-comint rustic-clippy rustic-doc xdg rustic-popup rustic-cargo
rustic-compile spinner xterm-color rustic-interaction rustic rust-utils
rust-mode rustic-autoloads xterm-color-autoloads spinner-autoloads
rust-mode-autoloads init-go go-mode find-file etags fileloop xref
go-mode-autoloads init-swift swift-mode swift-mode-imenu swift-mode-repl
swift-mode-font-lock swift-mode-standard-types swift-mode-fill
swift-mode-beginning-of-defun swift-mode-indent swift-mode-lexer
swift-mode-autoloads init-markdown markdown-mode markdown-mode-autoloads
init-restclient init-djvu djvu djvu-autoloads init-hackernews hackernews
hackernews-autoloads init-nov nov-xwidget xwidget nov-xwidget-autoloads
nov nov-autoloads init-calibredb calibredb calibredb-dired
calibredb-consult calibredb-opds esxml esxml-query calibredb-org
calibredb-library calibredb-ivy calibredb-utils calibredb-annotation
calibredb-transient calibredb-helm calibredb-show calibredb-search
calibredb-faces calibredb-core sendmail rfc2047 rfc2045 ietf-drums
mm-util mail-prsvr transient edmacro hl-line sql view
calibredb-autoloads esxml-autoloads kv-autoloads transient-autoloads
init-inherit-org inherit-org inherit-org-autoloads init-shrface shrface
org-indent shr pixel-fill kinsoku url-file puny svg xml dom
shrface-autoloads language-detection-autoloads init-mood-line mood-line
mood-line-autoloads init-aggressive-indent aggressive-indent
aggressive-indent-autoloads init-multiple-cursors multiple-cursors
mc-separate-operations rectangular-region-mode mc-mark-pop mc-edit-lines
mc-hide-unmatched-lines-mode mc-mark-more mc-cycle-cursors
multiple-cursors-core rect multiple-cursors-autoloads init-rainbow
rainbow-mode rainbow-mode-autoloads init-tree-sitter tree-sitter-langs
tree-sitter-langs-build tar-mode arc-mode archive-mode tree-sitter-hl
tree-sitter-langs-autoloads tree-sitter tree-sitter-load tree-sitter-cli
tsc tsc-dyn tsc-dyn-get dired-aux tsc-obsolete tree-sitter-autoloads
tsc-autoloads init-corfu corfu-history corfu corfu-autoloads init-cape
cape cape-autoloads init-framemove framemove init-request request
mailheader autorevert filenotify mail-utils request-autoloads
init-ripgrep ripgrep grep ripgrep-autoloads init-helpful helpful
cc-langs cc-vars cc-defs trace edebug debug backtrace info-look f
f-shortdoc shortdoc help-fns radix-tree elisp-refs s helpful-autoloads
elisp-refs-autoloads f-autoloads s-autoloads init-which-key which-key
which-key-autoloads init-consult init-embark embark-consult
consult-vertico consult compat-28 recentf tree-widget kmacro
embark-consult-autoloads consult-autoloads embark ffap embark-autoloads
init-marginalia marginalia marginalia-autoloads init-savehist savehist
init-orderless orderless orderless-autoloads init-vertico
vertico-directory vertico vertico-autoloads init-tempel tempel
tempel-autoloads init-yasnippet yasnippet yasnippet-autoloads
init-blackout blackout blackout-autoloads init-dictionary dictionary
dictionary-connection init-ibuffer ibuf-macs ibuffer-project
ibuffer-project-autoloads init-ediff ediff ediff-merg ediff-mult
ediff-wind ediff-diff ediff-help ediff-init ediff-util init-flymake
flymake-proc flymake thingatpt init-epa org-crypt server epa-file epa
derived epg rfc6068 epg-config pinentry pinentry-autoloads init-shell
vterm-toggle tramp-sh vterm-toggle-autoloads multi-vterm project
multi-vterm-autoloads project-autoloads xref-autoloads vterm face-remap
color term disp-table ehelp vterm-module term/xterm xterm
vterm-autoloads shell-switcher rswitcher shell-switcher-autoloads
init-input-method shapeless-chinese cangjie5 quail init-dired dired-x
init-theme shapeless-theme init-tramp tramp tramp-loaddefs trampver
tramp-integration files-x tramp-compat parse-time ls-lisp init-org
ob-shell shell ob-dot ob-restclient restclient ob-restclient-autoloads
restclient-autoloads org-present org-present-autoloads htmlize
htmlize-autoloads comp comp-cstr warnings org-roam-migrate org-roam-log
org-roam-mode org-roam-capture org-roam-id org-roam-node org-roam-db
org-roam-utils org-roam-compat org-roam org-capture org-attach org-id
emacsql-sqlite emacsql emacsql-compiler magit-section compat-27
compat-26 compat compat-macs dash org-roam-autoloads
magit-section-autoloads compat-autoloads emacsql-sqlite-autoloads
emacsql-autoloads dash-autoloads info ox-shapelesshtml ox-slimhtml
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 ox-slimhtml-autoloads
org-pdftools pdf-occur ibuf-ext ibuffer ibuffer-loaddefs pdf-isearch
let-alist pdf-annot 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 facemenu
pdf-misc imenu pdf-tools package browse-url 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 eieio
eieio-core url-vars compile cus-edit cus-load wid-edit pdf-view
password-cache bookmark text-property-search pp jka-compr pdf-cache
pdf-info tq pdf-util pdf-macs image-mode dired dired-loaddefs exif
org-noter easy-mmode org-element avl-tree generator org-refile
org-pdftools-autoloads org-noter-autoloads finder-inf
pdf-tools-autoloads let-alist-autoloads tablist-autoloads valign pcase
valign-autoloads org ob ob-tangle ob-ref ob-lob ob-table ob-exp
org-macro org-footnote org-src ob-comint org-pcomplete pcomplete comint
osc ansi-color ring org-list org-faces org-entities noutline outline
icons org-version ob-emacs-lisp ob-core ob-eval org-table oc-basic json
map bibtex iso8601 time-date ol rx org-keys oc org-compat byte-opt
advice org-macs org-loaddefs format-spec find-func cal-menu calendar
cal-loaddefs init-straight straight-x straight-autoloads cl-seq cl-extra
help-mode straight subr-x cl-macs gv cl-loaddefs cl-lib bytecomp
byte-compile cconv init-keybinding windmove init-helpers init-compat rmc
iso-transl tooltip eldoc paren electric uniquify ediff-hook vc-hooks
lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd
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 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 xwidget-internal dbusbind
inotify lcms2 dynamic-setting system-font-setting font-render-setting
cairo move-toolbar gtk x-toolkit xinput2 x multi-tty
make-network-process native-compile emacs)

Memory information:
((conses 16 1120380 209601)
 (symbols 48 74083 33)
 (strings 32 311115 31125)
 (string-bytes 1 10548084)
 (vectors 16 188440)
 (vector-slots 8 3807652 266108)
 (floats 8 825 844)
 (intervals 56 4418 2728)
 (buffers 1000 52))