From c9b1826541c70595b20d5a04a366231d1899c09c Mon Sep 17 00:00:00 2001 From: Pratik Tripathy Date: Sun, 15 Dec 2024 21:49:59 +0530 Subject: [PATCH] chore(nvim): Better keymaps & removed unused plugins --- common/.config/nvim/lua/config/keymaps.lua | 3 - common/.config/nvim/lua/plugins/ai.lua | 31 +-- .../.config/nvim/lua/plugins/code-generic.lua | 164 +--------------- .../nvim/lua/plugins/navigate-files.lua | 176 +++++------------- common/.config/nvim/lua/plugins/ui.lua | 8 +- common/.vim/key_maps.vim | 2 +- 6 files changed, 54 insertions(+), 330 deletions(-) diff --git a/common/.config/nvim/lua/config/keymaps.lua b/common/.config/nvim/lua/config/keymaps.lua index d522fa7..3331280 100644 --- a/common/.config/nvim/lua/config/keymaps.lua +++ b/common/.config/nvim/lua/config/keymaps.lua @@ -13,8 +13,6 @@ vim.keymap.set({ "n", "v" }, "y", '"+y', { desc = "Copy to system clipbo vim.keymap.set({ "n", "v" }, "p", '"+p', { desc = "Paste from system clipboard" }) vim.keymap.set({ "n" }, "", " %y+ ", { desc = "Copy entire content of the current buffer" }) -vim.keymap.set("n", "fn", "enew", { desc = "Create new file/buffer" }) - -- Remap for dealing with word wrap vim.keymap.set({ "n", "x" }, "j", "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) vim.keymap.set({ "n", "x" }, "k", "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) @@ -68,7 +66,6 @@ vim.keymap.set("n", "]q", vim.cmd.cnext, { desc = "Next quickfix" }) -- Clear searches vim.keymap.set({ "i", "n" }, "", "noh", { desc = "Escape and clear hlsearch" }) -vim.keymap.set("n", "/", "nohlsearchdiffupdatenormal! ", { desc = "Redraw / clear hlsearch / diff update" }) -- https://github.com/mhinz/vim-galore#saner-behavior-of-n-and-n vim.keymap.set("n", "n", "'Nn'[v:searchforward].'zv'", { expr = true, desc = "Next search result" }) diff --git a/common/.config/nvim/lua/plugins/ai.lua b/common/.config/nvim/lua/plugins/ai.lua index 51e1b71..e0477e8 100644 --- a/common/.config/nvim/lua/plugins/ai.lua +++ b/common/.config/nvim/lua/plugins/ai.lua @@ -1,32 +1,3 @@ return { - { - "David-Kunz/gen.nvim", - opts = { - model = "mistral:instruct", -- The default model to use. - host = "127.0.0.1", -- The host running the Ollama service. - port = "11434", -- The port on which the Ollama service is listening. - display_mode = "split", -- The display mode. Can be "float" or "split". - show_prompt = true, -- Shows the Prompt submitted to Ollama. - show_model = true, -- Displays which model you are using at the beginning of your chat session. - quit_map = "q", -- set keymap for quit - no_auto_close = false, -- Never closes the window automatically. - init = function() - pcall(io.popen, "ollama serve > /dev/null 2>&1 &") - end, - -- Function to initialize Ollama - command = function(options) - return "curl --silent --no-buffer -X POST http://" .. options.host .. ":" .. options.port .. "/api/chat -d $body" - end, - -- The command for the Ollama service. You can use placeholders $prompt, $model and $body (shellescaped). - -- This can also be a command string. - -- The executed command must return a JSON object with { response, context } - -- (context property is optional). - -- list_models = '', -- Retrieves a list of model names - debug = false, -- Prints errors and the command which is run. - }, - keys = { - { "[", ":Gen", desc = "AI Prompt", mode = { "n" } }, - { "]", ":'<,'>Gen", desc = "Contextual AI Prompt", mode = { "v" } }, - }, - }, + -- TODO: Use similar keymaps to Windsurf } diff --git a/common/.config/nvim/lua/plugins/code-generic.lua b/common/.config/nvim/lua/plugins/code-generic.lua index 9ddd31e..69f018b 100644 --- a/common/.config/nvim/lua/plugins/code-generic.lua +++ b/common/.config/nvim/lua/plugins/code-generic.lua @@ -190,11 +190,9 @@ return { desc = "Previous todo comment", }, - { "dt", "TodoTrouble", desc = "Todo (Trouble)" }, - { "dT", "TodoTrouble keywords=TODO,FIX,FIXME", desc = "Todo/Fix/Fixme (Trouble)" }, -- TODO: Include hidden files - { "lt", "TodoTelescope", desc = "List Todo" }, - { "lT", "TodoTelescope keywords=TODO,FIX,FIXME", desc = "List Todo/Fix/Fixme" }, + { "fT", "TodoTelescope", desc = "List Todo/Fix/Fixme" }, + { "ft", "TodoTelescope keywords=TODO,FIX,FIXME", desc = "List Todo" }, }, }, @@ -280,29 +278,6 @@ return { }, }, - -- Inlay hints - { - "lvimuser/lsp-inlayhints.nvim", - cond = require("config.util").is_not_vscode(), - config = function() - require("lsp-inlayhints").setup() - - -- Lazy load on LspAttach - vim.api.nvim_create_augroup("LspAttach_inlayhints", {}) - vim.api.nvim_create_autocmd("LspAttach", { - group = "LspAttach_inlayhints", - callback = function(args) - if not (args.data and args.data.client_id) then - return - end - - local bufnr = args.buf - local client = vim.lsp.get_client_by_id(args.data.client_id) - require("lsp-inlayhints").on_attach(client, bufnr) - end, - }) - end, - }, -- LspSaga { @@ -406,7 +381,7 @@ return { -- -- ["g?"] = actions.help(), -- Open mappings help window { - "v", + "o", function() return require("nvim-navbuddy").open() end, @@ -414,137 +389,4 @@ return { }, }, }, - - -- Refactor code: Refactoring book by Martin Fowler - { - "ThePrimeagen/refactoring.nvim", - cond = require("config.util").is_not_vscode(), - event = { "BufReadPre", "BufNewFile" }, - dependencies = { - "nvim-lua/plenary.nvim", - "nvim-treesitter/nvim-treesitter", - }, - keys = { - { - "rs", - function() - require("telescope").extensions.refactoring.refactors() - end, - mode = "v", - desc = "Refactor", - }, - { - "ri", - function() - require("refactoring").refactor("Inline Variable") - end, - mode = { "n", "v" }, - desc = "Inline Variable", - }, - { - "rb", - function() - require("refactoring").refactor("Extract Block") - end, - desc = "Extract Block", - }, - { - "rf", - function() - require("refactoring").refactor("Extract Block To File") - end, - desc = "Extract Block To File", - }, - { - "rP", - function() - require("refactoring").debug.printf({ below = false }) - end, - desc = "Debug Print", - }, - { - "rp", - function() - require("refactoring").debug.print_var({ normal = true }) - end, - desc = "Debug Print Variable", - }, - { - "rc", - function() - require("refactoring").debug.cleanup({}) - end, - desc = "Debug Cleanup", - }, - { - "rf", - function() - require("refactoring").refactor("Extract Function") - end, - mode = "v", - desc = "Extract Function", - }, - { - "rF", - function() - require("refactoring").refactor("Extract Function To File") - end, - mode = "v", - desc = "Extract Function To File", - }, - { - "rx", - function() - require("refactoring").refactor("Extract Variable") - end, - mode = "v", - desc = "Extract Variable", - }, - { - "rp", - function() - require("refactoring").debug.print_var() - end, - mode = "v", - desc = "Debug Print Variable", - }, - }, - opts = { - prompt_func_return_type = { - go = false, - java = false, - cpp = false, - c = false, - h = false, - hpp = false, - cxx = false, - }, - prompt_func_param_type = { - go = false, - java = false, - cpp = false, - c = false, - h = false, - hpp = false, - cxx = false, - }, - printf_statements = {}, - print_var_statements = {}, - }, - config = function(_, opts) - require("refactoring").setup(opts) - pcall(require("telescope").load_extension, "refactoring") - end, - }, - - -- which key integration - { - "folke/which-key.nvim", - optional = true, - opts = { - defaults = { - ["r"] = { name = "+refactor" }, - }, - }, - }, } diff --git a/common/.config/nvim/lua/plugins/navigate-files.lua b/common/.config/nvim/lua/plugins/navigate-files.lua index 4d60392..f3bfa11 100644 --- a/common/.config/nvim/lua/plugins/navigate-files.lua +++ b/common/.config/nvim/lua/plugins/navigate-files.lua @@ -1,115 +1,4 @@ return { - -- Harpoon - { - "ThePrimeagen/harpoon", - branch = "harpoon2", - dependencies = { - "nvim-lua/plenary.nvim", - "nvim-telescope/telescope.nvim", - }, - keys = { - { - "ha", - function() - require("harpoon"):list():append() - end, - desc = "Add current file to harpoon-list", - }, - { - "hd", - function() - require("harpoon"):list():remove() - end, - desc = "Remove current file from harpoon-list", - }, - { - "hh", - function() - local harpoon = require("harpoon") - harpoon.ui:toggle_quick_menu(harpoon:list()) - end, - desc = "Show harpoon list", - }, - { - "", - function() - require("harpoon"):list():select(1) - end, - desc = "Switch to the 1st file in harpoon-list", - }, - { - "", - function() - require("harpoon"):list():select(2) - end, - desc = "Switch to the 2nd file in harpoon-list", - }, - { - "", - function() - require("harpoon"):list():select(3) - end, - desc = "Switch to the 3rd file in harpoon-list", - }, - { - "", - function() - require("harpoon"):list():select(4) - end, - desc = "Switch to the 4th file in harpoon-list", - }, - -- Toggle previous & next buffers stored within require("harpoon") list - { - "", - function() - require("harpoon"):list():prev() - end, - desc = "Harpoon go to the next file in harpoon-list", - }, - { - "", - function() - require("harpoon"):list():next() - end, - desc = "Harpoon go to the previous file in harpoon-list", - }, - }, - setup = { - settings = { - save_on_change = true, - save_on_toggle = false, - mark_branch = true, - }, - }, - config = function() - local harpoon = require("harpoon") - harpoon:setup() - - -- basic telescope configuration - local tele_conf = require("telescope.config").values - local function toggle_telescope(harpoon_files) - local file_paths = {} - for _, item in ipairs(harpoon_files.items) do - table.insert(file_paths, item.value) - end - - require("telescope.pickers") - .new({}, { - prompt_title = "Harpoon", - finder = require("telescope.finders").new_table({ - results = file_paths, - }), - previewer = tele_conf.file_previewer({}), - sorter = tele_conf.generic_sorter({}), - }) - :find() - end - - vim.keymap.set("n", "lh", function() - toggle_telescope(harpoon:list()) - end, { desc = "List harpooned files" }) - end, - }, -- File Explorer: Neotree { @@ -117,7 +6,8 @@ return { cond = require("config.util").is_not_vscode(), branch = "v3.x", keys = { - { "e", "Neotree filesystem toggle", desc = "Open NeoTree Explorer at Git root", remap = true }, + { "", "Neotree toggle left", desc = "Open NeoTree Explorer at Git root", remap = true }, + { "e", "Neotree toggle float", desc = "Open NeoTree on Floating Window", remap = true }, { "be", @@ -218,6 +108,10 @@ return { return vim.fn.executable("make") == 1 end, }, + "nvim-telescope/telescope-ui-select.nvim", + { + "nvim-tree/nvim-web-devicons", enabled = vim.g.have_nerd_font + } }, config = function() -- NOTE: Search in hidden files trick taken from: https://stackoverflow.com/a/75500661/11057673 @@ -253,10 +147,16 @@ return { find_command = { "rg", "--files", "--hidden", "--glob", "!**/.git/*" }, }, }, + extensions = { + ["ui-select"] = { + require("telescope.themes").get_dropdown(), + }, + }, }) -- Load some required Telescope extensions pcall(require("telescope").load_extension, "fzf") + pcall(require("telescope").load_extension, "ui-select") -- Special Things: Telescope vim.keymap.set("n", "nc", require("telescope.builtin").colorscheme, @@ -269,41 +169,55 @@ return { prompt_title = "Live Grep in Open Files", }) end, { desc = "Search Open Buffers" }) - vim.keymap.set("n", "sg", require("telescope.builtin").live_grep, { desc = "Search/LiveGrep the Project" }) - vim.keymap.set("n", "", require("telescope.builtin").live_grep, { desc = "Search/LiveGrep the Project" }) - vim.keymap.set("n", "sw", require("telescope.builtin").grep_string, { desc = "Search current Word in Project" }) + vim.keymap.set("n", "sg", require("telescope.builtin").live_grep, + { desc = "Search/LiveGrep the Project" }) + vim.keymap.set("n", "", require("telescope.builtin").live_grep, + { desc = "Search/LiveGrep the Project" }) + vim.keymap.set("n", "sw", require("telescope.builtin").grep_string, + { desc = "Search current Word in Project" }) -- List - vim.keymap.set("n", "lb", require("telescope.builtin").buffers, { desc = "List Bbuffers" }) - vim.keymap.set("n", "lc", require("telescope.builtin").command_history, { desc = "List NeoVIM Command History" }) + vim.keymap.set("n", "fb", require("telescope.builtin").buffers, { desc = "List Buffers" }) + vim.keymap.set("n", "fc", require("telescope.builtin").command_history, + { desc = "List NeoVIM Command History" }) vim.keymap.set("n", "", require("telescope.builtin").find_files, { desc = "List & Search Files" }) - vim.keymap.set("n", "lf", require("telescope.builtin").find_files, { desc = "List & Search Files" }) - vim.keymap.set("n", "ln", require("telescope.builtin").help_tags, { desc = "List & Search NeoVIM Help" }) - vim.keymap.set("n", "lk", require("telescope.builtin").keymaps, { desc = "List & Search NeoVIM Keymaps" }) - vim.keymap.set("n", "lm", require("telescope.builtin").man_pages, { desc = "List & Search System Man Pages" }) - vim.keymap.set("n", "lq", require("telescope.builtin").quickfixhistory, { desc = "List Quickfix History" }) - vim.keymap.set("n", "ls", require("telescope.builtin").search_history, { desc = "List Search History" }) - vim.keymap.set("n", "lv", require("telescope.builtin").vim_options, { desc = "List Vim Options" }) + vim.keymap.set("n", "ff", require("telescope.builtin").find_files, { desc = "List & Search Files" }) + vim.keymap.set("n", "fn", require("telescope.builtin").help_tags, + { desc = "List & Search NeoVIM Help" }) + vim.keymap.set("n", "fq", require("telescope.builtin").quickfixhistory, + { desc = "List Quickfix History" }) + vim.keymap.set("n", "fs", require("telescope.builtin").search_history, + { desc = "List Search History" }) -- Git - vim.keymap.set("n", "glb", require("telescope.builtin").git_branches, { desc = "List Git Branches" }) - vim.keymap.set("n", "glc", require("telescope.builtin").git_commits, { desc = "List Git Commits" }) + vim.keymap.set("n", "gfb", require("telescope.builtin").git_branches, { desc = "List Git Branches" }) + vim.keymap.set("n", "gfc", require("telescope.builtin").git_commits, { desc = "List Git Commits" }) -- LSP Things -> Coding - vim.keymap.set("n", "cld", require("telescope.builtin").diagnostics, { desc = "Code: List Diagnostics" }) + vim.keymap.set("n", "cld", require("telescope.builtin").diagnostics, + { desc = "Code: List Diagnostics" }) - vim.keymap.set("n", "ci", require("telescope.builtin").lsp_implementations, { desc = "Code: Goto Implementation" }) + vim.keymap.set("n", "ci", require("telescope.builtin").lsp_implementations, + { desc = "Code: Goto Implementation" }) vim.keymap.set("n", "gd", require("telescope.builtin").lsp_definitions, { desc = "Code: Goto Definition" }) - vim.keymap.set("n", "ct", require("telescope.builtin").lsp_type_definitions, { desc = "Code: Goto Type Definition" }) + vim.keymap.set("n", "ct", require("telescope.builtin").lsp_type_definitions, + { desc = "Code: Goto Type Definition" }) -- vim.keymap.set("n", "cgD", vim.lsp.buf.declaration, { desc = "Goto Declaration" }) - vim.keymap.set("n", "cR", require("telescope.builtin").lsp_references, { desc = "Code: Goto References" }) + vim.keymap.set("n", "cR", require("telescope.builtin").lsp_references, + { desc = "Code: Goto References" }) -- vim.keymap.set("n", "cR", require("telescope.builtin").lsp_references, { desc = "Code: List References for word under cursor" }) - -- vim.keymap.set("n", "cs", require("telescope.builtin").lsp_document_symbols, { desc = "Document Symbols" }) + vim.keymap.set("n", "O", require("telescope.builtin").lsp_workspace_symbols, + { desc = "Code: Search Workspace Symbols" }) + vim.keymap.set("n", "nk", require("telescope.builtin").keymaps, + { desc = "List & Search NeoVIM Keymaps" }) + vim.keymap.set("n", "nm", require("telescope.builtin").man_pages, + { desc = "List & Search System Man Pages" }) vim.keymap.set("n", "nn", "Telescope notify", { desc = "List past notifications" }) + vim.keymap.set("n", "nv", require("telescope.builtin").vim_options, { desc = "List Vim Options" }) end, }, } diff --git a/common/.config/nvim/lua/plugins/ui.lua b/common/.config/nvim/lua/plugins/ui.lua index 567f128..6ab12c7 100644 --- a/common/.config/nvim/lua/plugins/ui.lua +++ b/common/.config/nvim/lua/plugins/ui.lua @@ -39,11 +39,11 @@ return { }, event = "VeryLazy", keys = { - { "bp", "BufferLineTogglePin", desc = "Toggle buffer-pin" }, - { "bj", "BufferLinePick", desc = "Choose and jump to a buffer" }, + { "bp", "BufferLineTogglePin", desc = "Toggle buffer-pin" }, + { "bj", "BufferLinePick", desc = "Choose and jump to a buffer" }, { "xo", "BufferLineCloseOthers", desc = "Close other buffers" }, - { "[b", "BufferLineCyclePrev", desc = "Prev buffer" }, - { "]b", "BufferLineCycleNext", desc = "Next buffer" }, + { "[b", "BufferLineCyclePrev", desc = "Prev buffer" }, + { "]b", "BufferLineCycleNext", desc = "Next buffer" }, }, opts = { options = { diff --git a/common/.vim/key_maps.vim b/common/.vim/key_maps.vim index b4f9f37..b9d4355 100644 --- a/common/.vim/key_maps.vim +++ b/common/.vim/key_maps.vim @@ -114,7 +114,7 @@ vnoremap y "+y " To paste from system clipboard "+p " Clear search, diff update and redraw -nnoremap / :nohlsearch:diffupdate:normal! +nnoremap :nohlsearch:diffupdate:normal! " Changes the pwd to the opened file's directory nnoremap cd :lcd %:h