diff --git a/after/plugin/treesitter.lua b/after/plugin/treesitter.lua new file mode 100644 index 0000000..4945670 --- /dev/null +++ b/after/plugin/treesitter.lua @@ -0,0 +1,13 @@ +if not pcall(require, "nvim-treesitter") then + return +end + +local list = require("nvim-treesitter.parsers").get_parser_configs() + +list.sql = { + install_info = { + url = "https://github.com/DerekStride/tree-sitter-sql", + files = { "src/parser.c" }, + branch = "main", + }, +} diff --git a/lua/core/mappings.lua b/lua/core/mappings.lua index b2bd2f2..46a49d5 100644 --- a/lua/core/mappings.lua +++ b/lua/core/mappings.lua @@ -84,7 +84,11 @@ M.general = { --{{{ -- option toggle cursor line ["l"] = { " set cul!", "toggle line number" }, - ["c"] = {"cclose", "close quickfix"}, + + ["c"] = {"ccloselclose", "close quickfix"}, + + ["d"] = {"DelayTrainToggle", "disable delay train"}, + -- update nvchad @@ -243,10 +247,8 @@ M.general = { --{{{ return "g@l" end, "TS swap left with sibling", opts = { expr = true}}, - ["]e"] = { " cn ", "next error" }, - ["en"] = { " cn ", "next error" }, - ["ep"] = { " cp ", "previous error" }, - ["[e"] = { " cp ", "previous error" }, + ["]e"] = { " cn ", "quickfix next error" }, + ["[e"] = { " cp ", "quickfix previous error" }, -- Tabularize mappings @@ -328,9 +330,7 @@ M.general = { --{{{ -- ["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" }, @@ -372,6 +372,11 @@ M.general = { --{{{ -- visual exclusive mode (ignore select) x = { -- {{{ + + -- 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 } }, + -- syntax-tree-surfer ["J"] = {"STSSelectNextSiblingNode", "select next sibling node"}, ["K"] = {"STSSelectPrevSiblingNode", "select prev sibling node"}, @@ -686,9 +691,11 @@ M.general = { --{{{ function () local ignored_bufs = { "qf", + "guihua", + "NvimT*" } for _, ignored in ipairs(ignored_bufs) do - if vim.bo.filetype == ignored then + if vim.o.filetype:match(ignored) then local default_keyseq = termcodes("") vim.api.nvim_feedkeys(default_keyseq, 'n', false) return @@ -707,6 +714,7 @@ M.general = { --{{{ ["fM"] = { " Telescope man_pages ", "Telescope marks" }, ["tk"] = { " Telescope keymaps ", "Telescope show keys" }, ["fr"] = { " Telescope resume ", "telescope resume last search" }, + ["fc"] = { " Telescope commands ", "telescope commands" }, -- git ["fg"] = { " ", "telescope git commands" }, @@ -807,7 +815,7 @@ M.general = { --{{{ plugin = true, n = { - ["cc"] = { + ["k"] = { function() local ok, start = require("indent_blankline.utils").get_current_context( vim.g.indent_blankline_context_patterns, @@ -825,19 +833,13 @@ M.general = { --{{{ }, } --}}} - M.navigator = {--{{{ + -- code outline panel + M.aerial = { plugin = true, n = { - [""] = { " lua require'navigator.treesitter'.side_panel()h", "toggle TreeSitter symbols panel " }, + [""] = {" AerialToggle! right"}, } - }--}}} - - M.vista = { -- Tagbar equivalent using LSP {{{ - plugin = true, - n = { - [""] = { " Vista!! ", "toggle TreeSitter symbols " }, - }, - } --}}} + } M.asyncrun = { --{{{ plugin = true, diff --git a/lua/custom/chadrc.lua b/lua/custom/chadrc.lua index d51f400..a91296b 100644 --- a/lua/custom/chadrc.lua +++ b/lua/custom/chadrc.lua @@ -14,7 +14,7 @@ local colors = { -- vim.tbl_deep_extend("force", M.ui.hl_add, custom_theme) M.ui = { - theme = "monekai", + theme = "gruvbox_light", theme_toggle = { "monekai", "gruvbox_light" }, hl_override = { Comment = { diff --git a/lua/custom/init.lua b/lua/custom/init.lua index 00933e5..f81666d 100644 --- a/lua/custom/init.lua +++ b/lua/custom/init.lua @@ -21,16 +21,16 @@ vim.opt.runtimepath:prepend(vimscriptsfolder) -- Shift key typos{ vim.cmd [[ - command! -bang -nargs=* -complete=file E e - command! -bang -nargs=* -complete=file W w - command! -bang -nargs=* -complete=file Wq wq - command! -bang -nargs=* -complete=file WQ wq - command! -nargs=* -complete=help H h - command! -bang Wa wa - command! -bang WA wa - command! -bang Q q - command! -bang QA qa - command! -bang Qa qa + command! -bang -nargs=* -complete=file E e + command! -bang -nargs=* -complete=file W w + command! -bang -nargs=* -complete=file Wq wq + command! -bang -nargs=* -complete=file WQ wq + command! -nargs=* -complete=help H h + command! -bang Wa wa + command! -bang WA wa + command! -bang Q q + command! -bang QA qa + command! -bang Qa qa ]] --} @@ -44,7 +44,7 @@ vim.cmd [[ au! execute "au BufEnter " . dwm_file_patterns . " :lcd %:p:h" - execute "au BufWritePost " . dwm_file_patterns . " :AsyncRun! make clean && make && sudo make install" + execute "au BufWritePost " . dwm_file_patterns . " :AsyncRun! make clean && make -j $(nproc) && sudo make install" "au BufWrite */src/*/dwm*/{*.h,dwm.c} :AsyncRun! make clean && make && sudo make install augroup END ]] diff --git a/lua/custom/plugins/configs/navigator.lua b/lua/custom/plugins/configs/navigator.lua index 0e085ec..53b28e8 100644 --- a/lua/custom/plugins/configs/navigator.lua +++ b/lua/custom/plugins/configs/navigator.lua @@ -13,7 +13,7 @@ local config = { default_mapping = false, keymaps = { { key = 'gr', func = require('navigator.reference').async_ref, desc = 'lsp async_ref' }, - { key = 'gr', func = require('navigator.reference').reference, desc = 'lsp reference' }, -- reference deprecated + -- { key = 'gr', func = require('navigator.reference').reference, desc = 'lsp reference' }, -- reference deprecated { key = '', mode = 'i', @@ -42,9 +42,9 @@ local config = { }, -- { key = 're', func = 'rename()' }, { key = 'rn', func = require('navigator.rename').rename, desc = 'lsp rename' }, - { key = 'gc', func = vim.lsp.buf.incoming_calls, desc = 'lsp incoming_calls' }, + { key = 'gi', func = vim.lsp.buf.incoming_calls, desc = 'lsp incoming_calls' }, { key = 'go', func = vim.lsp.buf.outgoing_calls, desc = 'lsp outgoing_calls' }, - { key = 'gi', func = vim.lsp.buf.implementation, desc = 'lsp implementation' }, + { key = 'gm', func = vim.lsp.buf.implementation, desc = 'lsp implementation' }, { key = 'D', func = vim.lsp.buf.type_definition, desc = 'lsp type_definition' }, { key = 'gL', func = require('navigator.diagnostics').show_diagnostics, desc = 'lsp show_diagnostics' }, { key = 'gG', func = require('navigator.diagnostics').show_buf_diagnostics, desc = 'lsp show_buf_diagnostics' }, @@ -144,6 +144,7 @@ local config = { }, diagnostic_scrollbar_sign = false, + display_diagnostic_qf = false, disable_lsp = {"clangd", "rust_analyzer"}, @@ -167,14 +168,16 @@ local config = { } }, - ["lua-dev"] = { + ["neodev"] = { library = { enabled = true, + runtime = true, + -- plugins = true, plugins = {"plenary.nvim"}, -- plugins = {"navigator.lua", "guihua.lua", "go.nvim", "plenary.nvim"}, - runtime = true, types = true, - } + }, + setup_jsonls = true, }, } } diff --git a/lua/custom/plugins/init.lua b/lua/custom/plugins/init.lua index b71a1c9..0199d6c 100644 --- a/lua/custom/plugins/init.lua +++ b/lua/custom/plugins/init.lua @@ -335,6 +335,12 @@ return { ["sindrets/diffview.nvim"] = { requires = {"nvim-lua/plenary.nvim"}, after = {"plenary.nvim"}, + + config = function() + require("diffview").setup({ + enhanced_diff_hl = true, + }) + end }, -- session and view @@ -390,6 +396,9 @@ return { "netrw", "neorepl", "dapui*", + "mason", + "guihua*", + "terminal*", }, }) end @@ -427,7 +436,7 @@ return { -- ------------------ ["neovim/nvim-lspconfig"] = { -- {{{ - after = { "lua-dev.nvim", "mason.nvim", "mason-lspconfig.nvim" }, + after = { "neodev.nvim", "mason.nvim", "mason-lspconfig.nvim" }, module = { "lspconfig" }, lock = false, config = function() @@ -444,7 +453,7 @@ return { end, }, ["ray-x/guihua.lua"] = { - lock = true, + lock = false, module = { "navigator" }, run = "cd lua/fzy && make", config = function() @@ -459,14 +468,14 @@ return { -- ["https://git.sp4ke.xyz/sp4ke/navigator.lua"] = -- ["ray-x/navigator.lua"] = { - lock = true, + lock = false, opt = true, module = "navigator", - after = { "nvim-lspconfig", "base46", "ui", "mason.nvim", "mason-lspconfig.nvim", "lua-dev.nvim" }, + after = { "nvim-lspconfig", "base46", "ui", "mason.nvim", "mason-lspconfig.nvim", "neodev.nvim" }, requires = { "neovim/nvim-lspconfig", "ray-x/guihua.lua", "nvim-treesitter/nvim-treesitter" }, setup = function() require("core.lazy_load").on_file_open "navigator.lua" - require("core.utils").load_mappings "navigator" + -- require("core.utils").load_mappings "navigator" end, config = function() require("custom.plugins.configs.navigator").setup() @@ -495,6 +504,16 @@ return { -- }, -- + ['stevearc/aerial.nvim'] = { + after = {"base46"}, + keys = {""}, + cmd = {"Aerial*"}, + config = function() + require("core.utils").load_mappings "aerial" + require('aerial').setup({}) + end + }, + -- ------------------------------------------------------- -- Programming Languages Plugins -- ------------------------------------------------------- @@ -561,10 +580,19 @@ return { -- Lua dev env -- check setup in configs/navigator.lua - ["folke/lua-dev.nvim"] = { - lock = true, - module = "lua-dev", - }, -- }}} + -- ["folke/lua-dev.nvim"] = { + -- lock = true, + -- module = "lua-dev", + -- }, -- }}} + + -- neodev (replaces lua-dev) + ["folke/neodev.nvim"] = { + -- commit = "d6212c1" + -- module = "neodev", + }, + ["hrsh7th/cmp-nvim-lua"] = { -- NOTE: needs to be disabled for neodev + disable = true, + }, -- golang dev @@ -588,4 +616,9 @@ return { end } -- }}} + -- sql tools + -- https://github.com/tpope/vim-dadbod + -- https://github.com/kristijanhusak/vim-dadbod-ui + + } diff --git a/lua/custom/plugins/nvchadui.lua b/lua/custom/plugins/nvchadui.lua index 54e2334..68f02a1 100644 --- a/lua/custom/plugins/nvchadui.lua +++ b/lua/custom/plugins/nvchadui.lua @@ -3,118 +3,139 @@ local fn = vim.fn local sep_style = vim.g.statusline_sep_style local separators = (type(sep_style) == "table" and sep_style) - or require("nvchad_ui.icons").statusline_separators[sep_style] + or require("nvchad_ui.icons").statusline_separators[sep_style] local sep_r = separators["right"] local myicons = require("custom.chadrc").ui.myicons local modes = { - ["n"] = { "NORMAL", "St_NormalMode" }, - ["niI"] = { "NORMAL i", "St_NormalMode" }, - ["niR"] = { "NORMAL r", "St_NormalMode" }, - ["niV"] = { "NORMAL v", "St_NormalMode" }, - ["no"] = { "N-PENDING", "St_NormalMode" }, - ["i"] = { "INSERT", "St_InsertMode" }, - ["ic"] = { "INSERT (completion)", "St_InsertMode" }, - ["ix"] = { "INSERT completion", "St_InsertMode" }, - ["t"] = { "TERMINAL", "St_TerminalMode" }, - ["nt"] = { "NTERMINAL", "St_NTerminalMode" }, - ["v"] = { "VISUAL", "St_VisualMode" }, - ["V"] = { "V-LINE", "St_VisualMode" }, - ["Vs"] = { "V-LINE (Ctrl O)", "St_VisualMode" }, - [""] = { "V-BLOCK", "St_VisualMode" }, - ["R"] = { "REPLACE", "St_ReplaceMode" }, - ["Rv"] = { "V-REPLACE", "St_ReplaceMode" }, - ["s"] = { "SELECT", "St_SelectMode" }, - ["S"] = { "S-LINE", "St_SelectMode" }, - [""] = { "S-BLOCK", "St_SelectMode" }, - ["c"] = { "COMMAND", "St_CommandMode" }, - ["cv"] = { "COMMAND", "St_CommandMode" }, - ["ce"] = { "COMMAND", "St_CommandMode" }, - ["r"] = { "PROMPT", "St_ConfirmMode" }, - ["rm"] = { "MORE", "St_ConfirmMode" }, - ["r?"] = { "CONFIRM", "St_ConfirmMode" }, - ["!"] = { "SHELL", "St_TerminalMode" }, + ["n"] = { "NORMAL", "St_NormalMode" }, + ["niI"] = { "NORMAL i", "St_NormalMode" }, + ["niR"] = { "NORMAL r", "St_NormalMode" }, + ["niV"] = { "NORMAL v", "St_NormalMode" }, + ["no"] = { "N-PENDING", "St_NormalMode" }, + ["i"] = { "INSERT", "St_InsertMode" }, + ["ic"] = { "INSERT (completion)", "St_InsertMode" }, + ["ix"] = { "INSERT completion", "St_InsertMode" }, + ["t"] = { "TERMINAL", "St_TerminalMode" }, + ["nt"] = { "NTERMINAL", "St_NTerminalMode" }, + ["v"] = { "VISUAL", "St_VisualMode" }, + ["V"] = { "V-LINE", "St_VisualMode" }, + ["Vs"] = { "V-LINE (Ctrl O)", "St_VisualMode" }, + [""] = { "V-BLOCK", "St_VisualMode" }, + ["R"] = { "REPLACE", "St_ReplaceMode" }, + ["Rv"] = { "V-REPLACE", "St_ReplaceMode" }, + ["s"] = { "SELECT", "St_SelectMode" }, + ["S"] = { "S-LINE", "St_SelectMode" }, + [""] = { "S-BLOCK", "St_SelectMode" }, + ["c"] = { "COMMAND", "St_CommandMode" }, + ["cv"] = { "COMMAND", "St_CommandMode" }, + ["ce"] = { "COMMAND", "St_CommandMode" }, + ["r"] = { "PROMPT", "St_ConfirmMode" }, + ["rm"] = { "MORE", "St_ConfirmMode" }, + ["r?"] = { "CONFIRM", "St_ConfirmMode" }, + ["!"] = { "SHELL", "St_TerminalMode" }, } local function is_dapmode() - return require("spike.dap.dapmode").is_active() - -- return false + return require("spike.dap.dapmode").is_active() + -- return false end +return { + mode = function() + local m = vim.api.nvim_get_mode().mode + local current_mode = "%#" .. modes[m][2] .. "#" .. "  " .. modes[m][1] + local mode_sep1 = "%#" .. modes[m][2] .. "Sep" .. "#" .. sep_r + + if is_dapmode() then + local dap_mode = "%#St_DapMode#DAP" .. "%#St_DapModeSep#" + return current_mode .. mode_sep1 .. "%#St_DapModeSep2#" .. sep_r .. dap_mode .. sep_r + end + return current_mode .. mode_sep1 .. "%#ST_EmptySpace#" .. sep_r + end, -return { - mode = function() - local m = vim.api.nvim_get_mode().mode - local current_mode = "%#" .. modes[m][2] .. "#" .. "  " .. modes[m][1] - local mode_sep1 = "%#" .. modes[m][2] .. "Sep" .. "#" .. sep_r - - if is_dapmode() then - local dap_mode = "%#St_DapMode#DAP" .. "%#St_DapModeSep#" - return current_mode .. mode_sep1 .. "%#St_DapModeSep2#" .. sep_r .. dap_mode .. sep_r - end - - return current_mode .. mode_sep1 .. "%#ST_EmptySpace#" .. sep_r - end, - - fileInfo = function () - local icon = "  " - local filename = (fn.expand "%" == "" and "Empty ") or fn.expand "%:t" - local modified = (vim.bo[0].modified and "+ ") or "" - - if filename ~= "Empty " then - local devicons_present, devicons = pcall(require, "nvim-web-devicons") - - if devicons_present then - local ft_icon = devicons.get_icon(filename) - icon = (ft_icon ~= nil and " " .. ft_icon) or "" - end - - filename = " " .. filename .. " " - end - - return "%#St_file_info#" .. icon .. filename .. modified .. "%#St_file_sep#" .. sep_r - end, - - LSP_Diagnostics = function() - if not rawget(vim, "lsp") then - return "" - end - - local errors = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.ERROR }) - local warnings = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.WARN }) - local hints = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.HINT }) - local info = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.INFO }) - - errors = (errors and errors > 0) and ("%#St_lspError#" .. myicons.lsp.diagnostic_err .. " " .. errors .. " ") or "" - warnings = (warnings and warnings > 0) and ("%#St_lspWarning#" .. myicons.lsp.diagnostic_warn .. " " .. warnings .. " ") or "" - hints = (hints and hints > 0) and ("%#St_lspHints#" .. myicons.lsp.diagnostic_hint .. " " .. hints .. " ") or "" - info = (info and info > 0) and ("%#St_lspInfo#" .. myicons.lsp.diagnostic_info .. " " .. info .. " ") or "" - - return errors .. warnings .. hints .. info - end, - - LSP_status = function() - local lsp_status = "" - local dap_status = "" - if rawget(vim, "lsp") then - for _, client in ipairs(vim.lsp.get_active_clients()) do - if client.attached_buffers[vim.api.nvim_get_current_buf()] then - lsp_status = (vim.o.columns > 100 and "%#St_LspStatus#" .. "  [" .. client.name .. "] ") or "  " + fileInfo = function() + local icon = "  " + local filename = (fn.expand "%" == "" and "Empty ") or fn.expand "%:t" + local modified = (vim.bo[0].modified and "+ ") or "" + + if filename ~= "Empty " then + local devicons_present, devicons = pcall(require, "nvim-web-devicons") + + if devicons_present then + local ft_icon = devicons.get_icon(filename) + icon = (ft_icon ~= nil and " " .. ft_icon) or "" + end + + filename = " " .. filename .. " " end - end - end + return "%#St_file_info#" .. icon .. filename .. modified .. "%#St_file_sep#" .. sep_r + end, - local present, dap = pcall(require, "dap") - if present then - local session = dap.session() - if session ~= nil and session.initialized == true then - dap_status = "%#St_Dap#" .. "%* " - end - end + LSP_Diagnostics = function() + if not rawget(vim, "lsp") then + return "" + end - return lsp_status .. dap_status - end, -} + local errors = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.ERROR }) + local warnings = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.WARN }) + local hints = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.HINT }) + local info = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.INFO }) + + errors = (errors and errors > 0) and ("%#St_lspError#" .. myicons.lsp.diagnostic_err .. " " .. errors .. " ") or + "" + warnings = (warnings and warnings > 0) and + ("%#St_lspWarning#" .. myicons.lsp.diagnostic_warn .. " " .. warnings .. " ") or "" + hints = (hints and hints > 0) and ("%#St_lspHints#" .. myicons.lsp.diagnostic_hint .. " " .. hints .. " ") or "" + info = (info and info > 0) and ("%#St_lspInfo#" .. myicons.lsp.diagnostic_info .. " " .. info .. " ") or "" + return errors .. warnings .. hints .. info + end, + + LSP_progress = function() + if not rawget(vim, "lsp") then + return "" + end + + local Lsp = vim.lsp.util.get_progress_messages()[1] + + if vim.o.columns < 120 or not Lsp then + return "" + end + + local msg = Lsp.message or "" + local percentage = Lsp.percentage or 0 + local title = Lsp.title or "" + local spinners = { "", "" } + local ms = vim.loop.hrtime() / 1000000 + local frame = math.floor(ms / 120) % #spinners + local content = string.format(" %%<%s %s %s (%s%%%%) ", spinners[frame + 1], title, msg, percentage) + + return ("%#St_LspProgress#" .. content) or "" + end, + + LSP_status = function() + local lsp_status = "" + local dap_status = "" + if rawget(vim, "lsp") then + for _, client in ipairs(vim.lsp.get_active_clients()) do + if client.attached_buffers[vim.api.nvim_get_current_buf()] then + lsp_status = (vim.o.columns > 100 and "%#St_LspStatus#" .. "  [" .. client.name .. "] ") or "  " + end + end + end + + + local present, dap = pcall(require, "dap") + if present then + local session = dap.session() + if session ~= nil and session.initialized == true then + dap_status = "%#St_Dap#" .. "%* " + end + end + + return lsp_status .. dap_status + end, +} diff --git a/lua/plugins/init.lua b/lua/plugins/init.lua index 1732729..ae8fb9c 100644 --- a/lua/plugins/init.lua +++ b/lua/plugins/init.lua @@ -15,7 +15,7 @@ local plugins = { ["NvChad/extensions"] = { module = { "telescope", "nvchad" }, lock = true }, ["NvChad/base46"] = { - lock = true, + lock = false, config = function() local ok, base46 = pcall(require, "base46") @@ -33,15 +33,15 @@ local plugins = { end, }, - -- ["NvChad/nvterm"] = { - -- module = "nvterm", - -- config = function() - -- require "plugins.configs.nvterm" - -- end, - -- setup = function() - -- require("core.utils").load_mappings "nvterm" - -- end, - -- }, + ["NvChad/nvterm"] = { + module = "nvterm", + config = function() + require "plugins.configs.nvterm" + end, + setup = function() + require("core.utils").load_mappings "nvterm" + end, + }, ["kyazdani42/nvim-web-devicons"] = { after = "ui", @@ -142,12 +142,9 @@ local plugins = { after = "LuaSnip", }, - ["hrsh7th/cmp-nvim-lua"] = { - after = "cmp_luasnip", - }, ["hrsh7th/cmp-nvim-lsp"] = { - after = "cmp-nvim-lua", + after = {"nvim-cmp"}, }, ["hrsh7th/cmp-buffer"] = { diff --git a/notes/TODO b/notes/TODO new file mode 100644 index 0000000..d5c70d8 --- /dev/null +++ b/notes/TODO @@ -0,0 +1,51 @@ +- [ ] setup task runner overseer.nvim +- [ ] setup dadbod nvim for database work +- [diffview.nvim] learn to use instead of fugitive ? +- [luasnip] setup and learn how to use theme +- [dap] use the *console* for dap console output +- install neorg (neovim org mode) #TODO: +- set full file path somewhere +- use quick switch alternate buffer +- set custom theme per buftype (dark for Man) +- 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 ? +- dynamic :w!! (daos or sudo) +- welcome screen (use mini) +- incorporate changes in nvchad_ui to override +- setup thesaurus for synonyms completions +[x] [navigator] fix 'gi' keymap overriden by navigator (use space leader) +- [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 +- [x][lsp] set tap on logs for go like rust-analyzer (see .local/bin/run-rust-analyzer) diff --git a/notes/Tips.md b/notes/Tips.md new file mode 100644 index 0000000..dbfe277 --- /dev/null +++ b/notes/Tips.md @@ -0,0 +1,38 @@ + +- !{motion}{filter} filter text lines through ext program +- !!{filter} filter lines through ext program +- review using C-x C-l with context aware situation +- gR *virtual replace* mode + +- C-\ atlernate between windows +- C-^ alternate buffer + +- g; Go to [count] older position in change list. +- g, Go to [count] newer position in change list. + +# Change in the last search patterns +- cgn : change to the last used search patter ex: +/searchVar +cgn +newVar +. (keep pressing dot to repeat changes) + +# Modeline errors +This erorr might appear: +`Error detected while processing modelines:` +When there is a text somewhere that is recognized by vim as a modeline. + +* ! solution: add a top of file # vim: nomodeline (replace `#' with comment char) + + +4. Named registers "a to "z or "A to "Z quote_alpha quotea +Vim fills these registers only when you say so. Specify them as lowercase +letters to replace their previous contents or as uppercase letters to append +to their previous contents. When the '>' flag is present in 'cpoptions' then +a line break is inserted before the appended text. + +## Neovim Lua Plugin Tips +- if a var needs to be accessed outside plugin and cannot be shared easilly +like from a scheduled func call or timer, save the var in vim.g and access it +as global variable + diff --git a/notes/treesitter.md b/notes/treesitter.md new file mode 100644 index 0000000..cf53bba --- /dev/null +++ b/notes/treesitter.md @@ -0,0 +1,3 @@ +## Injections +- Using after/queries does not work well with injections + - using CONF_DIR/queries/{lang}/injections.scm seems to work diff --git a/queries/go/injections.scm b/queries/go/injections.scm new file mode 100644 index 0000000..cbdc015 --- /dev/null +++ b/queries/go/injections.scm @@ -0,0 +1,7 @@ +( + (const_spec + name: (identifier) @_id + value: (expression_list (raw_string_literal) @sql)) + + (#match? @_id "^Q") +) diff --git a/scratch/sql-inject.go b/scratch/sql-inject.go new file mode 100644 index 0000000..0d861b9 --- /dev/null +++ b/scratch/sql-inject.go @@ -0,0 +1,5 @@ +package main + +const Qtest = ` +select * from some_table +`