ref(nvim): vimscript func to lua

This commit is contained in:
TheK4n 2023-01-16 21:41:08 +03:00
parent 60bcfd24b5
commit 7dda7ec2a0

View File

@ -4,30 +4,15 @@ local keymap = vim.keymap
vim.g.mapleader = ',' vim.g.mapleader = ','
vim.api.nvim_exec([[ function create_function_tabdo(command)
" like tabdo but restore the current tab return function()
function! TabDo(command) local currTab = vim.fn.tabpagenr()
let currTab=tabpagenr() vim.cmd(string.format([[tabdo %s]], command))
execute 'tabdo ' . a:command vim.cmd(string.format([[tabn %s]], currTab))
execute 'tabn ' . currTab end
endfunction end
" like bufdo but restore the current buffer keymap.set('n', '<Leader>c', create_function_tabdo('set cursorline!'), {silent = true})
function! BufDo(command)
let currBuff=bufnr("%")
execute 'bufdo ' . a:command
execute 'buffer ' . currBuff
endfunction
" like windo but restore the current window
function! WinDo(command)
let currwin=winnr()
execute 'windo ' . a:command
execute currwin . 'wincmd w'
endfunction
]], true)
keymap.set('n', '<Leader>c', [[:call TabDo('set cursorline!')<CR>]], {silent = true})
keymap.set('n', '<Leader>/', [[:set invhlsearch<CR>]], {silent = true}) keymap.set('n', '<Leader>/', [[:set invhlsearch<CR>]], {silent = true})
@ -92,18 +77,34 @@ function create_autocmd_filetype(func)
) )
end end
function create_func(ft, cmd) function set_keymap_run_script(cmd)
return function()
if vim.bo.filetype == ft then
cmd_string = string.format([[:tabnew %% <CR> :terminal %s %% <CR> :set nocursorline number norelativenumber <CR> G <CR>]], cmd) cmd_string = string.format([[:tabnew %% <CR> :terminal %s %% <CR> :set nocursorline number norelativenumber <CR> G <CR>]], cmd)
keymap.set("n", "<Leader>rr", cmd_string, {silent = true}) keymap.set("n", "<Leader>rr", cmd_string, {silent = true})
end
function create_function_create_autocmd_filetype(ft, cmd)
return function()
if vim.bo.filetype == ft then
set_keymap_run_script(cmd)
end end
end end
end end
create_autocmd_filetype(create_func('python', 'python3')) function create_function_create_autocmd_filename(fn, cmd)
create_autocmd_filetype(create_func('go', 'go run')) return function()
create_autocmd_filetype(create_func('rust', 'cargo run')) if vim.fn.expand('%:t') == fn then
set_keymap_run_script(cmd)
end
end
end
create_autocmd_filetype(create_function_create_autocmd_filetype('python', 'python3'))
create_autocmd_filetype(create_function_create_autocmd_filetype('go', 'go run'))
create_autocmd_filetype(create_function_create_autocmd_filetype('rust', 'cargo run'))
create_autocmd_filetype(create_function_create_autocmd_filetype('markdown', 'glow'))
create_autocmd_filetype(create_function_create_autocmd_filename('manpage', 'man -P cat -l'))
@ -112,23 +113,26 @@ create_autocmd_filetype(create_func('rust', 'cargo run'))
vim.opt.number = true vim.opt.number = true
vim.opt.relativenumber = true vim.opt.relativenumber = true
vim.api.nvim_exec([[
function! ToggleRelativeAbsoluteNumber() function toggle_number_style()
if !&number && !&relativenumber
set number local number = vim.opt.number["_value"]
set norelativenumber local relativenumber = vim.opt.relativenumber["_value"]
elseif &number && !&relativenumber
set nonumber if (not number) and (not relativenumber) then
set relativenumber vim.opt.number = true
elseif !&number && &relativenumber vim.opt.relativenumber = false
set number elseif (number) and (not relativenumber) then
set relativenumber vim.opt.number = false
elseif &number && &relativenumber vim.opt.relativenumber = true
set nonumber elseif (not number) and (relativenumber) then
set norelativenumber vim.opt.number = true
endif vim.opt.relativenumber = true
endfunction elseif (number) and (relativenumber) then
]], true) vim.opt.number = false
vim.opt.relativenumber = false
end
end
-- Toggle line number style -- Toggle line number style
keymap.set('n', '<Leader>l', [[:call TabDo('call ToggleRelativeAbsoluteNumber()') <CR>]], {silent = true}) keymap.set('n', '<Leader>l', create_function_tabdo('lua toggle_number_style()'), {silent = true})