From 807381ce4017f53b31ce6497997bac0a3650df21 Mon Sep 17 00:00:00 2001 From: spike Date: Sun, 9 Oct 2022 04:51:47 +0200 Subject: [PATCH] update --- TODO | 42 - lua/core/mappings.lua | 1524 +++++++++--------- lua/core/options.lua | 21 +- lua/custom/plugins/configs/navigator.lua | 4 +- lua/custom/plugins/configs/todo-comments.lua | 1 + lua/custom/plugins/configs/treesitter.lua | 23 +- lua/custom/plugins/init.lua | 45 +- lua/plugins/init.lua | 2 +- lua/spike/dapmode.lua | 18 + lua/spike/lsp/go.lua | 10 +- 10 files changed, 870 insertions(+), 820 deletions(-) delete mode 100644 TODO diff --git a/TODO b/TODO deleted file mode 100644 index 480bd3e..0000000 --- a/TODO +++ /dev/null @@ -1,42 +0,0 @@ -- make line numbers easier to read in line operator mode --INFO:using extranl ui process in neovim: check fzflua,iron.nvim -- add tag="*" to plugins that use tags -- use libmodal + whichkey ? -- gisigns: add navigation between hunks (vs fugitive ?) - - optimize git flow -- navigator icons update -- vim-bookmarks disable default keymaps and use manaul ones (keep ma ...) -- Setup telescope/fzf mappings together -- LSP C-i is tab does not allow to jump back into history -- [PLUGIN INDEA] bookmark: take notes -- show messages window outside or floating -- create a bookmark mini plugin/helper for bookmarking paths -- html filetype use pup as auto formatter formatprg (check default vim) ? -- per project lsp settings - see https://www.reddit.com/r/neovim/comments/opipij/guide_tips_and_tricks_to_reduce_startup_and/ -- add/read language docs in vim -- vim.diagnostics.hide()/show() / - - create toggle diagnostics that overrides vim diagnostic show handler -- [navigator] use colors for codelens icons -- [navigator] remap C-k keymap -- [navigator] neovim diagnositc toggle (use hide() instead of disable) -- [navigator] check codelens icons -- [navigator] disable diagnostic on startup -- dynamic C-x: if number default or close window -- load custom/init.lua (autocommands) as vimscript file ? -- install neorg (neovim org mode) -- dynamic :w!! (daos or sudo) -[x] [navigator] fix 'gi' keymap overriden by navigator (use space leader) -- welcome screen (use mini) -- incorporate changes in nvchad_ui to override - -- [x]nvim C-p should not work in ft=qf -- [x] set neovim shell to bash/sh for faster commands (fish is slow) -- [x] yank until end of line $ mapping automatic with Y -- [x] remove registers from which-key plugin - -fix: problem with auto paused navigators -- [x] fix color/icon of status line diagnostics to match navigator --[x] pin all plugins -- [x] autocommand move current directory when move to new window -- [done]fix C-k expand snippet - it was alacritty overriding C-k -- [done] install vim hardway .. ? gajim diff --git a/lua/core/mappings.lua b/lua/core/mappings.lua index da583db..eb588ed 100644 --- a/lua/core/mappings.lua +++ b/lua/core/mappings.lua @@ -3,775 +3,809 @@ -- n, v, i, t, c = mode name.s local function termcodes(str) - return vim.api.nvim_replace_termcodes(str, true, true, true) + return vim.api.nvim_replace_termcodes(str, true, true, true) end local M = {} M.general = { --{{{ - i = {--{{{ + i = {--{{{ - ["jk"] = { "", "escape" }, + ["jk"] = { "", "escape" }, - -- navigate within insert mode - [""] = { "", "move left" }, - [""] = { "", "move right" }, - [""] = { "", "move down" }, - [""] = { "", "move up" }, + -- navigate within insert mode + [""] = { "", "move left" }, + [""] = { "", "move right" }, + [""] = { "", "move down" }, + [""] = { "", "move up" }, - [""] = { " update ", "update file (save on changes)" }, + [""] = { " update ", "update file (save on changes)" }, - -- luasnip change choice - -- [""] = { "luasnip-next-choice", "change luasnip choice" }, - [""] = { "lua require('luasnip.extras.select_choice')()", "change luasnip choice" }, - },--}}} + -- luasnip change choice + [""] = { "luasnip-next-choice", "change luasnip choice" }, + -- [""] = { "lua require('luasnip.extras.select_choice')()", "change luasnip choice" }, + },--}}} - n = {--{{{ - [""] = { " noh ", "no highlight" }, + n = {--{{{ + [""] = { " noh ", "no highlight" }, - -- switch between windows - [""] = { "h", "window left" }, - [""] = { "l", "window right" }, - [""] = { "j", "window down" }, - [""] = { "k", "window up" }, + -- switch between windows + [""] = { "h", "window left" }, + [""] = { "l", "window right" }, + [""] = { "j", "window down" }, + [""] = { "k", "window up" }, - -- Window resizing + -- Window resizing - [""] = { " vert res +2 ", "window width +" }, - [""] = { " vert res -2 ", "window width -" }, - [""] = { "res +2 ", "window height +" }, - [""] = { "res -2 ", "window height -" }, + [""] = { " vert res +2 ", "window width +" }, + [""] = { " vert res -2 ", "window width -" }, + [""] = { "res +2 ", "window height +" }, + [""] = { "res -2 ", "window height -" }, - ["="] = { "=", "adjust viewports "}, + ["="] = { "=", "adjust viewports "}, - -- quit dont save - ["qq"] = { " quitall! ", "quit/close all windows, don't save" }, + -- quit dont save + ["qq"] = { " quitall! ", "quit/close all windows, don't save" }, - -- ["Q"] = { " q!", "quit now" }, + -- ["Q"] = { " q!", "quit now" }, - -- easier horizontal scrolling - ["zl"] = { "zL", "horizontal scroll left" }, - ["zh"] = { "zH", "horizontal scroll right" }, + -- easier horizontal scrolling + ["zl"] = { "zL", "horizontal scroll left" }, + ["zh"] = { "zH", "horizontal scroll right" }, - -- Use fast jump to exact location and reserve `` for other usage - ["''"] = { "``", "jump back to exact location" }, + -- Use fast jump to exact location and reserve `` for other usage + ["''"] = { "``", "jump back to exact location" }, - -- Go to the first non-blank character of a line - ["0"] = { "^" }, - -- Just in case you need to go to the very beginning of a line - ["^"] = { "0" }, + -- Go to the first non-blank character of a line + ["0"] = { "^" }, + -- Just in case you need to go to the very beginning of a line + ["^"] = { "0" }, - ["ww"] = { " set wrap! echo 'wrap = '.&wrap " }, + ["ww"] = { " set wrap! echo 'wrap = '.&wrap " }, - -- save - [""] = { " update ", "save file" }, - - -- Copy all - ["Y"] = { " %y+ ", "copy whole file" }, - - -- line numbers - ["n"] = { " set nu! set rnu!", "toggle line number" }, - - -- update nvchad - -- ["uu"] = { " :NvChadUpdate ", "update nvchad" }, - - - -- lua source current file - [".."] = {" :w | source %", "save and source script "}, - [".m"] = { function () - local ok, core = pcall(require, "core") - if not ok then - return - end - -- reload nvchad mappings - require("plenary.reload").reload_module("core.utils") - require("plenary.reload").reload_module("core.default_config") - require("plenary.reload").reload_module("core.mappings") - require("core.utils").load_mappings() - print("mappings reloaded !") - end, "config reload mappings"}, - - ["ss"] = { " mks! ", "save session"}, - ["sl"] = { " source Session.vim ", "load session"}, - - ["tt"] = { - function() - require("base46").toggle_theme() - end, - "toggle theme", - }, - - - - -- luasnip edit snippets - ["sne"] = { - function() - require("luasnip.loaders").edit_snippet_files() - end, - "luasnip edit snippets" - }, - - -- Allow moving the cursor through wrapped lines with j, k, and - -- http://www.reddit.com/r/vim/comments/2k4cbr/problem_with_gj_and_gk/ - -- empty mode is same as using :map - -- also don't use g[j|k] when in operator pending mode, so it doesn't alter d, y or c behaviour - -- ["j"] = { 'v:count || mode(1)[0:1] == "no" ? "j" : "gj"', opts = { expr = true } }, - -- ["k"] = { 'v:count || mode(1)[0:1] == "no" ? "k" : "gk"', opts = { expr = true } }, - ["j"] = { "gj" }, - ["k"] = { "gk" }, - - -- new buffer - ["bb"] = { " enew ", "new buffer" }, - - -- new tab - [""] = { " tabe ", "new tab" }, - - - -- Fast tab - [""] = { "gT", "Previous tab" }, - [""] = { "gt", "Previous tab" }, - - -- close buffer + hide terminal buffer - ["x"] = { - function() - require("core.utils").close_buffer() - end, - "close buffer", - }, - - -- quick close window - [""] = {"c", "close window"}, - - - - -- yank from cusor to eol to system and primary clipboard - -- Y handles until end of line - -- yy handles linewise - -- ["y"] = { '"*y$"+y$', "yank from cursor to eol to primary and clipboard" }, - - -- folding levels - -- ["fd"] = { function() - -- vim.ui.select({"fold level 0", "1", "2", "3", "4", "5", "6", "7"}, - -- { - -- prompt = "fold lvl: ", - -- }, - -- function(item, idx) - -- P(idx) - -- -- local foldlevel = tonumber(item) - -- -- if foldlevel == nil then P("need number for fold level !") end - -- -- vim.o.foldlevel = foldlevel - -- end) - -- end, - -- - -- "set fold level"}, - ["f0"] = { ":set foldlevel=0", "set fold level" }, - ["f1"] = { ":set foldlevel=1", "set fold level" }, - ["f2"] = { ":set foldlevel=2", "set fold level" }, - ["f3"] = { ":set foldlevel=3", "set fold level" }, - ["f4"] = { ":set foldlevel=4", "set fold level" }, - -- ["f5"] = { ":set foldlevel=5", "set fold level" }, - -- ["f6"] = { ":set foldlevel=6", "set fold level" }, - -- ["f7"] = { ":set foldlevel=7", "set fold level" }, - -- ["f8"] = { ":set foldlevel=8", "set fold level" }, - -- ["f9"] = { ":set foldlevel=9", "set fold level" }, - - ["tf"] = { " set foldmethod=expr| set foldexpr=nvim_treesitter#foldexpr()", - "enable Treesitter folding"}, - - ["en"] = { " cn ", "next error" }, - ["]e"] = { " cn ", "next error" }, - ["ep"] = { " cp ", "previous error" }, - ["[e"] = { " cp ", "previous error" }, - - - -- Tabularize mappings - ["a&"] = { " Tabularize /&" }, - ["a="] = { " Tabularize /^[^=]*\zs=" }, - ["a:"] = { " Tabularize /:" }, - ["a,"] = { " Tabularize /," }, - ["a"] = { " Tabularize /" }, - - - ["g."] = { ":cwd", "change dir to current file", opts = { remap = true } }, - ["g."] = { ":Gcd", "change dir to git root" }, - - -- Packer commands - -- - -- PackerSnapshot - ["pS"] = { function() - local snapname = "snapshot_" .. os.date("%Y_%m_%d") - local packer = require 'packer' - packer.snapshot(snapname) - end - , "packer snapshot"}, - ["pst"] = { " PackerStatus", "packer status"}, - ["psc"] = { " PackerSync", "packer sync"}, - ["pc"] = { " PackerCompile", "packer compile"}, - - ["pr"] = { function() - - -- require("plenary.reload").reload_module("plugins") - -- require("plenary.reload").reload_module("custom.plugins") - -- vim.cmd "LuaCacheClear" - -- package.loaded["plugins"] = nil - -- - -- package.loaded["custom.plugins"] = nil - -- dofile(vim.fn.stdpath("config") .. '/lua/plugins/init.lua') - -- dofile(vim.fn.stdpath("config") .. '/lua/custom/plugins/init.lua') - -- - require("spike.utils").unload_lua_ns("plugins") - require("spike.utils").unload_lua_ns("custom") - require("plugins") - -- require("spike.utils").unload_lua_ns("custom") - vim.cmd "PackerCompile" - print("reloaded plugin config !") - end, - "packer reload/compile" - }, - - -- Notify cmd watcher (see /scripts/utils/fifo_watch.sh) - [","] = { - function() - local fifo_patch = "/tmp/fifo_vimnotify" - os.execute("echo do >" .. fifo_patch) - end, - "notify " - }, - - - -- TODO: move to lspconfig section - -- ["lsp"] = { " lua require('custom.plugins.configs.navigator').enable()", "lsp enable"}, - ["lsp"] = { " LspStart", "lsp enable"}, - [""] = { " LspStart", "lsp enable"}, - [""] = { " LspStop", "lsp disable"}, - ["lst"] = { " LspStop", "lsp disable"}, - - - - --------------- - -- Programming languages specifics - --------------- - - -- config files - ["ev"] = {" source ~/.config/nvim/Session.vim" , "edit vim config"}, - },--}}} - - t = { [""] = { termcodes "", "escape terminal mode" } }, - - v = {--{{{ - -- ["j"] = { 'v:count || mode(1)[0:1] == "no" ? "j" : "gj"', opts = { expr = true } }, - -- ["k"] = { 'v:count || mode(1)[0:1] == "no" ? "k" : "gk"', opts = { expr = true } }, - ["j"] = { "gj" }, - ["k"] = { "gk" }, - -- Don't copy the replaced text after pasting in visual mode - -- https://vim.fandom.com/wiki/Replace_a_word_with_yanked_text#Alternative_mapping_for_paste - ["p"] = { 'p:let @+=@0:let @"=@0', opts = { silent = true } }, - - -- yank from cursor to eol to system and primary clipboard - ["y"] = { '"*y gv"+y', "yank line to clipboards" }, - - -- visual shifting - ["<"] = { ""] = { ">gv" }, - - -- Allow using the repeat operator with a visual selection (!) - -- http://stackoverflow.com/a/8064607/127816 - ["."] = { ":normal .", opts = { silent = true } }, - - -- Tabularize mappings - ["a&"] = { " Tabularize /&" }, - ["a="] = { " Tabularize /^[^=]*\zs=" }, - ["a:"] = { " Tabularize /:" }, - ["a,"] = { " Tabularize /," }, - ["a"] = { " Tabularize /" }, - - },--}}} - - -- command line mappings - c = {--{{{ - ["Tabe"] = { "tabe" }, - - -- Change Working Directory to that of the current file - ["cwd"] = { "lcd %:p:h", "change dir to current file" }, - ["cd."] = { "lcd %:p:h", "change dir to current file" }, - ["w!!"] = { "w !doas tee %", "write file with root perms" }, - ["%%"] = { "=fnameescape(expand('%:h')).'/'", - "alias to current working dir"}, - ["Tab"] = { "Tabularize"}, - - - ["%c"] = { "~/.config/nvim/", "shortcut to nvim config dir"}, - -- ["tsf"] = { "set foldmethod=expr | set foldexpr=nvim_treesitter#foldexpr()", - -- "enable Treesitter folding"} - }--}}} -} --}}} - -M.tabufline = { --{{{ - plugin = true, + -- save + [""] = { " update ", "save file" }, - n = { - -- cycle through buffers - [""] = { - function() - require("core.utils").tabuflineNext() - end, - "goto next buffer", - }, - - [""] = { - function() - require("core.utils").tabuflinePrev() - end, - "goto prev buffer", - }, - - -- pick buffers via numbers - [""] = { " TbufPick ", "Pick buffer" }, - }, -} --}}} - -M.comment = { --{{{ - plugin = true, - - -- toggle comment in both modes - n = { - ["/"] = { - function() - -- require("Comment.api").toggle.linewise.current() - vim.notify("use gcc !") - end, - "toggle comment", - }, - }, - - v = { - ["/"] = { - function() - vim.notify("use gcc !") - end, - -- "lua require('Comment.api').toggle.linewise(vim.fn.visualmode())", - "toggle comment", - }, - }, -} --}}} - -M.lspconfig = { --{{{ - plugin = true, - - -- See ` :help vim.lsp.*` for documentation on any of the below functions - - n = { - ["gD"] = { - function() - vim.lsp.buf.declaration() - end, - "lsp declaration", - }, - - ["gd"] = { - function() - vim.lsp.buf.definition() - end, - "lsp definition", - }, - - ["K"] = { - function() - vim.lsp.buf.hover() - end, - "lsp hover", - }, - - ["gm"] = { - function() - vim.lsp.buf.implementation() - end, - "lsp implementation", - }, - - ["ls"] = { - function() - vim.lsp.buf.signature_help() - end, - "lsp signature_help", - }, - - ["D"] = { - function() - vim.lsp.buf.type_definition() - end, - "lsp definition type", - }, - - ["ra"] = { - function() - require("nvchad_ui.renamer").open() - end, - "lsp rename", - }, - - ["ca"] = { - function() - vim.lsp.buf.code_action() - end, - "lsp code_action", - }, - - ["gr"] = { - function() - vim.lsp.buf.references() - end, - "lsp references", - }, - - ["f"] = { - function() - vim.diagnostic.open_float() - end, - "lsp floating diagnostic", - }, - - ["[d"] = { - function() - vim.diagnostic.goto_prev() - end, - "lsp goto prev", - }, - - ["d]"] = { - function() - vim.diagnostic.goto_next() - end, - "lsp goto_next", - }, - - ["q"] = { - function() - vim.diagnostic.setloclist() - end, - "lsp diagnostic setloclist", - }, - - ["fm"] = { - function() - vim.lsp.buf.formatting {} - end, - "lsp formatting", - }, - - ["wa"] = { - function() - vim.lsp.buf.add_workspace_folder() - end, - "lsp add workspace folder", - }, - - ["wr"] = { - function() - vim.lsp.buf.remove_workspace_folder() - end, - "lsp remove workspace folder", - }, - - ["wl"] = { - function() - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - end, - "lsp list workspace folders", - }, - }, -} --}}} - -M.dap = { - plugin = true, - n = { - ["ds"] = { - function() - if vim.o.filetype == "go" then - local spdap = require("spike.dap") - spdap.setup() - spdap.go_debug() - - end - end, - "start dap session"}, - ["dS"] = { - function() - if vim.o.filetype == "go" then - vim.cmd("GoDbgStop") - end - end, - "stop dap session" - }, - ["dd"] = {" DapToggleBreakpoint "}, - ["dc"] = {function() - vim.ui.input({ prompt = "condition> "}, function(input) - require("dap").set_breakpoint(input) - end) - end, "dap conditional breakpoint"}, - ["dm"] = {function() - require("spike.dapmode").start() - end, "enter dap mode"} - - }, - -} + -- Copy all + ["Y"] = { " %y+ ", "copy whole file" }, -M.nvimtree = { --{{{ - plugin = true, - - n = { - -- toggle - [""] = { " NvimTreeToggle ", "toggle nvimtree" }, - }, -} --}}} - -M.fzf_lua = { --{{{ - plugin = true, - - n = { - -- find - -- [""] = { " FzfLua files ", "FzfLua find files" }, - -- [""] = { function () - -- local ignored_bufs = { - -- "qf", - -- } - -- for _, ignored in ipairs(ignored_bufs) do - -- if vim.bo.filetype == ignored then - -- local default_keyseq = termcodes("") - -- vim.api.nvim_feedkeys(default_keyseq, 'n', false) - -- return - -- end - -- end - -- vim.cmd "FzfLua files" - -- end, "FzfLua find files" }, - - ["fl"] = { " FzfLua lines ", "FzfLua grep open buffer lines" }, - - -- grep - -- ["fw"] = { " FzfLua grep_cword ", "FzfLua grep cword" }, - -- ["f."] = { " FzfLua live_grep_native ", "FzfLua grep live native" }, - -- ["ff"] = { " FzfLua grep_project ", "FzfLua grep live project" }, - ["f*"] = { " FzfLua live_grep_glob ", "FzfLua grep with glob (SPACE-- globs)" }, - - -- continue - -- ["fr"] = { " FzfLua resume ", "FzfLua resume last search" }, - - -- [";"] = { " FzfLua buffers ", "FzfLua find buffers" }, - -- ["fb"] = { " FzfLua builtin ", "FzfLua builtins" }, - -- ["fh"] = { " FzfLua help_tags ", "FzfLua find help pages" }, - -- ["fm"] = { " FzfLua marks ", "FzfLua marks" }, - -- ["fo"] = { " FzfLua oldfiles ", "FzfLua find oldfiles" }, - -- ["tk"] = { " FzfLua keymaps ", "FzfLua show keymaps" }, - - } -} --}}} - -M.telescope = { --{{{ - plugin = true, - - n = { - -- find - -- ["ff"] = { " Telescope find_files ", "find files" }, - -- [""] = { " Telescope find_files ", "find files" }, - -- - ["fa"] = { " Telescope find_files follow=true no_ignore=true hidden=true ", "find all" }, - [""] = { function () - local ignored_bufs = { - "qf", - } - for _, ignored in ipairs(ignored_bufs) do - if vim.bo.filetype == ignored then - local default_keyseq = termcodes("") - vim.api.nvim_feedkeys(default_keyseq, 'n', false) - return - end - end - vim.cmd "Telescope find_files" - end, "FzfLua find files" }, - ["f."] = { " Telescope live_grep ", "telescope live grep" }, - ["fw"] = { " Telescope grep_string ", "telescope grep cword" }, - [";"] = { " Telescope buffers ", "telescope find buffers" }, - ["fb"] = { " Telescope builtin ", "telescope builtins" }, - ["fB"] = { " Telescope vim_bookmarks ", "telescope bookmarks" }, - ["fh"] = { " Telescope help_tags ", "help page" }, - ["fo"] = { " Telescope oldfiles ", "telescope find oldfiles" }, - ["fm"] = { " Telescope marks ", "Telescope marks" }, - ["fM"] = { " Telescope man_pages ", "Telescope marks" }, - ["tk"] = { " Telescope keymaps ", "Telescope show keys" }, - ["fr"] = { " Telescope resume ", "telescope resume last search" }, - - -- git - ["fg"] = { " ", "telescope git commands" }, - ["fgc"] = { " Telescope git_commits ", "teles git commits" }, - ["fgs"] = { " Telescope git_status ", "teles git status" }, - ["fgf"] = { " Telescope git_files ", "teles git files" }, - - -- pick a hidden term - -- ["pt"] = { " Telescope terms ", "pick hidden term" }, - - -- theme switcher - ["th"] = { " Telescope themes ", "nvchad themes" }, - }, -} --}}} - -M.nvterm = { --{{{ - plugin = true, - - t = { - -- toggle in terminal mode - [""] = { - function() - require("nvterm.terminal").toggle "float" - end, - "toggle floatinvg term", - }, - - [""] = { - function() - require("nvterm.terminal").toggle "horizontal" - end, - "toggle horizontal term", - }, - }, - - n = { - -- toggle in normal mode - [""] = { - function() - require("nvterm.terminal").toggle "float" - end, - "toggle floating term", - }, - - [""] = { - function() - require("nvterm.terminal").toggle "horizontal" - end, - "toggle horizontal term", - }, - - [""] = { - function() - require("nvterm.terminal").toggle "vertical" - end, - "toggle vertical term", - }, - - -- new - - ["h"] = { - function() - require("nvterm.terminal").new "horizontal" - end, - "new horizontal term", - }, - - ["v"] = { - function() - require("nvterm.terminal").new "vertical" - end, - "new vertical term", - }, - }, -} --}}} - -M.whichkey = { --{{{ - plugin = true, - - n = { - ["wK"] = { - function() - vim.cmd "WhichKey" - end, - "which-key all keymaps", - }, - ["wk"] = { - function() - local input = vim.fn.input "WhichKey: " - vim.cmd("WhichKey " .. input) - end, - "which-key query lookup", - }, - }, -} --}}} - -M.blankline = { --{{{ - plugin = true, - - n = { - ["cc"] = { - function() - local ok, start = require("indent_blankline.utils").get_current_context( - vim.g.indent_blankline_context_patterns, - vim.g.indent_blankline_use_treesitter_scope - ) - - if ok then - vim.api.nvim_win_set_cursor(vim.api.nvim_get_current_win(), { start, 0 }) - vim.cmd [[normal! _]] - end - end, - - "Jump to current context", - }, - }, -} --}}} - -M.navigator = {--{{{ - plugin = true, - n = { - [""] = { " lua require'navigator.treesitter'.side_panel()h", "toggle TreeSitter symbols panel " }, - [""] = { " lua require'navigator.symbols'.side_panel()h", "toggle LSP symbols panel" }, - } -}--}}} - -M.vista = { -- Tagbar equivalent using LSP {{{ - plugin = true, - n = { - [""] = { " Vista!! ", "toggle TreeSitter symbols " }, - }, -} --}}} - -M.asyncrun = { --{{{ - plugin = true, - - n = { - ["``"] = { " call asyncrun#quickfix_toggle(8)", "toggle quickfix window" }, - ["m"] = { ":AsyncRun -program=" .. vim.o.makeprg .. "", "make using asyncrun" }, - ["r"] = { ":AsyncRun ", "custom asyncrun command" }, - ["pd"] = { " AsyncRun lpr -P PDF_PRINT %", "PDF print file" }, - ["pp"] = { " AsyncRun lpr %" }, - }, -} --}}} - -M.vim_bookmarks = {--{{{ - n = { - ["m"] = {" Telescope vim_bookmarks", "show bookmarks"}, - ["mm"] = {" BookmarkToggle", "toggle bookmarks"}, - ["mm"] = {" BookmarkAnnotate", "annotation bookmarks"}, - ["mc"] = {" BookmarkClear", "clear bookmarks in buffer"}, - ["mx"] = {" BookmarkClearAll", "clear bookmarks in all buffers"}, - }, -}--}}} - -M.iron = { - plugin = true, - n = { - ["ir"] = {"IronRepl", "start IronRepl"}, - } - - -} - --- M.neorepl = { --- plugin = true, + -- line numbers + ["n"] = { " set nu! set rnu!", "toggle line number" }, + + -- option toggle cursor line + ["l"] = { " set cul!", "toggle line number" }, + ["c"] = {"cclose", "close quickfix"}, + + + -- update nvchad + -- ["uu"] = { " :NvChadUpdate ", "update nvchad" }, + + + -- lua source current file + [".."] = {" :w | source %", "save and source script "}, + [".m"] = { function () + local ok, core = pcall(require, "core") + if not ok then + return + end + -- reload nvchad mappings + require("plenary.reload").reload_module("core.utils") + require("plenary.reload").reload_module("core.default_config") + require("plenary.reload").reload_module("core.mappings") + require("core.utils").load_mappings() + print("mappings reloaded !") + end, "config reload mappings"}, + + ["ss"] = { " mks! ", "save session"}, + ["sl"] = { " source Session.vim ", "load session"}, + + ["tt"] = { + function() + require("base46").toggle_theme() + end, + "toggle theme", + }, + + + + -- luasnip edit snippets + ["sne"] = { + function() + require("luasnip.loaders").edit_snippet_files() + end, + "luasnip edit snippets" + }, + + -- Allow moving the cursor through wrapped lines with j, k, and + -- http://www.reddit.com/r/vim/comments/2k4cbr/problem_with_gj_and_gk/ + -- empty mode is same as using :map + -- also don't use g[j|k] when in operator pending mode, so it doesn't alter d, y or c behaviour + -- ["j"] = { 'v:count || mode(1)[0:1] == "no" ? "j" : "gj"', opts = { expr = true } }, + -- ["k"] = { 'v:count || mode(1)[0:1] == "no" ? "k" : "gk"', opts = { expr = true } }, + ["j"] = { "gj" }, + ["k"] = { "gk" }, + + -- new buffer + ["bb"] = { " enew ", "new buffer" }, + + -- new tab + [""] = { " tabe ", "new tab" }, + + + -- Fast tab NOTE:these are used for screen movements + -- [""] = { "gT", "Previous tab" }, + -- [""] = { "gt", "Previous tab" }, + + -- close buffer + hide terminal buffer + ["x"] = { + function() + require("core.utils").close_buffer() + end, + "close buffer", + }, + + -- quick close window + [""] = {"c", "close window"}, + + + + -- yank from cusor to eol to system and primary clipboard + -- Y handles until end of line + -- yy handles linewise + -- ["y"] = { '"*y$"+y$', "yank from cursor to eol to primary and clipboard" }, + + -- folding levels + -- ["fd"] = { function() + -- vim.ui.select({"fold level 0", "1", "2", "3", "4", "5", "6", "7"}, + -- { + -- prompt = "fold lvl: ", + -- }, + -- function(item, idx) + -- P(idx) + -- -- local foldlevel = tonumber(item) + -- -- if foldlevel == nil then P("need number for fold level !") end + -- -- vim.o.foldlevel = foldlevel + -- end) + -- end, + -- + -- "set fold level"}, + ["f0"] = { ":set foldlevel=0", "set fold level" }, + ["f1"] = { ":set foldlevel=1", "set fold level" }, + ["f2"] = { ":set foldlevel=2", "set fold level" }, + ["f3"] = { ":set foldlevel=3", "set fold level" }, + ["f4"] = { ":set foldlevel=4", "set fold level" }, + -- ["f5"] = { ":set foldlevel=5", "set fold level" }, + -- ["f6"] = { ":set foldlevel=6", "set fold level" }, + -- ["f7"] = { ":set foldlevel=7", "set fold level" }, + -- ["f8"] = { ":set foldlevel=8", "set fold level" }, + -- ["f9"] = { ":set foldlevel=9", "set fold level" }, + + ["tf"] = { " set foldmethod=expr| set foldexpr=nvim_treesitter#foldexpr()", + "enable Treesitter folding"}, + + ["en"] = { " cn ", "next error" }, + ["]e"] = { " cn ", "next error" }, + ["ep"] = { " cp ", "previous error" }, + ["[e"] = { " cp ", "previous error" }, + + + -- Tabularize mappings + ["a&"] = { " Tabularize /&" }, + ["a="] = { " Tabularize /^[^=]*\zs=" }, + ["a:"] = { " Tabularize /:" }, + ["a,"] = { " Tabularize /," }, + ["a"] = { " Tabularize /" }, + + + ["g."] = { ":cwd", "change dir to current file", opts = { remap = true } }, + ["g."] = { ":Gcd", "change dir to git root" }, + + -- Packer commands + -- + -- PackerSnapshot + ["pS"] = { function() + local snapname = "snapshot_" .. os.date("%Y_%m_%d_%H%M") + local packer = require 'packer' + packer.snapshot(snapname) + end + , "packer snapshot"}, + ["pst"] = { " PackerStatus", "packer status"}, + ["psc"] = { " PackerSync", "packer sync"}, + ["pc"] = { " PackerCompile", "packer compile"}, + + ["pr"] = { function() + + -- require("plenary.reload").reload_module("plugins") + -- require("plenary.reload").reload_module("custom.plugins") + -- vim.cmd "LuaCacheClear" + -- package.loaded["plugins"] = nil + -- + -- package.loaded["custom.plugins"] = nil + -- dofile(vim.fn.stdpath("config") .. '/lua/plugins/init.lua') + -- dofile(vim.fn.stdpath("config") .. '/lua/custom/plugins/init.lua') + -- + require("spike.utils").unload_lua_ns("plugins") + require("spike.utils").unload_lua_ns("custom") + require("plugins") + -- require("spike.utils").unload_lua_ns("custom") + vim.cmd "PackerCompile" + print("reloaded plugin config !") + end, + "packer reload/compile" + }, + + -- Notify cmd watcher (see /scripts/utils/fifo_watch.sh) + [","] = { + function() + local fifo_patch = "/tmp/fifo_vimnotify" + os.execute("echo do >" .. fifo_patch) + end, + "notify " + }, + + + -- TODO: move to lspconfig section + -- ["lsp"] = { " lua require('custom.plugins.configs.navigator').enable()", "lsp enable"}, + ["lsp"] = { " LspStart", "lsp enable"}, + [""] = { " LspStart", "lsp enable"}, + [""] = { " LspStop", "lsp disable"}, + ["lst"] = { " LspStop", "lsp disable"}, + + + + --------------- + -- Programming languages specifics + --------------- + + -- config files + ["ev"] = {" source ~/.config/nvim/Session.vim" , "edit vim config"}, + },--}}} + + t = { [""] = { termcodes "", "escape terminal mode" } }, + + v = {--{{{ + -- ["j"] = { 'v:count || mode(1)[0:1] == "no" ? "j" : "gj"', opts = { expr = true } }, + -- ["k"] = { 'v:count || mode(1)[0:1] == "no" ? "k" : "gk"', opts = { expr = true } }, + ["j"] = { "gj" }, + ["k"] = { "gk" }, + -- Don't copy the replaced text after pasting in visual mode + -- https://vim.fandom.com/wiki/Replace_a_word_with_yanked_text#Alternative_mapping_for_paste + ["p"] = { 'p:let @+=@0:let @"=@0', opts = { silent = true } }, + + -- yank from cursor to eol to system and primary clipboard + ["y"] = { '"*y gv"+y', "yank line to clipboards" }, + + -- visual shifting + ["<"] = { ""] = { ">gv" }, + + -- Allow using the repeat operator with a visual selection (!) + -- http://stackoverflow.com/a/8064607/127816 + ["."] = { ":normal .", opts = { silent = true } }, + + -- Tabularize mappings + ["a&"] = { " Tabularize /&" }, + ["a="] = { " Tabularize /^[^=]*\zs=" }, + ["a:"] = { " Tabularize /:" }, + ["a,"] = { " Tabularize /," }, + ["a"] = { " Tabularize /" }, + + },--}}} + + -- command line mappings + c = {--{{{ + ["Tabe"] = { "tabe" }, + + -- Change Working Directory to that of the current file + ["cwd"] = { "lcd %:p:h", "change dir to current file" }, + ["cd."] = { "lcd %:p:h", "change dir to current file" }, + ["w!!"] = { "w !doas tee %", "write file with root perms" }, + ["%%"] = { "=fnameescape(expand('%:h')).'/'", + "alias to current working dir"}, + ["Tab"] = { "Tabularize"}, + + + ["%c"] = { "~/.config/nvim/", "shortcut to nvim config dir"}, + -- ["tsf"] = { "set foldmethod=expr | set foldexpr=nvim_treesitter#foldexpr()", + -- "enable Treesitter folding"} + }--}}} + } --}}} + + M.tabufline = { --{{{ + plugin = true, + + n = { + -- cycle through buffers + [""] = { + function() + require("core.utils").tabuflineNext() + end, + "goto next buffer", + }, + + [""] = { + function() + require("core.utils").tabuflinePrev() + end, + "goto prev buffer", + }, + + -- pick buffers via numbers + [""] = { " TbufPick ", "Pick buffer" }, + }, + } --}}} + + M.comment = { --{{{ + plugin = true, + + -- toggle comment in both modes + n = { + ["/"] = { + function() + -- require("Comment.api").toggle.linewise.current() + vim.notify("use gcc !") + end, + "toggle comment", + }, + }, + + v = { + ["/"] = { + function() + vim.notify("use gcc !") + end, + -- "lua require('Comment.api').toggle.linewise(vim.fn.visualmode())", + "toggle comment", + }, + }, + } --}}} + + M.lspconfig = { --{{{ + plugin = true, + + -- See ` :help vim.lsp.*` for documentation on any of the below functions + + n = { + ["gD"] = { + function() + vim.lsp.buf.declaration() + end, + "lsp declaration", + }, + + ["gd"] = { + function() + vim.lsp.buf.definition() + end, + "lsp definition", + }, + + ["K"] = { + function() + vim.lsp.buf.hover() + end, + "lsp hover", + }, + + ["gm"] = { + function() + vim.lsp.buf.implementation() + end, + "lsp implementation", + }, + + ["ls"] = { + function() + vim.lsp.buf.signature_help() + end, + "lsp signature_help", + }, + + ["D"] = { + function() + vim.lsp.buf.type_definition() + end, + "lsp definition type", + }, + + ["ra"] = { + function() + require("nvchad_ui.renamer").open() + end, + "lsp rename", + }, + + ["ca"] = { + function() + vim.lsp.buf.code_action() + end, + "lsp code_action", + }, + + ["gr"] = { + function() + vim.lsp.buf.references() + end, + "lsp references", + }, + + ["f"] = { + function() + vim.diagnostic.open_float() + end, + "lsp floating diagnostic", + }, + + ["[d"] = { + function() + vim.diagnostic.goto_prev() + end, + "lsp goto prev", + }, + + ["d]"] = { + function() + vim.diagnostic.goto_next() + end, + "lsp goto_next", + }, + + ["q"] = { + function() + vim.diagnostic.setloclist() + end, + "lsp diagnostic setloclist", + }, + + ["fm"] = { + function() + vim.lsp.buf.formatting {} + end, + "lsp formatting", + }, + + ["wa"] = { + function() + vim.lsp.buf.add_workspace_folder() + end, + "lsp add workspace folder", + }, + + ["wr"] = { + function() + vim.lsp.buf.remove_workspace_folder() + end, + "lsp remove workspace folder", + }, + + ["wl"] = { + function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end, + "lsp list workspace folders", + }, + }, + } --}}} + + M.dap = {-- {{{ + plugin = true, + n = { + ["ds"] = { + function() + if vim.o.filetype == "go" then + local spdap = require("spike.dap") + spdap.setup() + spdap.go_debug() + + end + end, + "start dap session" + }, + + ["dS"] = { + function() + if vim.o.filetype == "go" then + vim.cmd("GoDbgStop") + end + end, + "stop dap session" + }, + + ["dd"] = {" DapToggleBreakpoint "}, + + ["dc"] = { + function() + vim.ui.input({ prompt = "condition> "}, function(input) + require("dap").set_breakpoint(input) + end) + end, + "dap conditional breakpoint" + }, + ["dm"] = { + function() + require("spike.dapmode").start() + end, + "enter dap mode" + } + }, + + }-- }}} + + M.nvimtree = { --{{{ + plugin = true, + + n = { + -- toggle + [""] = { " NvimTreeToggle ", "toggle nvimtree" }, + }, + } --}}} + + M.fzf_lua = { --{{{ + plugin = true, + + n = { + -- find + -- [""] = { " FzfLua files ", "FzfLua find files" }, + -- [""] = { function () + -- local ignored_bufs = { + -- "qf", + -- } + -- for _, ignored in ipairs(ignored_bufs) do + -- if vim.bo.filetype == ignored then + -- local default_keyseq = termcodes("") + -- vim.api.nvim_feedkeys(default_keyseq, 'n', false) + -- return + -- end + -- end + -- vim.cmd "FzfLua files" + -- end, "FzfLua find files" }, + + ["fl"] = { " FzfLua lines ", "FzfLua grep open buffer lines" }, + + -- grep + -- ["fw"] = { " FzfLua grep_cword ", "FzfLua grep cword" }, + -- ["f."] = { " FzfLua live_grep_native ", "FzfLua grep live native" }, + -- ["ff"] = { " FzfLua grep_project ", "FzfLua grep live project" }, + ["f*"] = { " FzfLua live_grep_glob ", "FzfLua grep with glob (SPACE-- globs)" }, + + -- continue + -- ["fr"] = { " FzfLua resume ", "FzfLua resume last search" }, + + -- [";"] = { " FzfLua buffers ", "FzfLua find buffers" }, + -- ["fb"] = { " FzfLua builtin ", "FzfLua builtins" }, + -- ["fh"] = { " FzfLua help_tags ", "FzfLua find help pages" }, + -- ["fm"] = { " FzfLua marks ", "FzfLua marks" }, + -- ["fo"] = { " FzfLua oldfiles ", "FzfLua find oldfiles" }, + -- ["tk"] = { " FzfLua keymaps ", "FzfLua show keymaps" }, + + } + } --}}} + + M.telescope = { --{{{ + plugin = true, + + n = { + -- find + -- ["ff"] = { " Telescope find_files ", "find files" }, + -- [""] = { " Telescope find_files ", "find files" }, + -- + ["fa"] = { " Telescope find_files follow=true no_ignore=true hidden=true ", "find all" }, + [""] = { function () + local ignored_bufs = { + "qf", + } + for _, ignored in ipairs(ignored_bufs) do + if vim.bo.filetype == ignored then + local default_keyseq = termcodes("") + vim.api.nvim_feedkeys(default_keyseq, 'n', false) + return + end + end + vim.cmd "Telescope find_files" + end, "FzfLua find files" }, + ["f."] = { " Telescope live_grep ", "telescope live grep" }, + ["fw"] = { " Telescope grep_string ", "telescope grep cword" }, + [";"] = { " Telescope buffers ", "telescope find buffers" }, + ["fb"] = { " Telescope builtin ", "telescope builtins" }, + ["fB"] = { " Telescope vim_bookmarks ", "telescope bookmarks" }, + ["fh"] = { " Telescope help_tags ", "help page" }, + ["fo"] = { " Telescope oldfiles ", "telescope find oldfiles" }, + ["fm"] = { " Telescope marks ", "Telescope marks" }, + ["fM"] = { " Telescope man_pages ", "Telescope marks" }, + ["tk"] = { " Telescope keymaps ", "Telescope show keys" }, + ["fr"] = { " Telescope resume ", "telescope resume last search" }, + + -- git + ["fg"] = { " ", "telescope git commands" }, + ["fgc"] = { " Telescope git_commits ", "teles git commits" }, + ["fgs"] = { " Telescope git_status ", "teles git status" }, + ["fgf"] = { " Telescope git_files ", "teles git files" }, + + -- pick a hidden term + -- ["pt"] = { " Telescope terms ", "pick hidden term" }, + + -- theme switcher + ["th"] = { " Telescope themes ", "nvchad themes" }, + }, + } --}}} + + M.nvterm = { --{{{ + plugin = true, + + t = { + -- toggle in terminal mode + [""] = { + function() + require("nvterm.terminal").toggle "float" + end, + "toggle floatinvg term", + }, + + [""] = { + function() + require("nvterm.terminal").toggle "horizontal" + end, + "toggle horizontal term", + }, + }, + + n = { + -- toggle in normal mode + [""] = { + function() + require("nvterm.terminal").toggle "float" + end, + "toggle floating term", + }, + + [""] = { + function() + require("nvterm.terminal").toggle "horizontal" + end, + "toggle horizontal term", + }, + + [""] = { + function() + require("nvterm.terminal").toggle "vertical" + end, + "toggle vertical term", + }, + + -- new + + ["h"] = { + function() + require("nvterm.terminal").new "horizontal" + end, + "new horizontal term", + }, + + ["v"] = { + function() + require("nvterm.terminal").new "vertical" + end, + "new vertical term", + }, + }, + } --}}} + + M.whichkey = { --{{{ + plugin = true, + + n = { + ["wK"] = { + function() + vim.cmd "WhichKey" + end, + "which-key all keymaps", + }, + ["wk"] = { + function() + local input = vim.fn.input "WhichKey: " + vim.cmd("WhichKey " .. input) + end, + "which-key query lookup", + }, + }, + } --}}} + + M.blankline = { --{{{ + plugin = true, + + n = { + ["cc"] = { + function() + local ok, start = require("indent_blankline.utils").get_current_context( + vim.g.indent_blankline_context_patterns, + vim.g.indent_blankline_use_treesitter_scope + ) + + if ok then + vim.api.nvim_win_set_cursor(vim.api.nvim_get_current_win(), { start, 0 }) + vim.cmd [[normal! _]] + end + end, + + "Jump to current context", + }, + }, + } --}}} + + M.navigator = {--{{{ + plugin = true, + n = { + [""] = { " lua require'navigator.treesitter'.side_panel()h", "toggle TreeSitter symbols panel " }, + [""] = { " lua require'navigator.symbols'.side_panel()h", "toggle LSP symbols panel" }, + } + }--}}} + + M.vista = { -- Tagbar equivalent using LSP {{{ + plugin = true, + n = { + [""] = { " Vista!! ", "toggle TreeSitter symbols " }, + }, + } --}}} + + M.asyncrun = { --{{{ + plugin = true, + + n = { + -- TODO: find new mapping to close quickfix + -- ["``"] = { " call asyncrun#quickfix_toggle(8)", "toggle quickfix window" }, + ["m"] = { ":AsyncRun -program=" .. vim.o.makeprg .. "", "make using asyncrun" }, + ["r"] = { ":AsyncRun ", "custom asyncrun command" }, + ["pd"] = { " AsyncRun lpr -P PDF_PRINT %", "PDF print file" }, + ["pp"] = { " AsyncRun lpr %" }, + }, + } --}}} + + M.vim_bookmarks = {--{{{ + n = { + ["m"] = {" Telescope vim_bookmarks", "show bookmarks"}, + ["mk"] = {" BookmarkToggle", "toggle bookmarks"}, + ["mm"] = {" BookmarkAnnotate", "annotation bookmarks"}, + ["mc"] = {" BookmarkClear", "clear bookmarks in buffer"}, + ["mx"] = {" BookmarkClearAll", "clear bookmarks in all buffers"}, + ["]b"] = {"BookmarkNext", "jump to next bookmark"}, + ["[b"] = {"BookmarkNext", "jump to prev bookmark"}, + }, + }--}}} + + M.iron = {-- {{{{{{ + plugin = true, + n = { + ["ir"] = {"IronRepl", "start IronRepl"}, + } + } +-- }}} -- --- i = { --- ["C-p"] = { "(neorepl-hist-prev)"}, --- } + -- color picker + M.ccc = { + plugin = true, + n = { + ["cp"] = {"CccPick", "color picker"} + }, + } +-- }}} + + -- M.neorepl = {{{{ + -- plugin = true, + -- + -- i = { + -- ["C-p"] = { "(neorepl-hist-prev)"}, + -- } + -- + -- } +-- }}} +-- +-- extra mappings for golang +M.golang = { + plugin = true, + n = { + ["da"] = { " GoDebug -a", "go debug attach" }, + } +} -- --- } - return M diff --git a/lua/core/options.lua b/lua/core/options.lua index a17f864..22c8b37 100644 --- a/lua/core/options.lua +++ b/lua/core/options.lua @@ -29,10 +29,10 @@ opt.rulerformat = "%30(%=:b%n%y%m%r%w %l,%c%V %P%)" -- NvChad has custom ruler ! -- Indenting opt.expandtab = true -- Tabs are spaces, not tabs -opt.shiftwidth = 2 -- use indents of 2 spaces +opt.shiftwidth = 4 -- use indents of 2 spaces opt.smartindent = true -- smart indent when starting new lines -opt.tabstop = 2 -- number of spaces when tab pressed -opt.softtabstop = 2 -- Let backspace delete indent +opt.tabstop = 4 -- number of spaces when tab pressed +opt.softtabstop = 4 -- Let backspace delete indent -- http://vim.wikia.com/wiki/Converting_tabs_to_spaces opt.tabpagemax = 10 @@ -78,9 +78,11 @@ opt.formatoptions:append("b") -- Auto-wrap text based on textwidt opt.matchpairs:append("<:>") +opt.guicursor = {"n-v-c-sm:block-blinkwait50-blinkon200-blinkoff200", "i-ci-ve:ver25", "r-cr-o:hor20"} + -- Lines to scroll when cursor leaves screen opt.scrolljump=5 -opt.scrolloff=3 +opt.scrolloff=2 -- Allow :find to work on all subdirectories -- this only works when the original dir path is not changed @@ -99,6 +101,17 @@ opt.signcolumn = "yes" opt.splitbelow = true opt.splitright = true opt.termguicolors = true + +-- if vim.fn.exists("+termguicolors") then +-- vim.go.t_8f = "[38:2:%lu:%lu:%lum" +-- vim.go.t_8b = "[48:2:%lu:%lu:%lum" +-- end + +if vim.g.neovide then + opt.g.neovide_cursor_trail_size=0.3 + opt.g.neovide_cursor_animation_length=0.10 + opt.guifont = "ProFontIIx Nerd Font Mono:h10" +end opt.timeoutlen = 400 opt.undofile = true diff --git a/lua/custom/plugins/configs/navigator.lua b/lua/custom/plugins/configs/navigator.lua index 75fccc0..9001cc3 100644 --- a/lua/custom/plugins/configs/navigator.lua +++ b/lua/custom/plugins/configs/navigator.lua @@ -31,9 +31,9 @@ local config = { { key = 'gT', func = require('navigator.treesitter').bufs_ts, desc = 'lsp bufs_ts' }, { key = 'ct', func = require('navigator.ctags').ctags, desc = 'lsp ctags' }, { key = 'K', func = vim.lsp.buf.hover, desc = 'lsp hover' }, - { key = '', mode = 'n', func = require('navigator.codeAction').code_action, desc = 'lsp code_action' }, + { key = '', mode = 'n', func = require('navigator.codeAction').code_action, desc = 'lsp code_action' }, { - key = '', + key = '', mode = 'v', func = require('navigator.codeAction').range_code_action, desc = 'lsp range_code_action', diff --git a/lua/custom/plugins/configs/todo-comments.lua b/lua/custom/plugins/configs/todo-comments.lua index 2f4ef79..476a69f 100644 --- a/lua/custom/plugins/configs/todo-comments.lua +++ b/lua/custom/plugins/configs/todo-comments.lua @@ -9,6 +9,7 @@ M = {} local config = { keywords = { ["_TODO"] = { color = "warning"}, + ["LEARN"] = { color = "hint" }, }, colors = { info = {"#2563EB"}, diff --git a/lua/custom/plugins/configs/treesitter.lua b/lua/custom/plugins/configs/treesitter.lua index f29cc00..41863a7 100644 --- a/lua/custom/plugins/configs/treesitter.lua +++ b/lua/custom/plugins/configs/treesitter.lua @@ -30,7 +30,7 @@ return { }, incremental_selection = { - enable = false, + enable = true, keymaps = { init_selection = "", node_incremental = "", @@ -39,14 +39,15 @@ return { } }, - textsubjects = { - enable = true, - prev_selection = "", - keymaps = { - [""] = "textsubjects-smart", -- works in visual mode - } - }, + -- textsubjects = { + -- enable = true, + -- prev_selection = "", + -- keymaps = { + -- [""] = "textsubjects-smart", -- works in visual mode + -- } + -- }, + -- rainbow = { enable = true, extended_mode = true, @@ -84,20 +85,18 @@ return { goto_next_start = { ["]]"] = "@function.outer", - ["]m"] = "@class.outer" + ["]C"] = "@class.outer", }, goto_next_end = { ["]["] = "@function.outer", - ["]M"] = "@class.outer" }, goto_previous_start = { ["[["] = "@function.outer", - ["[m"] = "@class.outer" + ["[C"] = "@class.outer" }, goto_previous_end = { ["[]"] = "@function.outer", - ["[M"] = "@class.outer" } }, diff --git a/lua/custom/plugins/init.lua b/lua/custom/plugins/init.lua index 203c442..4cd98e5 100644 --- a/lua/custom/plugins/init.lua +++ b/lua/custom/plugins/init.lua @@ -162,7 +162,7 @@ return { }, ["rcarriga/nvim-dap-ui"] = { - lock = true, + tag = "*", after = "nvim-dap", }, @@ -186,6 +186,8 @@ return { ["nvim-telescope/telescope.nvim"] = { -- lock = true, + after = "vim-hardtime", + tag = "*", disable = false, }, @@ -219,8 +221,23 @@ return { end },-- }}} + -- Theme customization + ["uga-rosa/ccc.nvim"] = { + commit = "427471b", + cmd = {"Ccc*", "(ccc-insert)"}, + setup = function() + require("core.utils").load_mappings "ccc" + end, + config = function() + require("ccc").setup({}) + end + }, -- navigation / jumps + -- ["justinmk/vim-sneak"] = { + -- lock = true, + -- keys = {"s", "S"}, + -- }, ["ggandor/leap.nvim"] = {-- {{{ config = function() @@ -228,6 +245,11 @@ return { end },-- }}} + ["christoomey/vim-tmux-navigator"] = { + cond = function() + return vim.env.TMUX ~= nil + end + }, -- Job management (use nvim startjob ) -- Run async commands (make & errors) @@ -259,12 +281,6 @@ return { -- end -- }, - -- text formatting and navigation - - -- ["justinmk/vim-sneak"] = { - -- lock = true, - -- keys = {"s", "S"}, - -- }, -- -- Misc / General plugins @@ -288,14 +304,25 @@ return { -- get rid of bad habits ["takac/vim-hardtime"] = { + -- keys = { "h", "j", "k", "l" }, setup = function() vim.g.hardtime_default_on = 1 vim.g.hardtime_showmsg = 1 vim.g.list_of_normal_keys = {"h","j","k","l"} vim.g.list_of_visual_keys = {"h","j","k","l"} - vim.g.hardtime_ignore_buffer_patterns = { "help", "NERD.*" } - vim.g.hardtime_maxcount = 2 + vim.g.hardtime_ignore_buffer_patterns = { + "qf*", + "help", + "NERD.*", + "netrw", + "TelescopePrompt", + "fugitive", + } + vim.g.hardtime_maxcount = 2 + end, + config = function() + vim.cmd("HardTimeOn") end }, diff --git a/lua/plugins/init.lua b/lua/plugins/init.lua index 1732729..c492ecc 100644 --- a/lua/plugins/init.lua +++ b/lua/plugins/init.lua @@ -26,7 +26,7 @@ local plugins = { }, ["NvChad/ui"] = { - lock = true, + lock = false, after = "base46", config = function() require("plugins.configs.others").nvchad_ui() diff --git a/lua/spike/dapmode.lua b/lua/spike/dapmode.lua index d676167..6349f61 100644 --- a/lua/spike/dapmode.lua +++ b/lua/spike/dapmode.lua @@ -56,6 +56,24 @@ local config = { end, desc = "[dap] run to curosr" }, + W = { + rhs = function() + require("dapui").float_element('watches') + end, + desc = '[dapui] float watches' + }, + B = { + rhs = function() + require("dapui").float_element('breakpoints') + end, + desc = '[dapui] float breakpoints' + }, + O = { + rhs = function() + require("dapui").float_element('scopes') + end, + desc = '[dapui] float scopes' + }, ["Q"] = { rhs = function() M.layer:exit() diff --git a/lua/spike/lsp/go.lua b/lua/spike/lsp/go.lua index 8415895..cc84bbc 100644 --- a/lua/spike/lsp/go.lua +++ b/lua/spike/lsp/go.lua @@ -4,7 +4,6 @@ local augroup = vim.api.nvim_create_augroup local autocmd = vim.api.nvim_create_autocmd local M = {} - local augroupname = "spike.go" -- Navigator custom on_attach for golang @@ -17,16 +16,17 @@ function M.gopls_onattach(client, bufnr) return end - augroup(augroupname, {}) + autocmd({"BufWritePre", "InsertLeave"}, { - group = augroupname, + group = augroup(augroupname, {clear = true}), buffer = bufnr, callback = function() goformat.goimport() end - - }) + + require("core.utils").load_mappings "golang" + end return M