From 2c12d4fe085f70d19a6201a8102bf29f33420655 Mon Sep 17 00:00:00 2001 From: S4NKALP Date: Mon, 18 May 2026 21:47:09 +0545 Subject: [PATCH] feat(plugin): replace Lspsaga with native LSP & Snacks integration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Why: Clean up the heavy Lspsaga UI and adopt built‑in LSP plus Snacks for better performance and maintainability. - New Features - Use native `vim.lsp.buf` functions for code actions, diagnostics, rename, etc. - Integrate Snacks picker for definitions, references, symbols, and type definitions. - Enhancements - Update keybindings to use Snacks and native APIs instead of Lspsaga. - Drop `nvimdev/Lspsaga.nvim`, `typescript-tools.nvim`, and unused `plenary.nvim`. - Preserve mini.misc auto‑root and other minor improvements. - Bug Fixes - Resolve broken Lspsaga UI configuration and related mappings. - Remove stale `la` mapping that referenced Lspsaga. --- plugin/01-lsp.lua | 18 ------------------ plugin/editor.lua | 26 -------------------------- plugin/mini.lua | 2 -- plugin/whichkey.lua | 29 ++++++++++++++--------------- 4 files changed, 14 insertions(+), 61 deletions(-) diff --git a/plugin/01-lsp.lua b/plugin/01-lsp.lua index 25bc25b..3ab0ed0 100644 --- a/plugin/01-lsp.lua +++ b/plugin/01-lsp.lua @@ -2,7 +2,6 @@ add({ 'mason-org/mason.nvim', -- lsp installer manager 'mason-org/mason-lspconfig.nvim', -- lsp installer 'neovim/nvim-lspconfig', -- lsp config - 'nvimdev/Lspsaga.nvim', -- lsp ui 'rachartier/tiny-inline-diagnostic.nvim', -- inline diagnostic 'rachartier/tiny-code-action.nvim', -- code action }) @@ -28,23 +27,6 @@ require('mason-lspconfig').setup({ -- improve neovim lsp experience vim.api.nvim_create_autocmd('LspAttach', { callback = function() - require('lspsaga').setup({ - ui = { - theme = 'round', - border = 'rounded', - devicon = true, - title = true, - winblend = 1, - expand = ' ', - collapse = ' ', - preview = '', - code_action = '󰠠 ', - diagnostic = ' ', - incoming = ' ', - outgoing = ' ', - hover = ' ', - }, - }) --inline diagnostic require('tiny-inline-diagnostic').setup({ diff --git a/plugin/editor.lua b/plugin/editor.lua index 6d39fe9..11068e8 100644 --- a/plugin/editor.lua +++ b/plugin/editor.lua @@ -11,9 +11,7 @@ add({ 'numToStr/Navigator.nvim', -- navigator 'm4xshen/hardtime.nvim', -- workflow 'mg979/vim-visual-multi', -- multiple cursors - 'pmizio/typescript-tools.nvim', -- typescript tools { src = 'iamcco/markdown-preview.nvim', build = 'cd app && npm install' }, - 'nvim-lua/plenary.nvim', -- dependency for typescript-tools -- 'nvim-flutter/flutter-tools.nvim', -- flutter tools }) @@ -69,27 +67,3 @@ vim.keymap.set('i', '', function() return vim.fn['codeium#Clear']() end, { expr = true, silent = true }) --- typescript tools -require('typescript-tools').setup({ - filetypes = { 'javascript', 'javascriptreact', 'typescript', 'typescriptreact' }, - settings = { - separate_diagnostic_server = true, - publish_diagnostic_on = 'insert_leave', - expose_as_code_action = { - 'fix_all', - 'add_missing_imports', - 'remove_unused', - 'remove_unused_imports', - 'organize_imports', - }, - tsserver_plugins = {}, - complete_function_calls = false, - include_completions_with_insert_text = true, - code_lens = 'off', - disable_member_code_lens = true, - jsx_close_tag = { - enable = false, - filetypes = { 'javascriptreact', 'typescriptreact' }, - }, - }, -}) diff --git a/plugin/mini.lua b/plugin/mini.lua index 23d603c..fc5edd1 100644 --- a/plugin/mini.lua +++ b/plugin/mini.lua @@ -25,8 +25,6 @@ require("mini.files").setup({ }) require("mini.misc").setup({ - -- restore cursor position on file reopen - require("mini.misc").setup_restore_cursor(), -- automated change of current directory require("mini.misc").setup_auto_root(), }) diff --git a/plugin/whichkey.lua b/plugin/whichkey.lua index 74f2adf..ae80107 100644 --- a/plugin/whichkey.lua +++ b/plugin/whichkey.lua @@ -129,21 +129,20 @@ local normal_mappings = { { "it", ":put =strftime('## %r')", desc = "Time" }, { "l", group = " LSP" }, - { "la", ":Lspsaga code_action", desc = "Code Action" }, - { "ld", ":Lspsaga goto_definition", desc = "Goto Definition" }, - { "lf", ":Lspsaga finder", desc = "Finder" }, - { "lh", ":Lspsaga hover_doc", desc = "Hover" }, + { "la", ":lua vim.lsp.buf.code_action()", desc = "Code Action" }, + { "ld", ":lua Snacks.picker.lsp_definitions()", desc = "Goto Definition" }, + { "lf", ":lua Snacks.picker.lsp_references()", desc = "Finder (References)" }, + { "lh", ":lua vim.lsp.buf.hover()", desc = "Hover" }, { "lI", ":LspInfo", desc = "LSP Info" }, - { "lj", ":Lspsaga diagnostic_jump_next", desc = "Next Diagnostic" }, - { "lk", ":Lspsaga diagnostic_jump_prev", desc = "Prev Diagnostic" }, - { "lo", ":Lspsaga outline", desc = "Outline" }, - { "lp", ":Lspsaga peek_definition", desc = "Peek Definition" }, + { "lj", ":lua vim.diagnostic.goto_next()", desc = "Next Diagnostic" }, + { "lk", ":lua vim.diagnostic.goto_prev()", desc = "Prev Diagnostic" }, + { "lo", ":lua Snacks.picker.lsp_symbols()", desc = "Outline (Symbols)" }, + { "lp", ":lua Snacks.picker.lsp_definitions()", desc = "Peek Definition" }, { "lq", ":LspStop", desc = "Stop LSP" }, { "lQ", ":LspRestart", desc = "Restart LSP" }, - { "lr", ":Lspsaga rename", desc = "Rename" }, - { "lR", ":Lspsaga project_replace", desc = "Replace" }, - { "lt", ":Lspsaga goto_type_definition", desc = "Goto Type Definition" }, - { "lT", ":Lspsaga peek_type_definition", desc = "Peek Type Definition" }, + { "lr", ":lua vim.lsp.buf.rename()", desc = "Rename" }, + { "lt", ":lua Snacks.picker.lsp_type_definitions()", desc = "Goto Type Definition" }, + { "lT", ":lua Snacks.picker.lsp_type_definitions()", desc = "Peek Type Definition" }, { "o", group = " Options" }, { "oi", "vim.show_pos", desc = "Inspect Position" }, @@ -244,7 +243,7 @@ local visual_mappings = { { "gu", ":'<,'>Gitsigns undo_stage_hunk", desc = "Undo Stage Hunk" }, { "l", group = " LSP" }, - { "la", ":Lspsaga range_code_action", desc = "Code Action" }, + { "la", ":lua vim.lsp.buf.code_action()", desc = "Code Action" }, -- { "o", group = " Options" }, @@ -270,7 +269,7 @@ local no_leader_mappings = { { "", ":bnext", desc = "Next Buffer" }, { "", ":bprevious", desc = "Previous Buffer" }, - { "K", ":Lspsaga hover_doc", desc = "LSP Hover" }, + { "K", ":lua vim.lsp.buf.hover()", desc = "LSP Hover" }, { "Q", ":qall!", desc = "Force Quit!" }, { "U", ":redo", desc = "Redo" }, @@ -282,7 +281,7 @@ local no_leader_mappings = { { "]g", ":Gitsigns next_hunk", desc = "Git Hunk" }, { "]o", group = "Textobjects" }, - { "gd", ":Lspsaga goto_definition", desc = "Goto Definition" }, + { "gd", ":lua Snacks.picker.lsp_definitions()", desc = "Goto Definition" }, } wk.add(normal_mappings)