aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitchell Riedstra <mitch@riedstra.dev>2025-02-17 21:43:26 -0500
committerMitchell Riedstra <mitch@riedstra.dev>2025-02-17 21:43:34 -0500
commit8bbd3c0fcf1238930f12e8f68f3a73b41feffdcf (patch)
treea9639d569982033005643d38ac844debe46c5094
parentc28246733dd163cc2298991948f0e71af2d458c5 (diff)
downloaddotfiles-8bbd3c0fcf1238930f12e8f68f3a73b41feffdcf.tar.gz
dotfiles-8bbd3c0fcf1238930f12e8f68f3a73b41feffdcf.tar.xz
Update nvim config with LSP support again
-rw-r--r--dotfiles/nvim/init.lua50
1 files changed, 47 insertions, 3 deletions
diff --git a/dotfiles/nvim/init.lua b/dotfiles/nvim/init.lua
index ea46010..e655d16 100644
--- a/dotfiles/nvim/init.lua
+++ b/dotfiles/nvim/init.lua
@@ -12,6 +12,10 @@ require "paq" {
'tpope/vim-fugitive',
'lewis6991/gitsigns.nvim',
'williamboman/mason.nvim',
+ 'fatih/vim-go',
+ {'neovim/nvim-lspconfig'},
+ {'hrsh7th/cmp-nvim-lsp'},
+ {'hrsh7th/nvim-cmp'},
-- 'nvim-lualine/lualine.nvim', -- status line
}
@@ -71,9 +75,7 @@ require'nvim-treesitter.configs'.setup {
-- A list of parser names, or "all"
-- https://github.com/nvim-treesitter/nvim-treesitter
ensure_installed = {
- "c", "lua", 'rust', 'javascript', 'typescript', 'go', 'hcl',
- 'java', 'lua', 'make', 'perl', 'python', 'scheme', 'sql', 'svelte',
- 'terraform', 'yaml', 'bash', 'css', 'haskell',
+ "c", "lua", 'javascript', 'go', 'sql', 'python', 'bash', 'css'
},
-- Install parsers synchronously (only applied to `ensure_installed`)
@@ -103,6 +105,41 @@ require'nvim-treesitter.configs'.setup {
require("mason").setup()
+-- LSP
+-- Reserve a space in the gutter
+-- This will avoid an annoying layout shift in the screen
+vim.opt.signcolumn = 'yes'
+
+-- Add cmp_nvim_lsp capabilities settings to lspconfig
+-- This should be executed before you configure any language server
+local lspconfig_defaults = require('lspconfig').util.default_config
+lspconfig_defaults.capabilities = vim.tbl_deep_extend(
+ 'force',
+ lspconfig_defaults.capabilities,
+ require('cmp_nvim_lsp').default_capabilities()
+)
+
+-- This is where you enable features that only work
+-- if there is a language server active in the file
+vim.api.nvim_create_autocmd('LspAttach', {
+ desc = 'LSP actions',
+ callback = function(event)
+ local opts = {buffer = event.buf}
+
+ vim.keymap.set('n', 'K', '<cmd>lua vim.lsp.buf.hover()<cr>', opts)
+ vim.keymap.set('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<cr>', opts)
+ vim.keymap.set('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<cr>', opts)
+ vim.keymap.set('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<cr>', opts)
+ vim.keymap.set('n', 'go', '<cmd>lua vim.lsp.buf.type_definition()<cr>', opts)
+ vim.keymap.set('n', 'gr', '<cmd>lua vim.lsp.buf.references()<cr>', opts)
+ vim.keymap.set('n', 'gs', '<cmd>lua vim.lsp.buf.signature_help()<cr>', opts)
+ vim.keymap.set('n', '<F2>', '<cmd>lua vim.lsp.buf.rename()<cr>', opts)
+ vim.keymap.set({'n', 'x'}, '<F3>', '<cmd>lua vim.lsp.buf.format({async = true})<cr>', opts)
+ vim.keymap.set('n', '<F4>', '<cmd>lua vim.lsp.buf.code_action()<cr>', opts)
+ end,
+})
+
+
-- Personal config options below:
vim.opt.nu = true
@@ -173,3 +210,10 @@ vim.cmd("autocmd VimResized * wincmd =")
vim.cmd('colorscheme gruvbox')
+
+-- vim.lsp.enable('gopls') -- nvim 0.11, requires additional files:
+-- https://lsp-zero.netlify.app/blog/lsp-in-3-steps.html
+
+-- https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md
+-- require('lspconfig').gopls.setup({})
+-- require('lspconfig').bashls.setup({})