Subject: bug#61239: 30.0.50; Display property value `((space :align-to))` doesn't handle line numbers

From: Narendra Joshi <[email-masked]>
Date: Thu, 02 Feb 2023 22:26:57 +0100

The following code demonstrates the behavior:

(display-line-numbers-mode +1)
(setq header-line-format
      (concat (propertize " " 'display '((space :align-to 0))) "Column"))

With line numbers displayed, the text above, i.e. "Column" doesn't align
wit the text in the buffer. This is problematic for modes like SES mode
(https://www.gnu.org/software/emacs/manual/html_node/ses/index.html).      

In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
 3.24.36, cairo version 1.17.6) of 2023-01-21 built on derhulk
Repository revision: ca8f5f71f412f29d52da0bdb8ac196d298b3b0d3
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12014000
System Description: Fedora Linux 37 (Workstation Edition)

Configured using:
 'configure --prefix /home/narendraj9/.local/ --with-native-compilation
 --with-imagemagick --with-json'

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

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

Major mode: Lisp Interaction

Minor modes in effect:
  display-fill-column-indicator-mode: t
  windmove-mode: t
  display-line-numbers-mode: t
  gradle-mode: t
  dired-recent-mode: t
  global-git-commit-mode: t
  recentf-mode: t
  pomodoro-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  aggressive-indent-mode: t
  paredit-mode: t
  outline-minor-mode: t
  flyspell-mode: t
  crux-reopen-as-root-mode: t
  shell-dirtrack-mode: t
  wrap-region-global-mode: t
  wrap-region-mode: t
  volatile-highlights-mode: t
  company-statistics-mode: t
  global-company-mode: t
  company-mode: t
  server-mode: t
  global-auto-revert-mode: t
  sub-paredit-mode: t
  vertico-mode: t
  minibuffer-depth-indicate-mode: t
  delete-selection-mode: t
  global-subword-mode: t
  subword-mode: t
  winner-mode: t
  save-place-mode: t
  which-key-mode: t
  savehist-mode: t
  electric-pair-mode: t
  display-battery-mode: t
  display-time-mode: t
  midnight-mode: t
  repeat-mode: t
  override-global-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tab-bar-history-mode: t
  file-name-shadow-mode: t
  context-menu-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  size-indication-mode: t
  column-number-mode: t
  line-number-mode: t
  auto-fill-function: yas--auto-fill
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  abbrev-mode: t
  hs-minor-mode: t

