Commit Graph
6 Commits
Author SHA1 Message Date
Yanuo Ma 0c9012f295 revert(scrollbind): revert #41519 due to regressions
Problem:
Resetting w_scbind_pos to the displayed position discards pending
scroll distance. This breaks scrollbind with asymmetric folds and
leaves persistent offsets after tall virtual-line blocks. Wrapped
lines with smoothscroll also show increased follower lag.

Solution:
Revert the original change and its test. This restores the previous
behavior, including the original tall-virt_lines oscillation, while
a replacement is reviewed separately.

This reverts commit b781e95a24.

AI-assisted
2026-09-10 08:22:05 +01:00
Yanuo Ma b781e95a24 fix(scrollbind): window jumps back and forth with tall virt_lines block
Problem:
Scrolling a 'scrollbind' window whose peer has a virt_lines block
taller than the window makes the peer jump back and forth.

Solution:
After scrollup()/scrolldown(), sync w_scbind_pos to the actual
get_vtopline() when the target was not clamped to buffer bounds.

Ref: esmuellert/codediff.nvim#519
AI-assisted
2026-09-08 09:55:15 +01:00
zeertzjq d393abad77 test: fix wrong order of args to eq(), neq() #41499 2026-08-26 07:18:22 -04:00
Justin M. Keyes 6d8c8b18d5 test(harness): migrate away from magic globals
Problem:
The magic globals `it`, `describe`, etc., are more trouble than they are
worth.

- Hooking into `after_each` requires `getfenv()` hacks.
- They confuse luals/emmylua, because the top-level `.luarc.json` isn't
  merged with `test/.luarc.json` (apparently a luals limitation?)
- They totally defeat discoverability because the user just has to
  "know" about the various magic symbols.

So they harm DX, which means they serve no purpose at all.

Solution:
- Expose the test API from `testutil`, so tests can call `t.it()`,
  `t.describe()`, etc., in the conventional way.
- Drop `getfenv()` hacks.
- Drop the `setfenv()` injection in `load_chunk`.
- Drop `test/_meta.lua`.
2026-07-21 13:22:39 +02:00
bfredl e61228a214 fix(tests): needing two calls to setup a screen is cringe
Before calling "attach" a screen object is just a dummy container for
(row, col) values whose purpose is to be sent as part of the "attach"
function call anyway.

Just create the screen in an attached state directly. Keep the complete
(row, col, options) config together. It is still completely valid to
later detach and re-attach as needed, including to another session.
2024-11-14 12:40:57 +01:00
Lewis Russell 573a71469d fix(scrollbind): properly take filler/virtual lines into account
Problem:

`'scrollbind'` does not work properly if the window being scrolled
automatically contains any filler/virtual lines (except for diff filler
lines).

This is because when the scrollbind check is done, the logic only
considers changes to topline which are represented as line numbers.

Solution:

Write the logic for determine the scroll amount to take into account
filler/virtual lines.

Fixes #29751
2024-07-31 11:33:32 +01:00