From 64d19effcc7aa1db2f134130484aa68cddd6ecd6 Mon Sep 17 00:00:00 2001 From: "jakob.stendahl" Date: Thu, 30 Jun 2022 13:31:26 +0200 Subject: neovim --- Common/nvim/lua/helper_functions.lua | 72 ++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 Common/nvim/lua/helper_functions.lua (limited to 'Common/nvim/lua/helper_functions.lua') diff --git a/Common/nvim/lua/helper_functions.lua b/Common/nvim/lua/helper_functions.lua new file mode 100644 index 0000000..cac6c00 --- /dev/null +++ b/Common/nvim/lua/helper_functions.lua @@ -0,0 +1,72 @@ +-- opts that replicate the nore part of noremap +silentnoremap = { noremap = true, silent = true } + +-- Just to make the map function "shorter" +function map(kind, lhs, rhs, opts) + vim.api.nvim_set_keymap(kind, lhs, rhs, opts) +end + +-- True if Paste Mode is enabled +function HasPaste() + return vim.opt.paste:get() and 'PASTE MODE ' or '' +end +vim.api.nvim_create_user_command('HasPaste', HasPaste, {bang=true, desc='Returns a string with PASTE MODE if paste is on.'}) + +-- Toggles wether special characters are visible +list_chars_enabled = false +list_chars_when_enabled = "tab:→ ,space:·,nbsp:␣,trail:•,eol:¶,precedes:«,extends:»" +function ToggleListChars() + list_chars_enabled = not list_chars_enabled + vim.opt.list = list_chars_enabled + vim.opt.listchars = list_chars_enabled and list_chars_when_enabled or 'eol:$' +end + +-- Close buffer without closing window +--[[ +vim.cmd [[ + function! BufcloseCloseIt() + let l:currentBufNum = bufnr("%") + let l:alternateBufNum = bufnr("#") + + if buflisted(l:alternateBufNum) + buffer # + else + bnext + endif + + if bufnr("%") == l:currentBufNum + new + endif + + if buflisted(l:currentBufNum) + execute("bdelete! ".l:currentBufNum) + endif + endfunction +]] +--]] + +vim.cmd [[ + function! CmdLine(str) + exe "menu Foo.Bar :" . a:str + emenu Foo.Bar + unmenu Foo + endfunction + + + function! VisualSelection(direction, extra_filter) range + let l:saved_reg = @" + execute "normal! vgvy" + + let l:pattern = escape(@", "\\/.*'$^~[]") + let l:pattern = substitute(l:pattern, "\n$", "", "") + + if a:direction == 'gv' + call CmdLine("Ack '" . l:pattern . "' " ) + elseif a:direction == 'replace' + call CmdLine("%s" . '/'. l:pattern . '/') + endif + + let @/ = l:pattern + let @" = l:saved_reg + endfunction +]] -- cgit v1.2.3