From 26e765f905cbf1df18cfc825bad9b1b982f517ea Mon Sep 17 00:00:00 2001 From: Gregory Anders <8965202+gpanders@users.noreply.github.com> Date: Fri, 11 Oct 2024 11:56:21 -0500 Subject: feat(defaults): map gri to vim.lsp.buf.implementation() (#30764) Continuing the default LSP maps under the "gr" prefix. Mnemonic: "i" for "implementation". --- runtime/lua/vim/_defaults.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'runtime/lua/vim/_defaults.lua') diff --git a/runtime/lua/vim/_defaults.lua b/runtime/lua/vim/_defaults.lua index 6cad1dbca9..8e850f4cd3 100644 --- a/runtime/lua/vim/_defaults.lua +++ b/runtime/lua/vim/_defaults.lua @@ -157,7 +157,7 @@ do --- client is attached. If no client is attached, or if a server does not support a capability, an --- error message is displayed rather than exhibiting different behavior. --- - --- See |grr|, |grn|, |gra|, |i_CTRL-S|. + --- See |grr|, |grn|, |gra|, |gri|, |i_CTRL-S|. do vim.keymap.set('n', 'grn', function() vim.lsp.buf.rename() @@ -171,6 +171,10 @@ do vim.lsp.buf.references() end, { desc = 'vim.lsp.buf.references()' }) + vim.keymap.set('n', 'gri', function() + vim.lsp.buf.implementation() + end, { desc = 'vim.lsp.buf.implementation()' }) + vim.keymap.set('i', '', function() vim.lsp.buf.signature_help() end, { desc = 'vim.lsp.buf.signature_help()' }) -- cgit From f6f2334ac28f41994ad6480b1a19e653c659662c Mon Sep 17 00:00:00 2001 From: Maria José Solano Date: Wed, 23 Oct 2024 04:40:12 -0700 Subject: fix(defaults): error messages UX for unimpaired mappings #30884 --- runtime/lua/vim/_defaults.lua | 167 +++++++++++++++--------------------------- 1 file changed, 60 insertions(+), 107 deletions(-) (limited to 'runtime/lua/vim/_defaults.lua') diff --git a/runtime/lua/vim/_defaults.lua b/runtime/lua/vim/_defaults.lua index 8e850f4cd3..0f4cd08da0 100644 --- a/runtime/lua/vim/_defaults.lua +++ b/runtime/lua/vim/_defaults.lua @@ -215,173 +215,126 @@ do --- vim-unimpaired style mappings. See: https://github.com/tpope/vim-unimpaired do + ---@param lhs string + ---@param rhs function + ---@param desc string + local function create_unimpaired_mapping(lhs, rhs, desc) + vim.keymap.set('n', lhs, function() + local _, err = pcall(rhs) ---@type any, string + if err then + vim.api.nvim_err_writeln(err) + end + end, { desc = desc }) + end + -- Quickfix mappings - vim.keymap.set('n', '[q', function() + create_unimpaired_mapping('[q', function() vim.cmd.cprevious({ count = vim.v.count1 }) - end, { - desc = ':cprevious', - }) - - vim.keymap.set('n', ']q', function() + end, ':cprevious') + create_unimpaired_mapping(']q', function() vim.cmd.cnext({ count = vim.v.count1 }) - end, { - desc = ':cnext', - }) - - vim.keymap.set('n', '[Q', function() - vim.cmd.crewind({ count = vim.v.count ~= 0 and vim.v.count or nil }) - end, { - desc = ':crewind', - }) - - vim.keymap.set('n', ']Q', function() - vim.cmd.clast({ count = vim.v.count ~= 0 and vim.v.count or nil }) - end, { - desc = ':clast', - }) - - vim.keymap.set('n', '[', function() + end, ':cnext') + create_unimpaired_mapping('[', function() vim.cmd.cpfile({ count = vim.v.count1 }) - end, { - desc = ':cpfile', - }) - - vim.keymap.set('n', ']', function() + end, ':cpfile') + create_unimpaired_mapping(']', function() vim.cmd.cnfile({ count = vim.v.count1 }) - end, { - desc = ':cnfile', - }) + end, ':cnfile') -- Location list mappings - vim.keymap.set('n', '[l', function() + create_unimpaired_mapping('[l', function() vim.cmd.lprevious({ count = vim.v.count1 }) - end, { - desc = ':lprevious', - }) - - vim.keymap.set('n', ']l', function() + end, ':lprevious') + create_unimpaired_mapping(']l', function() vim.cmd.lnext({ count = vim.v.count1 }) - end, { - desc = ':lnext', - }) - - vim.keymap.set('n', '[L', function() + end, ':lnext') + create_unimpaired_mapping('[L', function() vim.cmd.lrewind({ count = vim.v.count ~= 0 and vim.v.count or nil }) - end, { - desc = ':lrewind', - }) - - vim.keymap.set('n', ']L', function() + end, ':lrewind') + create_unimpaired_mapping(']L', function() vim.cmd.llast({ count = vim.v.count ~= 0 and vim.v.count or nil }) - end, { - desc = ':llast', - }) - - vim.keymap.set('n', '[', function() + end, ':llast') + create_unimpaired_mapping('[', function() vim.cmd.lpfile({ count = vim.v.count1 }) - end, { - desc = ':lpfile', - }) - - vim.keymap.set('n', ']', function() + end, ':lpfile') + create_unimpaired_mapping(']', function() vim.cmd.lnfile({ count = vim.v.count1 }) - end, { - desc = ':lnfile', - }) + end, ':lnfile') -- Argument list - vim.keymap.set('n', '[a', function() + create_unimpaired_mapping('[a', function() vim.cmd.previous({ count = vim.v.count1 }) - end, { - desc = ':previous', - }) - - vim.keymap.set('n', ']a', function() + end, ':previous') + create_unimpaired_mapping(']a', function() -- count doesn't work with :next, must use range. See #30641. vim.cmd.next({ range = { vim.v.count1 } }) - end, { - desc = ':next', - }) - - vim.keymap.set('n', '[A', function() + end, ':next') + create_unimpaired_mapping('[A', function() if vim.v.count ~= 0 then vim.cmd.argument({ count = vim.v.count }) else vim.cmd.rewind() end - end, { - desc = ':rewind', - }) - - vim.keymap.set('n', ']A', function() + end, ':rewind') + create_unimpaired_mapping(']A', function() if vim.v.count ~= 0 then vim.cmd.argument({ count = vim.v.count }) else vim.cmd.last() end - end, { - desc = ':last', - }) + end, ':last') -- Tags - vim.keymap.set('n', '[t', function() + create_unimpaired_mapping('[t', function() -- count doesn't work with :tprevious, must use range. See #30641. vim.cmd.tprevious({ range = { vim.v.count1 } }) - end, { desc = ':tprevious' }) - - vim.keymap.set('n', ']t', function() + end, ':tprevious') + create_unimpaired_mapping(']t', function() -- count doesn't work with :tnext, must use range. See #30641. vim.cmd.tnext({ range = { vim.v.count1 } }) - end, { desc = ':tnext' }) - - vim.keymap.set('n', '[T', function() + end, ':tnext') + create_unimpaired_mapping('[T', function() -- count doesn't work with :trewind, must use range. See #30641. vim.cmd.trewind({ range = vim.v.count ~= 0 and { vim.v.count } or nil }) - end, { desc = ':trewind' }) - - vim.keymap.set('n', ']T', function() + end, ':trewind') + create_unimpaired_mapping(']T', function() -- :tlast does not accept a count, so use :trewind if count given if vim.v.count ~= 0 then vim.cmd.trewind({ range = { vim.v.count } }) else vim.cmd.tlast() end - end, { desc = ':tlast' }) - - vim.keymap.set('n', '[', function() + end, ':tlast') + create_unimpaired_mapping('[', function() -- count doesn't work with :ptprevious, must use range. See #30641. vim.cmd.ptprevious({ range = { vim.v.count1 } }) - end, { desc = ' :ptprevious' }) - - vim.keymap.set('n', ']', function() + end, ' :ptprevious') + create_unimpaired_mapping(']', function() -- count doesn't work with :ptnext, must use range. See #30641. vim.cmd.ptnext({ range = { vim.v.count1 } }) - end, { desc = ':ptnext' }) + end, ':ptnext') -- Buffers - vim.keymap.set('n', '[b', function() + create_unimpaired_mapping('[b', function() vim.cmd.bprevious({ count = vim.v.count1 }) - end, { desc = ':bprevious' }) - - vim.keymap.set('n', ']b', function() + end, ':bprevious') + create_unimpaired_mapping(']b', function() vim.cmd.bnext({ count = vim.v.count1 }) - end, { desc = ':bnext' }) - - vim.keymap.set('n', '[B', function() + end, ':bnext') + create_unimpaired_mapping('[B', function() if vim.v.count ~= 0 then vim.cmd.buffer({ count = vim.v.count }) else vim.cmd.brewind() end - end, { desc = ':brewind' }) - - vim.keymap.set('n', ']B', function() + end, ':brewind') + create_unimpaired_mapping(']B', function() if vim.v.count ~= 0 then vim.cmd.buffer({ count = vim.v.count }) else vim.cmd.blast() end - end, { desc = ':blast' }) + end, ':blast') end end -- cgit From 01739d4673eecad0631f874ba279c5c362aa1766 Mon Sep 17 00:00:00 2001 From: Maria José Solano Date: Fri, 25 Oct 2024 06:45:27 -0700 Subject: fix(defaults): missing ]Q/[Q unimpaired mappings #30943 --- runtime/lua/vim/_defaults.lua | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'runtime/lua/vim/_defaults.lua') diff --git a/runtime/lua/vim/_defaults.lua b/runtime/lua/vim/_defaults.lua index 0f4cd08da0..1b1114b764 100644 --- a/runtime/lua/vim/_defaults.lua +++ b/runtime/lua/vim/_defaults.lua @@ -234,6 +234,12 @@ do create_unimpaired_mapping(']q', function() vim.cmd.cnext({ count = vim.v.count1 }) end, ':cnext') + create_unimpaired_mapping('[Q', function() + vim.cmd.crewind({ count = vim.v.count ~= 0 and vim.v.count or nil }) + end, ':crewind') + create_unimpaired_mapping(']Q', function() + vim.cmd.clast({ count = vim.v.count ~= 0 and vim.v.count or nil }) + end, ':clast') create_unimpaired_mapping('[', function() vim.cmd.cpfile({ count = vim.v.count1 }) end, ':cpfile') -- cgit From 0b7cc014fc0ed8d0765e8504ff4a8ff7a84dac42 Mon Sep 17 00:00:00 2001 From: Nikita Revenco <154856872+nikitarevenco@users.noreply.github.com> Date: Mon, 28 Oct 2024 13:29:29 +0000 Subject: feat(defaults): map gO to LSP document_symbol #30781 --- runtime/lua/vim/_defaults.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'runtime/lua/vim/_defaults.lua') diff --git a/runtime/lua/vim/_defaults.lua b/runtime/lua/vim/_defaults.lua index 1b1114b764..03b2803f3e 100644 --- a/runtime/lua/vim/_defaults.lua +++ b/runtime/lua/vim/_defaults.lua @@ -157,7 +157,7 @@ do --- client is attached. If no client is attached, or if a server does not support a capability, an --- error message is displayed rather than exhibiting different behavior. --- - --- See |grr|, |grn|, |gra|, |gri|, |i_CTRL-S|. + --- See |grr|, |grn|, |gra|, |gri|, |gO|, |i_CTRL-S|. do vim.keymap.set('n', 'grn', function() vim.lsp.buf.rename() @@ -175,6 +175,10 @@ do vim.lsp.buf.implementation() end, { desc = 'vim.lsp.buf.implementation()' }) + vim.keymap.set('n', 'gO', function() + vim.lsp.buf.document_symbol() + end, { desc = 'vim.lsp.buf.document_symbol()' }) + vim.keymap.set('i', '', function() vim.lsp.buf.signature_help() end, { desc = 'vim.lsp.buf.signature_help()' }) -- cgit From ff93cccbc1ce4bb217d503e2ac5f81f9023d4d43 Mon Sep 17 00:00:00 2001 From: Gregory Anders Date: Tue, 29 Oct 2024 10:06:14 -0500 Subject: fix(defaults): omit extraneous info from unimpaired mapping errors (#30983) --- runtime/lua/vim/_defaults.lua | 204 +++++++++++++++++++++++------------------- 1 file changed, 111 insertions(+), 93 deletions(-) (limited to 'runtime/lua/vim/_defaults.lua') diff --git a/runtime/lua/vim/_defaults.lua b/runtime/lua/vim/_defaults.lua index 03b2803f3e..d3b7bda871 100644 --- a/runtime/lua/vim/_defaults.lua +++ b/runtime/lua/vim/_defaults.lua @@ -219,132 +219,150 @@ do --- vim-unimpaired style mappings. See: https://github.com/tpope/vim-unimpaired do - ---@param lhs string - ---@param rhs function - ---@param desc string - local function create_unimpaired_mapping(lhs, rhs, desc) - vim.keymap.set('n', lhs, function() - local _, err = pcall(rhs) ---@type any, string - if err then - vim.api.nvim_err_writeln(err) - end - end, { desc = desc }) + --- Execute a command and print errors without a stacktrace. + --- @param opts table Arguments to |nvim_cmd()| + local function cmd(opts) + local _, err = pcall(vim.api.nvim_cmd, opts, {}) + if err then + vim.api.nvim_err_writeln(err:sub(#'Vim:' + 1)) + end end -- Quickfix mappings - create_unimpaired_mapping('[q', function() - vim.cmd.cprevious({ count = vim.v.count1 }) - end, ':cprevious') - create_unimpaired_mapping(']q', function() - vim.cmd.cnext({ count = vim.v.count1 }) - end, ':cnext') - create_unimpaired_mapping('[Q', function() - vim.cmd.crewind({ count = vim.v.count ~= 0 and vim.v.count or nil }) - end, ':crewind') - create_unimpaired_mapping(']Q', function() - vim.cmd.clast({ count = vim.v.count ~= 0 and vim.v.count or nil }) - end, ':clast') - create_unimpaired_mapping('[', function() - vim.cmd.cpfile({ count = vim.v.count1 }) - end, ':cpfile') - create_unimpaired_mapping(']', function() - vim.cmd.cnfile({ count = vim.v.count1 }) - end, ':cnfile') + vim.keymap.set('n', '[q', function() + cmd({ cmd = 'cprevious', count = vim.v.count1 }) + end, { desc = ':cprevious' }) + + vim.keymap.set('n', ']q', function() + cmd({ cmd = 'cnext', count = vim.v.count1 }) + end, { desc = ':cnext' }) + + vim.keymap.set('n', '[Q', function() + cmd({ cmd = 'crewind', count = vim.v.count ~= 0 and vim.v.count or nil }) + end, { desc = ':crewind' }) + + vim.keymap.set('n', ']Q', function() + cmd({ cmd = 'clast', count = vim.v.count ~= 0 and vim.v.count or nil }) + end, { desc = ':clast' }) + + vim.keymap.set('n', '[', function() + cmd({ cmd = 'cpfile', count = vim.v.count1 }) + end, { desc = ':cpfile' }) + + vim.keymap.set('n', ']', function() + cmd({ cmd = 'cnfile', count = vim.v.count1 }) + end, { desc = ':cnfile' }) -- Location list mappings - create_unimpaired_mapping('[l', function() - vim.cmd.lprevious({ count = vim.v.count1 }) - end, ':lprevious') - create_unimpaired_mapping(']l', function() - vim.cmd.lnext({ count = vim.v.count1 }) - end, ':lnext') - create_unimpaired_mapping('[L', function() - vim.cmd.lrewind({ count = vim.v.count ~= 0 and vim.v.count or nil }) - end, ':lrewind') - create_unimpaired_mapping(']L', function() - vim.cmd.llast({ count = vim.v.count ~= 0 and vim.v.count or nil }) - end, ':llast') - create_unimpaired_mapping('[', function() - vim.cmd.lpfile({ count = vim.v.count1 }) - end, ':lpfile') - create_unimpaired_mapping(']', function() - vim.cmd.lnfile({ count = vim.v.count1 }) - end, ':lnfile') + vim.keymap.set('n', '[l', function() + cmd({ cmd = 'lprevious', count = vim.v.count1 }) + end, { desc = ':lprevious' }) + + vim.keymap.set('n', ']l', function() + cmd({ cmd = 'lnext', count = vim.v.count1 }) + end, { desc = ':lnext' }) + + vim.keymap.set('n', '[L', function() + cmd({ cmd = 'lrewind', count = vim.v.count ~= 0 and vim.v.count or nil }) + end, { desc = ':lrewind' }) + + vim.keymap.set('n', ']L', function() + cmd({ cmd = 'llast', count = vim.v.count ~= 0 and vim.v.count or nil }) + end, { desc = ':llast' }) + + vim.keymap.set('n', '[', function() + cmd({ cmd = 'lpfile', count = vim.v.count1 }) + end, { desc = ':lpfile' }) + + vim.keymap.set('n', ']', function() + cmd({ cmd = 'lnfile', count = vim.v.count1 }) + end, { desc = ':lnfile' }) -- Argument list - create_unimpaired_mapping('[a', function() - vim.cmd.previous({ count = vim.v.count1 }) - end, ':previous') - create_unimpaired_mapping(']a', function() + vim.keymap.set('n', '[a', function() + cmd({ cmd = 'previous', count = vim.v.count1 }) + end, { desc = ':previous' }) + + vim.keymap.set('n', ']a', function() -- count doesn't work with :next, must use range. See #30641. - vim.cmd.next({ range = { vim.v.count1 } }) - end, ':next') - create_unimpaired_mapping('[A', function() + cmd({ cmd = 'next', range = { vim.v.count1 } }) + end, { desc = ':next' }) + + vim.keymap.set('n', '[A', function() if vim.v.count ~= 0 then - vim.cmd.argument({ count = vim.v.count }) + cmd({ cmd = 'argument', count = vim.v.count }) else - vim.cmd.rewind() + cmd({ cmd = 'rewind' }) end - end, ':rewind') - create_unimpaired_mapping(']A', function() + end, { desc = ':rewind' }) + + vim.keymap.set('n', ']A', function() if vim.v.count ~= 0 then - vim.cmd.argument({ count = vim.v.count }) + cmd({ cmd = 'argument', count = vim.v.count }) else - vim.cmd.last() + cmd({ cmd = 'last' }) end - end, ':last') + end, { desc = ':last' }) -- Tags - create_unimpaired_mapping('[t', function() + vim.keymap.set('n', '[t', function() -- count doesn't work with :tprevious, must use range. See #30641. - vim.cmd.tprevious({ range = { vim.v.count1 } }) - end, ':tprevious') - create_unimpaired_mapping(']t', function() + cmd({ cmd = 'tprevious', range = { vim.v.count1 } }) + end, { desc = ':tprevious' }) + + vim.keymap.set('n', ']t', function() -- count doesn't work with :tnext, must use range. See #30641. - vim.cmd.tnext({ range = { vim.v.count1 } }) - end, ':tnext') - create_unimpaired_mapping('[T', function() + cmd({ cmd = 'tnext', range = { vim.v.count1 } }) + end, { desc = ':tnext' }) + + vim.keymap.set('n', '[T', function() -- count doesn't work with :trewind, must use range. See #30641. - vim.cmd.trewind({ range = vim.v.count ~= 0 and { vim.v.count } or nil }) - end, ':trewind') - create_unimpaired_mapping(']T', function() + cmd({ cmd = 'trewind', range = vim.v.count ~= 0 and { vim.v.count } or nil }) + end, { desc = ':trewind' }) + + vim.keymap.set('n', ']T', function() -- :tlast does not accept a count, so use :trewind if count given if vim.v.count ~= 0 then - vim.cmd.trewind({ range = { vim.v.count } }) + cmd({ cmd = 'trewind', range = { vim.v.count } }) else - vim.cmd.tlast() + cmd({ cmd = 'tlast' }) end - end, ':tlast') - create_unimpaired_mapping('[', function() + end, { desc = ':tlast' }) + + vim.keymap.set('n', '[', function() -- count doesn't work with :ptprevious, must use range. See #30641. - vim.cmd.ptprevious({ range = { vim.v.count1 } }) - end, ' :ptprevious') - create_unimpaired_mapping(']', function() + cmd({ cmd = 'ptprevious', range = { vim.v.count1 } }) + end, { desc = ' :ptprevious' }) + + vim.keymap.set('n', ']', function() -- count doesn't work with :ptnext, must use range. See #30641. - vim.cmd.ptnext({ range = { vim.v.count1 } }) - end, ':ptnext') + cmd({ cmd = 'ptnext', range = { vim.v.count1 } }) + end, { desc = ':ptnext' }) -- Buffers - create_unimpaired_mapping('[b', function() - vim.cmd.bprevious({ count = vim.v.count1 }) - end, ':bprevious') - create_unimpaired_mapping(']b', function() - vim.cmd.bnext({ count = vim.v.count1 }) - end, ':bnext') - create_unimpaired_mapping('[B', function() + vim.keymap.set('n', '[b', function() + cmd({ cmd = 'bprevious', count = vim.v.count1 }) + end, { desc = ':bprevious' }) + + vim.keymap.set('n', ']b', function() + cmd({ cmd = 'bnext', count = vim.v.count1 }) + end, { desc = ':bnext' }) + + vim.keymap.set('n', '[B', function() if vim.v.count ~= 0 then - vim.cmd.buffer({ count = vim.v.count }) + cmd({ cmd = 'buffer', count = vim.v.count }) else - vim.cmd.brewind() + cmd({ cmd = 'brewind' }) end - end, ':brewind') - create_unimpaired_mapping(']B', function() + end, { desc = ':brewind' }) + + vim.keymap.set('n', ']B', function() if vim.v.count ~= 0 then - vim.cmd.buffer({ count = vim.v.count }) + cmd({ cmd = 'buffer', count = vim.v.count }) else - vim.cmd.blast() + cmd({ cmd = 'blast' }) end - end, ':blast') + end, { desc = ':blast' }) end end -- cgit From 079e5f4f9b67a5aa2c1b481ce78711bf8c76caea Mon Sep 17 00:00:00 2001 From: Yochem van Rosmalen Date: Mon, 4 Nov 2024 15:06:18 +0100 Subject: feat(defaults): unimpaired empty line below/above cursor #30984 --- runtime/lua/vim/_defaults.lua | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'runtime/lua/vim/_defaults.lua') diff --git a/runtime/lua/vim/_defaults.lua b/runtime/lua/vim/_defaults.lua index d3b7bda871..f399360f1e 100644 --- a/runtime/lua/vim/_defaults.lua +++ b/runtime/lua/vim/_defaults.lua @@ -363,6 +363,19 @@ do cmd({ cmd = 'blast' }) end end, { desc = ':blast' }) + + -- Add empty lines + vim.keymap.set('n', '[', function() + 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 - 1, linenr - 1, true, repeated) + end, { desc = 'Add empty line above cursor' }) + + vim.keymap.set('n', ']', function() + 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, linenr, true, repeated) + end, { desc = 'Add empty line below cursor' }) end end -- cgit From f1748b78e3165a0821a11f5ae1fb9398aa67c535 Mon Sep 17 00:00:00 2001 From: Yi Ming Date: Sat, 16 Nov 2024 00:13:41 +0800 Subject: feat(default): bind `vim.lsp.buf.signature_help` in select mode (#31223) --- runtime/lua/vim/_defaults.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'runtime/lua/vim/_defaults.lua') diff --git a/runtime/lua/vim/_defaults.lua b/runtime/lua/vim/_defaults.lua index f399360f1e..25afd83145 100644 --- a/runtime/lua/vim/_defaults.lua +++ b/runtime/lua/vim/_defaults.lua @@ -179,7 +179,7 @@ do vim.lsp.buf.document_symbol() end, { desc = 'vim.lsp.buf.document_symbol()' }) - vim.keymap.set('i', '', function() + vim.keymap.set({ 'i', 's' }, '', function() vim.lsp.buf.signature_help() end, { desc = 'vim.lsp.buf.signature_help()' }) end -- cgit From cc6992f1ca443f4da01cb4d57159d4cef37b36b7 Mon Sep 17 00:00:00 2001 From: Peter Aronoff Date: Sun, 17 Nov 2024 16:31:24 -0500 Subject: feat(defaults): dot-repeat [ #31186 Problem: `[` and `]` do not support repetition. Solution: use `operatorfunc` and `g@l` to make these mappings dot repeatable. --- runtime/lua/vim/_defaults.lua | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'runtime/lua/vim/_defaults.lua') diff --git a/runtime/lua/vim/_defaults.lua b/runtime/lua/vim/_defaults.lua index 25afd83145..06f6ed6829 100644 --- a/runtime/lua/vim/_defaults.lua +++ b/runtime/lua/vim/_defaults.lua @@ -366,16 +366,16 @@ do -- Add empty lines vim.keymap.set('n', '[', function() - 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 - 1, linenr - 1, true, repeated) - end, { desc = 'Add empty line above cursor' }) + -- TODO: update once it is possible to assign a Lua function to options #25672 + vim.go.operatorfunc = "v:lua.require'vim._buf'.space_above" + return 'g@l' + end, { expr = true, desc = 'Add empty line above cursor' }) vim.keymap.set('n', ']', function() - 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, linenr, true, repeated) - end, { desc = 'Add empty line below cursor' }) + -- TODO: update once it is possible to assign a Lua function to options #25672 + vim.go.operatorfunc = "v:lua.require'vim._buf'.space_below" + return 'g@l' + end, { expr = true, desc = 'Add empty line below cursor' }) end end -- cgit