From 7dda7ec2a0b95dbe418e3bc1354fbe4ed5362ce2 Mon Sep 17 00:00:00 2001 From: TheK4n Date: Mon, 16 Jan 2023 21:41:08 +0300 Subject: [PATCH] ref(nvim): vimscript func to lua --- sub/nvim/lua/base/maps.lua | 98 ++++++++++++++++++++------------------ 1 file changed, 51 insertions(+), 47 deletions(-) diff --git a/sub/nvim/lua/base/maps.lua b/sub/nvim/lua/base/maps.lua index 9727c82..7f4f527 100644 --- a/sub/nvim/lua/base/maps.lua +++ b/sub/nvim/lua/base/maps.lua @@ -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', 'c', [[:call TabDo('set cursorline!')]], {silent = true}) +keymap.set('n', 'c', create_function_tabdo('set cursorline!'), {silent = true}) keymap.set('n', '/', [[:set invhlsearch]], {silent = true}) @@ -92,18 +77,34 @@ function create_autocmd_filetype(func) ) end -function create_func(ft, cmd) +function set_keymap_run_script(cmd) + cmd_string = string.format([[:tabnew %% :terminal %s %% :set nocursorline number norelativenumber G ]], cmd) + keymap.set("n", "rr", cmd_string, {silent = true}) +end + +function create_function_create_autocmd_filetype(ft, cmd) return function() if vim.bo.filetype == ft then - cmd_string = string.format([[:tabnew %% :terminal %s %% :set nocursorline number norelativenumber G ]], cmd) - keymap.set("n", "rr", cmd_string, {silent = true}) + 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', 'l', [[:call TabDo('call ToggleRelativeAbsoluteNumber()') ]], {silent = true}) +keymap.set('n', 'l', create_function_tabdo('lua toggle_number_style()'), {silent = true})