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

Previous Next

Package: emacs;

Reported by: Narendra Joshi <narendraj9 <at> gmail.com>

Date: Thu, 2 Feb 2023 21:28:01 UTC

Severity: normal

Tags: notabug, wontfix

Found in version 30.0.50

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 61239 in the body.
You can then email your comments to 61239 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#61239; Package emacs. (Thu, 02 Feb 2023 21:28:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Narendra Joshi <narendraj9 <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Thu, 02 Feb 2023 21:28:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Narendra Joshi <narendraj9 <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 30.0.50; Display property value `((space :align-to))` doesn't
 handle line numbers
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




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#61239; Package emacs. (Fri, 03 Feb 2023 08:55:02 GMT) Full text and rfc822 format available.

Message #8 received at 61239 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Narendra Joshi <narendraj9 <at> gmail.com>
Cc: 61239 <at> debbugs.gnu.org
Subject: Re: bug#61239: 30.0.50;
 Display property value `((space :align-to))` doesn't handle line
 numbers
Date: Fri, 03 Feb 2023 10:54:35 +0200
tags 61239 notabug wontfix
thanks

> From: Narendra Joshi <narendraj9 <at> gmail.com>
> 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).      

The :align-to values in header-line and mode-line do not automatically
account for line numbers when display-line-numbers-mode is turned on.
This is because the display engine cannot possibly know whether the
application does or doesn't want this; we certainly don't want that
for mode-line, for example.  For header lines, there's no guarantee
that the text there must align with the buffer text: that is up to the
application to decide.

So if a Lisp program wants the header-line indentation to be updated
according to the screen estate taken by line numbers, it should do the
following:

  . turn on the minor mode header-line-indent-mode
  . include header-line-indent-width in the :align-to expression

In your case, the following change in the :align-to should do what you
want:

  (setq header-line-format
        (concat (propertize " "
                            'display
                            '(space :align-to
                                    (+ header-line-indent-width 0)))
                "Column"))

You can see further examples of using this in tabulated-list-mode.el.

I see that the ELisp manual doesn't mention this minor mode, and
moreover, has some text which might mislead you into thinking that the
header-line display will automatically be updated to account for the
line numbers; I will fix the manual soon.




Added tag(s) wontfix and notabug. Request was from Eli Zaretskii <eliz <at> gnu.org> to control <at> debbugs.gnu.org. (Fri, 03 Feb 2023 08:55:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#61239; Package emacs. (Fri, 03 Feb 2023 10:10:02 GMT) Full text and rfc822 format available.

Message #13 received at 61239 <at> debbugs.gnu.org (full text, mbox):

From: Narendra Joshi <narendraj9 <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 61239 <at> debbugs.gnu.org
Subject: Re: bug#61239: 30.0.50; Display property value `((space :align-to))`
 doesn't handle line numbers
Date: Fri, 3 Feb 2023 11:08:56 +0100
[Message part 1 (text/plain, inline)]
Thank a lot for the explanation :)

Best,
Narendra

On Fri, Feb 3, 2023, 09:54 Eli Zaretskii <eliz <at> gnu.org> wrote:

> tags 61239 notabug wontfix
> thanks
>
> > From: Narendra Joshi <narendraj9 <at> gmail.com>
> > 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).
>
>
> The :align-to values in header-line and mode-line do not automatically
> account for line numbers when display-line-numbers-mode is turned on.
> This is because the display engine cannot possibly know whether the
> application does or doesn't want this; we certainly don't want that
> for mode-line, for example.  For header lines, there's no guarantee
> that the text there must align with the buffer text: that is up to the
> application to decide.
>
> So if a Lisp program wants the header-line indentation to be updated
> according to the screen estate taken by line numbers, it should do the
> following:
>
>   . turn on the minor mode header-line-indent-mode
>   . include header-line-indent-width in the :align-to expression
>
> In your case, the following change in the :align-to should do what you
> want:
>
>   (setq header-line-format
>         (concat (propertize " "
>                             'display
>                             '(space :align-to
>                                     (+ header-line-indent-width 0)))
>                 "Column"))
>
> You can see further examples of using this in tabulated-list-mode.el.
>
> I see that the ELisp manual doesn't mention this minor mode, and
> moreover, has some text which might mislead you into thinking that the
> header-line display will automatically be updated to account for the
> line numbers; I will fix the manual soon.
>
[Message part 2 (text/html, inline)]

Reply sent to Eli Zaretskii <eliz <at> gnu.org>:
You have taken responsibility. (Fri, 03 Feb 2023 14:49:02 GMT) Full text and rfc822 format available.

Notification sent to Narendra Joshi <narendraj9 <at> gmail.com>:
bug acknowledged by developer. (Fri, 03 Feb 2023 14:49:02 GMT) Full text and rfc822 format available.

Message #18 received at 61239-done <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: narendraj9 <at> gmail.com
Cc: 61239-done <at> debbugs.gnu.org
Subject: Re: bug#61239: 30.0.50;
 Display property value `((space :align-to))` doesn't handle line
 numbers
Date: Fri, 03 Feb 2023 16:48:00 +0200
> Cc: 61239 <at> debbugs.gnu.org
> Date: Fri, 03 Feb 2023 10:54:35 +0200
> From: Eli Zaretskii <eliz <at> gnu.org>
> 
> I see that the ELisp manual doesn't mention this minor mode, and
> moreover, has some text which might mislead you into thinking that the
> header-line display will automatically be updated to account for the
> line numbers; I will fix the manual soon.

Now done.

And with that I'm closing this bug.  Thanks for bringing this to our
attention.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sat, 04 Mar 2023 12:24:09 GMT) Full text and rfc822 format available.

This bug report was last modified 1 year and 25 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.