vim-patch:9.2.0356: Cannot apply 'scrolloff' context lines at end of file

Problem:  Cannot apply 'scrolloff' context lines at end of file
Solution: Add the 'scrolloffpad' option to keep 'scrolloff' context even
          when at the end of the file (McAuley Penney).

closes: vim/vim#19040

a414630393

Co-authored-by: McAuley Penney <jacobmpenney@gmail.com>
This commit is contained in:
zeertzjq
2026-04-20 20:47:50 +08:00
parent 1569a71c8a
commit 8f1e14ffa2
16 changed files with 1044 additions and 17 deletions

View File

@@ -5488,8 +5488,8 @@ vim.go.sj = vim.go.scrolljump
--- Minimal number of screen lines to keep above and below the cursor.
--- This will make some context visible around where you are working. If
--- you set it to a very large value (999) the cursor line will always be
--- in the middle of the window (except at the start or end of the file or
--- when long lines wrap).
--- in the middle of the window (except at the start or end of the file,
--- see 'scrolloffpad', or when long lines wrap).
--- After using the local value, go back the global value with one of
--- these two:
---
@@ -5507,6 +5507,32 @@ vim.wo.so = vim.wo.scrolloff
vim.go.scrolloff = vim.o.scrolloff
vim.go.so = vim.go.scrolloff
--- When 'scrolloff' and 'scrolloffpad' are greater than zero, allow
--- the cursor to remain centered when at the end of the file.
--- Normally, 'scrolloff' will not keep the cursor centered at the
--- end of the file.
---
--- A value of 0 disables this feature. Any value above 0 enables it.
--- For a window-local value, -1 means to use the global value.
--- Values below -1 are invalid.
---
--- After using the local value, go back the global value with one of
--- these two:
---
--- ```vim
--- setlocal scrolloffpad<
--- setlocal scrolloffpad=-1
--- ```
---
---
--- @type integer
vim.o.scrolloffpad = 0
vim.o.sop = vim.o.scrolloffpad
vim.wo.scrolloffpad = vim.o.scrolloffpad
vim.wo.sop = vim.wo.scrolloffpad
vim.go.scrolloffpad = vim.o.scrolloffpad
vim.go.sop = vim.go.scrolloffpad
--- This is a comma-separated list of words that specifies how
--- 'scrollbind' windows should behave. 'sbo' stands for ScrollBind
--- Options.