diff options
| author | Mitchell Riedstra <mitch@riedstra.dev> | 2025-02-17 21:43:26 -0500 |
|---|---|---|
| committer | Mitchell Riedstra <mitch@riedstra.dev> | 2025-02-17 21:43:34 -0500 |
| commit | 8bbd3c0fcf1238930f12e8f68f3a73b41feffdcf (patch) | |
| tree | a9639d569982033005643d38ac844debe46c5094 | |
| parent | c28246733dd163cc2298991948f0e71af2d458c5 (diff) | |
| download | dotfiles-8bbd3c0fcf1238930f12e8f68f3a73b41feffdcf.tar.gz dotfiles-8bbd3c0fcf1238930f12e8f68f3a73b41feffdcf.tar.xz | |
Update nvim config with LSP support again
| -rw-r--r-- | dotfiles/nvim/init.lua | 50 |
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({}) |
