From 766c5183b72afd87fd2951c36f6355ca25186535 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sun, 18 Dec 2022 14:36:59 +0900 Subject: neovim: dor-repeat go/gO without repeat.vim --- .config/nvim/init.lua | 39 +++++++++++++++++++++++++-------------- .config/nvim/lua/plugins.lua | 10 ---------- 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index 4a6c548..b0e6bb0 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -771,20 +771,31 @@ vim.keymap.set('!', 'jk', '', { remap=true }) vim.keymap.set('n', '', ':nohlsearch', { silent=true }) - -function vimrc.map_callbacks.insert_blank_line(offset) - for i = 1, vim.v.count1 do - F.append(F.line('.') - offset, '') - end -end - -vim.keymap.set('n', '(my-insert-blank-lines-after)', - 'call v:lua.vimrc.map_callbacks.insert_blank_line(0)') -vim.keymap.set('n', '(my-insert-blank-lines-before)', - 'call v:lua.vimrc.map_callbacks.insert_blank_line(1)') - -vim.keymap.set('n', 'go', '(my-insert-blank-lines-after)') -vim.keymap.set('n', 'gO', '(my-insert-blank-lines-before)') +-- Lua function cannot be set to 'operatorfunc' for now. +vim.cmd([[ + function! Vimrc_insert_black_line_below(type = '') abort + if a:type ==# '' + set operatorfunc=Vimrc_insert_black_line_below + return 'g@ ' + else + for i in range(v:count1) + call append(line('.'), '') + endfor + endif + endfunction + function! Vimrc_insert_black_line_above(type = '') abort + if a:type ==# '' + set operatorfunc=Vimrc_insert_black_line_above + return 'g@ ' + else + for i in range(v:count1) + call append(line('.') - 1, '') + endfor + endif + endfunction +]]) +vim.keymap.set('n', 'go', F.Vimrc_insert_black_line_below, { expr = true }) +vim.keymap.set('n', 'gO', F.Vimrc_insert_black_line_above, { expr = true }) vim.keymap.set('n', 'w', 'update') diff --git a/.config/nvim/lua/plugins.lua b/.config/nvim/lua/plugins.lua index 4d368d0..6e5bcdf 100644 --- a/.config/nvim/lua/plugins.lua +++ b/.config/nvim/lua/plugins.lua @@ -693,16 +693,6 @@ packer.startup(function(use) -- Autoload vim-repeat immediately in order to make (RepeatRedo) available. -- repeat#setreg() does nothing here. vim.fn['repeat#setreg']('', '') - - -- Make them repeatable with vim-repeat. - vim.cmd([[ - nnoremap (my-insert-blank-lines-after) - \ :call v:lua.vimrc.map_callbacks.insert_blank_line(0) - \ silent! call repeat#set("\Plug>(my-insert-blank-lines-after)") - nnoremap (my-insert-blank-lines-before) - \ :call v:lua.vimrc.map_callbacks.insert_blank_line(1) - \ silent! call repeat#set("\Plug>(my-insert-blank-lines-before)") - ]]) end, } -- Introduce user-defined mode. -- cgit v1.2.3-70-g09d2