Subject: 31.0.50; wrap-prefix properties from visual-wrap-prefix-mode proliferate

From: Kévin Le Gouguec <[email-masked]>
Date: Sun, 02 Feb 2025 18:50:40 +0100

Heya!

To reproduce from emacs -Q:

    C-x b repro
    M-x visual-wrap-prefix-mode
    - first line of [words…]
    RET
    RET
    second line of [words…]
    C-o

Expectation: continuation lines for the "second line of [words…]" should
not have any indentation.
Observation: text on that second line has these properties:

    There are text properties here:
      fontified            t
      wrap-prefix          (space :align-to (2 . width))

(NB: "C-o" in the recipe ensures there is a character at point,
otherwise "C-u C-x =" shows nothing on account of being at EOB)

Denoting "hard spaces" (buffer text) with "·" and "visual spaces"
(visual-wrap-prefix-mode decoration) with " ", text thus wraps like
this:

    -·first·line·of·
      words·words

    second·line·of
      words·words

Not sure what the right fix is; having just learned about text property
"stickiness", I can at least work around the issue with…

    (push '(wrap-prefix . t) text-property-default-nonsticky)

… but I have not dogfooded this much yet.

Thanks for your time!

In GNU Emacs 31.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
 3.24.43, cairo version 1.18.2) of 2025-01-18 built on amdahl30
Repository revision: 840057bb1bfc05a52519793c620d729688ea1d8f
Repository branch: master
Windowing system distributor 'SUSE LINUX', version 11.0.12401004
System Description: openSUSE Tumbleweed

Configured using:
 'configure --prefix=/home/peniblec/apps/.emacs.2025-01-18 --with-cairo
 --with-native-compilation=no --with-sqlite3 --with-xinput2'

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

Important settings:
  value of $LC_TIME: en_GB.UTF-8
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix