Subject: bug#65021: 29.1; align-to on wrapped line regression

From: Axel Forsman <[email-masked]>
Date: Wed, 2 Aug 2023 15:40:46 +0200

Ooops, sorry for the spam.
Please close any duplicate bug reports.
I waited hours for acknowledgement before resending,
and had reason to believe the GNU bug tracking software
was rejecting my emails.

On Wed, Aug 2, 2023 at 3:34 PM Axel Forsman <[email-masked]> wrote:
>
>
> I noticed that the interpretation of the hpos given to the :align-to
> space specification property changed in Emacs 29.1 compared to 28.2,
> without it being documented anywhere. In version 28 it counts relative
> to the visual start of the line, whereas in version 29 it starts at the
> logical start of the line.
>
> That is, the following MWE exhibits different visual behavior in Emacs
> 28 contra 29:
>
>     (insert
>      (concat
>       "\n"
>       (make-string (round (* 1.25 (window-text-width))) ?x)
>       (propertize " " 'display `(space :align-to ,(round (window-text-width) 2)))
>       "foo\n\n"))
>
> (In 28 the text "foo" is centered correctly by the space. In 29 the
> space has zero-width and no effect.)
>
> The previous behavior makes more sense in the context of section 41.16.3
> Pixel Specification for Spaces in the Emacs manual, and it would be
> quite the breaking change so I am hoping it was unintentional.
>
>
> Kind regards
> Axel Forsman
>
>
> In GNU Emacs 29.1 (build 1, x86_64-pc-linux-gnu)
> Repository revision: emacs-29.1
> Repository branch: master
> System Description: NixOS 23.05 (Stoat)
>
> Configured using:
>  'configure
>  --prefix=/nix/store/whazydpl0yj8i03aapsd2cyry70mng55-emacs-unstable-29.1-nox
>  --disable-build-details --with-modules --with-gif=no --with-jpeg=no
>  --with-png=no --with-tiff=no --with-x=no --with-xpm=no
>  --with-native-compilation --with-tree-sitter'
>
> Configured features:
> DBUS GMP GNUTLS GPM JSON LIBSELINUX LIBSYSTEMD LIBXML2 MODULES
> NATIVE_COMP NOTIFY INOTIFY PDUMPER SECCOMP SOUND SQLITE3 THREADS
> TREE_SITTER ZLIB
>
> Important settings:
>   value of $LC_MESSAGES: en_US.UTF-8
>   value of $LANG: sv_SE.UTF-8
>   locale-coding-system: utf-8-unix
>
> Major mode: Lisp Interaction
>
> Minor modes in effect:
>   undo-tree-mode: t
>   yas-global-mode: t
>   yas-minor-mode: t
>   hotfuzz-vertico-mode: t
>   vertico-mode: t
>   xclip-mode: t
>   evil-mode: t
>   evil-local-mode: t
>   electric-pair-mode: t
>   delete-selection-mode: t
>   global-auto-revert-mode: t
>   tooltip-mode: t
>   global-eldoc-mode: t
>   eldoc-mode: t
>   show-paren-mode: t
>   electric-indent-mode: t
>   file-name-shadow-mode: t
>   global-font-lock-mode: t
>   font-lock-mode: t
>   blink-cursor-mode: t
>   line-number-mode: t
>   transient-mark-mode: t
>   auto-composition-mode: t
>   auto-encryption-mode: t
>   auto-compression-mode: t
>
> Load-path shadows:
> /run/current-system/sw/share/emacs/site-lisp/site-start hides /nix/store/whazydpl0yj8i03aapsd2cyry70mng55-emacs-unstable-29.1-nox/share/emacs/site-lisp/site-start
>
> Features:
> (shadow sort mail-extr emacsbug mule-util hotfuzz-module notmuch
> notmuch-tree notmuch-jump notmuch-hello image wid-edit notmuch-show
> notmuch-print notmuch-crypto notmuch-mua notmuch-message notmuch-draft
> notmuch-maildir-fcc notmuch-address notmuch-company notmuch-parser
> notmuch-wash diff-mode easy-mmode coolj goto-addr icalendar diary-lib
> diary-loaddefs cal-menu calendar cal-loaddefs notmuch-tag crm
> notmuch-lib notmuch-version notmuch-compat hl-line message sendmail
> yank-media dired dnd dired-loaddefs rfc822 mml mailabbrev mail-utils
> gmm-utils mailheader mm-view mml-smime mml-sec epa derived epg rfc6068
> epg-config gnus-util text-property-search time-date smime password-cache
> gnutls puny dig mm-decode mm-bodies mm-encode mailcap mail-parse rfc2231
> rfc2047 rfc2045 mm-util ietf-drums mail-prsvr term/tmux term/xterm xterm
> lua-mode-autoloads nix-mode-autoloads julia-mode-autoloads
> cmake-mode-autoloads yaml-mode-autoloads haskell-mode-autoloads
> typescript-mode-autoloads markdown-mode-autoloads rust-mode-autoloads
> mytheme-theme ws-butler-autoloads rmsbolt-autoloads corfu-autoloads
> yasnippet undo-tree diff queue yasnippet-autoloads transient format-spec
> eieio eieio-core magit-autoloads magit-section-autoloads
> git-commit-autoloads with-editor-autoloads dash-autoloads
> xterm-color-autoloads devdocs-autoloads hotfuzz vertico compat
> hotfuzz-autoloads vertico-autoloads compat-autoloads xclip
> xclip-autoloads evil evil-keybindings evil-integration evil-maps
> evil-commands reveal evil-jumps evil-command-window evil-search evil-ex
> evil-types evil-macros evil-repeat evil-states evil-core byte-opt comp
> regexp-opt comp-cstr warnings icons subr-x rx cl-seq cl-macs gv cl-extra
> help-mode tool-bar advice evil-common thingatpt rect evil-vars ring
> edmacro kmacro undo-tree-autoloads queue-autoloads evil-autoloads
> goto-chg-autoloads pcase elec-pair delsel autorevert filenotify
> cl-loaddefs cl-lib ekipage bytecomp byte-compile rmc iso-transl tooltip
> cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
> elisp-mode tabulated-list replace newcomment text-mode lisp-mode
> prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu
> timer select 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 multi-tty make-network-process native-compile
> emacs)
>
> Memory information:
> ((conses 16 623896 226463)
>  (symbols 48 15703 10)
>  (strings 32 85936 57749)
>  (string-bytes 1 4096111)
>  (vectors 16 33101)
>  (vector-slots 8 543541 137525)
>  (floats 8 64 333)
>  (intervals 56 62415 18186)
>  (buffers 984 13))
>
>
>