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.api.nvim_exec([[
" like tabdo but restore the current tab
function! TabDo(command)
let currTab=tabpagenr()
execute 'tabdo ' . a:command
execute 'tabn ' . currTab
endfunction
function create_function_tabdo(command)
return function()
local currTab = vim.fn.tabpagenr()
vim.cmd(string.format([[tabdo %s]], command))
vim.cmd(string.format([[tabn %s]], currTab))
end
end
" like bufdo but restore the current buffer
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>c', create_function_tabdo('set cursorline!'), {silent = true})
keymap.set('n', '<Leader>/', [[:set invhlsearch<CR>]], {silent = true})
@ -92,18 +77,34 @@ function create_autocmd_filetype(func)
)
end
function create_func(ft, cmd)
return function()
if vim.bo.filetype == ft then
function set_keymap_run_script(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})
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
create_autocmd_filetype(create_func('python', 'python3'))
create_autocmd_filetype(create_func('go', 'go run'))
create_autocmd_filetype(create_func('rust', 'cargo run'))
function create_function_create_autocmd_filename(fn, cmd)
return function()
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.relativenumber = true
vim.api.nvim_exec([[
function! ToggleRelativeAbsoluteNumber()
if !&number && !&relativenumber
set number
set norelativenumber
elseif &number && !&relativenumber
set nonumber
set relativenumber
elseif !&number && &relativenumber
set number
set relativenumber
elseif &number && &relativenumber
set nonumber
set norelativenumber
endif
endfunction
]], true)
function toggle_number_style()
local number = vim.opt.number["_value"]
local relativenumber = vim.opt.relativenumber["_value"]
if (not number) and (not relativenumber) then
vim.opt.number = true
vim.opt.relativenumber = false
elseif (number) and (not relativenumber) then
vim.opt.number = false
vim.opt.relativenumber = true
elseif (not number) and (relativenumber) then
vim.opt.number = true
vim.opt.relativenumber = true
elseif (number) and (relativenumber) then
vim.opt.number = false
vim.opt.relativenumber = false
end
end
-- 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})