Skip to content

[Bug]: Horizontal scrolling is incorrect for text using (space :align-to N) display specifications #446

Description

@chxp

Bug summary

Problem

Neomacs does not correctly update the horizontal position of columns when horizontally scrolling a buffer containing text with (space :align-to N) display specifications.

When moving to the end of the line, which is out of frame, Neomacs leaves some columns out of frame but keeps some columns in place and fixed.

Besides, when moving to the end of the line, which is out of frame, it will add an extra "$" at the left beginning. This is correct in nw mode, but not in GUI mode.

Reproduce

add the following into a test.el file and load by neomacs -Q -l test.el:

(with-current-buffer (get-buffer-create "*align-test*")
  (let ((inhibit-read-only t))
    (erase-buffer)

    (dotimes (i 50)
      (insert (format "ROW-%03d" i))
      (insert (propertize " " 'display '(space :align-to 11)))
      (insert (format "AAAA-%03d" i))
      (insert (propertize " " 'display '(space :align-to 21)))
      (insert (format "BBBB-%03d" i))
      (insert (propertize " " 'display '(space :align-to 31)))
      (insert (format "CCCC-%03d" i))
      (insert (propertize " " 'display '(space :align-to 41)))
      (insert (format "DDDD-%03d" i))
      (insert (propertize " " 'display '(space :align-to 69)))
      (insert (format "EEEE-%03d" i))
      (insert (propertize " " 'display '(space :align-to 87)))
      (insert (format "FFFF-%03d" i))
      (insert "\n"))

    (setq-local buffer-read-only t))

  (goto-char (point-min))
  (pop-to-buffer (current-buffer)))

Then move to the buffer, M-x toggle truncate lines and adjust frame size, make line extend out of the frame.

Then Ctrl-e move to the end of the line, which is out of frame, you could see the first 3 columns move to the left, but the other right columns are fixed.

Extra information

Running the following will make the move work correctly:

(let ((inhibit-read-only t))
  (remove-text-properties
   (point-min) (point-max)
   '(display)))

Neomacs --version output

Neomacs 0.0.19
Git commit: 4b405bbedf147bad34f7cdd863b68340876062f6
Source date: 2026-09-20T11:10:42.000000000-04:00
Build: release for x86_64-unknown-linux-gnu with rustc 1.96.1
Standalone Rust binary for Neomacs (no C dependency)

Platform

Linux (X11)

Install source

Built from source (cargo xtask fresh-build --release)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingstatus: needs-triageNot yet reviewed by a maintainer

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions