nvim/lua/user/lsp.lua
Prabhat Maurya 8b868ed944 feat: proper Go setup with gopls, formatters, and debugger
- Add Mason bin to Neovim PATH so formatters/linters are discoverable
- Add Mason ensure_installed for gofumpt, goimports, delve + stylua, black, yamlfmt
- Add Go filetype settings (tabs, tabwidth=4) in golang.lua
- Remove redundant Go keymaps — existing LSP and vim-test keymaps already cover everything

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-26 00:06:12 +05:30

49 lines
1.4 KiB
Lua

-- 1. Setup Mason first (LSPs + tools)
require("mason").setup({
ensure_installed = {
-- Go toolchain
"gofumpt",
"goimports",
"delve",
-- Lua
"stylua",
-- Python
"black",
-- YAML
"yamlfmt",
},
})
require("mason-lspconfig").setup({
-- Remove "jdtls" from here to prevent the 'enable' (nil value) crash
ensure_installed = {
"pyright",
"typescript-language-server",
"marksman",
"kotlin-language-server",
"svelte-language-server",
"gopls",
},
})
-- 2. Global LSP Attach (The modern way to handle keymaps)
vim.api.nvim_create_autocmd('LspAttach', {
group = vim.api.nvim_create_augroup('UserLspConfig', {}),
callback = function(ev)
local opts = { buffer = ev.buf }
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts)
vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts)
vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, opts)
vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts)
end,
})
-- 3. Load your modernized server configs
-- These files should now use vim.lsp.config and vim.lsp.enable
require("user.lsp_servers.pyright")
require("user.lsp_servers.ts_ls")
require("user.lsp_servers.jdtls")
require("user.lsp_servers.marksman")
require("user.lsp_servers.kotlin_ls")
require("user.lsp_servers.dartls")
require("user.lsp_servers.svelte")
require("user.lsp_servers.golang")