Subject: bug#65018: closed (Re: bug#66167: 29.1; wrap-prefix text property with :align-to space keyword broken)

From: [email-masked] (GNU bug Tracking System)
Date: Sun, 24 Sep 2023 05:38:03 +0000

Your bug report

#66167: 29.1; :align-to on wrapped line regression

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
66167: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66167
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#66167: 29.1; wrap-prefix text property with :align-to space keyword broken
From: Eli Zaretskii <[email-masked]>
To: "Paul W. Rankin" <[email-masked]>
Cc: [email-masked]
Date: Sun, 24 Sep 2023 08:36:45 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

> Date: Sun, 24 Sep 2023 14:56:02 +1000
> From: "Paul W. Rankin" <[email-masked]>
> Cc: [email-masked]
> 
> On 2023-09-23 19:38, Eli Zaretskii wrote:
> > It _is_ applied.  Try giving wrap-prefix a value that is a string, and
> > you will see that it is applied.
> > 
> > The problem is not with wrap-prefix, the problem is with the
> > (space :align-to 10) form, and specifically with the value 10.
> > The value 10 is too small for wrapped lines (in most cases).
> 
> I see now what it means. Sorry, my mistake. And what I want can be 
> achieved with (space :width 10). Thanks.

Yes, '(space :width 10)' is exactly what you want, AFAIU.

So I'm now closing this bug.

Subject: 29.1; :align-to on wrapped line regression
From: Axel Forsman <[email-masked]>
To: [email-masked]
Date: Wed, 02 Aug 2023 08:01:49 +0000 (UTC)
List-Id: <debbugs-submit.debbugs.gnu.org>

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 is 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 by the space. In 29 the space has
zero-width.)

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:
  global-git-commit-mode: t
  windmove-mode: t
  corfu-mode: t
  shell-dirtrack-mode: t
  server-mode: t
  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 tramp-cmds conf-mode markdown-mode
noutline outline 5x5 facemenu two-column grep compile winner fontset vc
vc-dispatcher bug-reference face-remap 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 package browse-url url
url-proxy url-privacy url-expand url-methods url-history url-cookie
generate-lisp-file url-domsuf url-util url-handlers url-parse url-vars
magit-repos magit-apply magit-wip magit-log which-func magit-diff
smerge-mode diff-mode git-commit easy-mmode log-edit message sendmail
mailcap yank-media puny dired dnd dired-loaddefs rfc822 mml mml-sec epa
derived epg rfc6068 epg-config gnus-util mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr
mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log magit-core
magit-autorevert magit-margin magit-transient magit-process with-editor
magit-mode magit-git magit-base magit-section cursor-sensor crm dash
debug backtrace cus-start cus-load windmove goto-chg dabbrev mule-util
corfu completion pulse color cc-mode cc-fonts cc-guess cc-menus cc-cmds
cc-styles cc-align cc-engine cc-vars cc-defs xref project imenu
jka-compr find-func tabify executable image pp cl-print shortdoc
text-property-search tramp tramp-loaddefs trampver tramp-integration
files-x tramp-compat shell pcomplete comint ansi-osc ansi-color
parse-time iso8601 time-date auth-source password-cache json map
hotfuzz-module help-fns radix-tree term/tmux term/xterm xterm server
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 468565 236158)
 (symbols 48 28773 4)
 (strings 32 94980 23719)
 (string-bytes 1 3896638)
 (vectors 16 58239)
 (vector-slots 8 993657 111674)
 (floats 8 352 931)
 (intervals 56 17610 6129)
 (buffers 984 43))