Features:
(shadow sort footnote gnus-config messages-are-flowing smtpmail
gnus-delay gnus-draft gnus-agent gnus-srvr gnus-score score-mode
nnvirtual gnus-cache nndraft nnmh gnus-async nntp gnus-msg bbdb-gnus
bbdb-mua bbdb-com bbdb bbdb-site timezone emacsbug hippie-exp
display-fill-column-indicator cursor-sensor ses unsafep emacs-news-mode
completion windmove finder skeleton autoinsert expand-region
subword-mode-expansions text-mode-expansions cc-mode-expansions
the-org-mode-expansions python-el-fgallina-expansions
er-basic-expansions expand-region-core expand-region-custom
symbol-overlay display-line-numbers consult-imenu mule-util mm-archive
lisp-mnt whitespace gradle-mode cl-print misearch multi-isearch
inferior-jshell shortdoc network-stream url-http url-gw url-cache
url-auth quoted-scratch mylife-relationships wid-browse goto-addr
org-indent org-element org-persist avl-tree oc-basic ol-eww ol-rmail
ol-mhe ol-irc ol-info ol-gnus nnselect gnus-art mm-uu mml2015 mm-view
mml-smime smime gnutls dig gnus-sum gnus-group gnus-undo gnus-start
gnus-dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo gnus-spec
gnus-int gnus-range gnus-win ol-docview doc-view image-mode exif
ol-bibtex bibtex ol-bbdb ol-w3m ol-doi org-link-doi mail-extr jka-compr
markdown-mode vc bug-reference macrostep-c cmacexp macrostep eglot array
jsonrpc ert ewoc debug backtrace flymake-proc flymake pulse color
dired-aux hl-line dired-x dired-recent dired-collapse dired-hacks-utils
discover makey face-remap 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 imenu magit-diff smerge-mode
diff git-commit log-edit message sendmail yank-media rfc822 mml mml-sec
epa derived epg rfc6068 epg-config mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev 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 crm vertico-repeat consult-register
consult-vertico consult recentf tree-widget erc-config erc-log
erc-services erc-track erc-match erc-join erc erc-backend erc-goodies
erc-networks erc-common erc-compat erc-loaddefs bookmark ledger-mode
ledger-check ledger-texi ledger-test ledger-sort ledger-report
ledger-reconcile ledger-occur ledger-fonts ledger-fontify ledger-state
ledger-complete ledger-schedule ledger-init ledger-xact ledger-post
ledger-exec ledger-navigate eshell esh-cmd esh-ext esh-opt esh-proc
esh-io esh-arg esh-module esh-groups esh-util ledger-context
ledger-commodities ledger-regex pomodoro org-timer org-config org-attach
org-id org-clock org-habit ob-ditaa ob-haskell ob-go ob-elixir ob-awk
ob-shell ob-C ob-clojure ob-gnuplot ob-ruby ob-R ob-python python
ob-lisp ob-sqlite ob-sql ob-plantuml picture org-agenda org-refile
org-web-tools esxml-query alert log4e notifications gntp ag vc-svn
find-dired dired dired-loaddefs org ob ob-tangle ob-ref ob-lob ob-table
ob-exp org-macro org-src ob-comint org-pcomplete org-list org-footnote
org-faces org-entities ob-emacs-lisp ob-core ob-eval org-cycle org-table
ol org-fold org-fold-core org-keys oc org-loaddefs find-func org-version
org-compat org-macs yasnippet-snippets yasnippet aggressive-indent
paredit hideshow noutline outline flyspell ispell crux tramp
tramp-loaddefs trampver tramp-integration cus-edit pp cus-start cus-load
files-x tramp-compat shell pcomplete parse-time iso8601 ls-lisp
wrap-region advice volatile-highlights company-oddmuse company-keywords
company-etags company-gtags company-dabbrev-code company-dabbrev
company-files company-clang company-capf company-cmake company-semantic
company-template company-bbdb company-statistics company
minibuffer-command-history init keycast memory-report nsm chart server
git-timemachine transient vc-git vc-dispatcher autorevert filenotify
diff-mode go-guru go-mode find-file typescript-mode cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
scribble-mode geiser-racket geiser-mit geiser-repl geiser-capf geiser
geiser-image geiser-doc geiser-menu geiser-autodoc geiser-edit etags
fileloop generator xref project-x project geiser-completion geiser-eval
geiser-connection tq geiser-syntax scheme geiser-log geiser-popup view
geiser-impl help-fns radix-tree geiser-custom geiser-base plisp-mode
picolisp-mode inferior-plisp inferior-picolisp pos-tip info-lookmore
info-look javadoc-lookup ido vertico orderless mb-depth delsel timeclock
sh-script smie treesit executable cap-words superword subword gud winner
saveplace which-key savehist apropos region-bindings-mode disp-table
wgrep grep compile comint ansi-osc ansi-color ring elec-pair
use-package-diminish eww xdg url-queue shr pixel-fill kinsoku url-file
svg dom puny mm-url gnus nnheader gnus-util text-property-search
time-date mail-utils range wid-edit mm-util mail-prsvr ffap thingatpt
ibuf-ext ibuffer ibuffer-loaddefs format-spec battery dbus xml time
mode-line-config jazz-theme cal-julian appearance pcase modus-themes
solar cal-dst cal-menu calendar cal-loaddefs midnight secrets
no-littering compat defs repeat edmacro kmacro use-package-bind-key f
f-shortdoc dash s comp comp-cstr warnings icons bind-key cl-extra
help-mode diminish use-package-ensure use-package-core magit-autoloads
git-commit-autoloads consult-autoloads alchemist-autoloads
elixir-mode-autoloads tree-sitter-autoloads tsc-autoloads
auctex-autoloads tex-site ht-autoloads ace-link-autoloads
aggressive-indent-autoloads async-autoloads auto-compile-autoloads
beacon-autoloads bicycle-autoloads boxquote-autoloads cargo-autoloads
markdown-mode-autoloads cdlatex-autoloads multiple-cursors-autoloads
paredit-autoloads color-identifiers-mode-autoloads
counsel-bbdb-autoloads crdt-autoloads crux-autoloads diminish-autoloads
dired-collapse-autoloads dired-narrow-autoloads dired-subtree-autoloads
dired-hacks-utils-autoloads ednc-autoloads eglot-java-autoloads
eglot-autoloads eldoc-box-autoloads elm-mode-autoloads embark-autoloads
emmet-mode-autoloads erlang-autoloads ess-autoloads evil-autoloads
expand-region-autoloads flycheck-yamllint-autoloads
git-timemachine-autoloads go-guru-autoloads go-mode-autoloads
google-translate-autoloads popup-autoloads graphviz-dot-mode-autoloads
haskell-mode-autoloads keycast-autoloads know-your-http-well-autoloads
ledger-mode-autoloads lua-mode-autoloads modus-themes-autoloads
moody-autoloads nix-mode-autoloads no-littering-autoloads
orderless-autoloads org-gcal-autoloads alert-autoloads aio-autoloads
elnode-autoloads web-autoloads creole-autoloads fakir-autoloads
noflet-autoloads db-autoloads ox-reveal-autoloads pcache-autoloads
persist-autoloads plisp-mode-autoloads proof-general-autoloads
proof-site proof-autoloads py-autopep8-autoloads python-mode-autoloads
racket-mode-autoloads realgud-autoloads realgud-recursive-autoloads
restclient-autoloads robe-autoloads rust-mode-autoloads rvm-autoloads
scala-mode-autoloads slime-autoloads macrostep-autoloads
symbol-overlay-autoloads tiny-autoloads tracking-autoloads
ace-window-autoloads avy-autoloads tuareg-autoloads rx caml-autoloads
typescript-mode-autoloads vertico-autoloads web-mode-autoloads
which-key-autoloads yaml-mode-autoloads rinari-autoloads jump-autoloads
geiser-mit-autoloads geiser-racket-autoloads geiser-autoloads
bbdb-autoloads csv-mode-autoloads yaml-autoloads ialign-autoloads
pos-tip-autoloads reformatter-autoloads ement-autoloads
transient-autoloads taxy-magit-section-autoloads magit-section-autoloads
taxy-autoloads plz-autoloads svg-lib-autoloads
quelpa-use-package-autoloads use-package-autoloads bind-key-autoloads
quelpa-autoloads easy-mmode company-autoloads pdf-tools-autoloads
request-autoloads finder-inf password-store-autoloads
with-editor-autoloads compat-autoloads f-autoloads
dash-functional-autoloads inf-ruby-autoloads js2-mode-autoloads
cider-autoloads clojure-mode-autoloads flycheck-autoloads s-autoloads
info dash-autoloads 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 cl-seq
eieio eieio-core cl-macs 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 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
move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process
native-compile emacs)

Memory information:
((conses 16 1303151 246368)
 (symbols 48 81870 9)
 (strings 32 385694 22266)
 (string-bytes 1 12033194)
 (vectors 16 129508)
 (vector-slots 8 3417594 248291)
 (floats 8 3398 1186)
 (intervals 56 15860 8336)
 (buffers 976 48))

Best regards,
-- 
Narendra Joshi