feat(defaults): dot-repeat [<Space> #31186

Problem: `[<Space>` and `]<Space>` do not support repetition.

Solution: use `operatorfunc` and `g@l` to make these mappings dot
repeatable.
This commit is contained in:
Peter Aronoff
2024-11-17 16:31:24 -05:00
committed by GitHub
parent 44229bb85b
commit cc6992f1ca
3 changed files with 78 additions and 8 deletions

23
runtime/lua/vim/_buf.lua Normal file
View File

@@ -0,0 +1,23 @@
local M = {}
--- Adds one or more blank lines above or below the cursor.
-- TODO: move to _defaults.lua once it is possible to assign a Lua function to options #25672
--- @param above? boolean Place blank line(s) above the cursor
local function add_blank(above)
local offset = above and 1 or 0
local repeated = vim.fn['repeat']({ '' }, vim.v.count1)
local linenr = vim.api.nvim_win_get_cursor(0)[1]
vim.api.nvim_buf_set_lines(0, linenr - offset, linenr - offset, true, repeated)
end
-- TODO: move to _defaults.lua once it is possible to assign a Lua function to options #25672
function M.space_above()
add_blank(true)
end
-- TODO: move to _defaults.lua once it is possible to assign a Lua function to options #25672
function M.space_below()
add_blank()
end
return M