From ca0d480b0e4459be35bb42afd5762182e5ad0110 Mon Sep 17 00:00:00 2001 From: Scott Carroll Date: Mon, 24 Mar 2025 00:21:17 +0000 Subject: [PATCH] Add lsp-zero and mason --- init.lua | 69 ++---------------------------- lua/plugins/lsp-zero.lua | 91 ++++++++++++++++++++++++++++++++++++++++ lua/plugins/mason.lua | 5 --- 3 files changed, 95 insertions(+), 70 deletions(-) create mode 100644 lua/plugins/lsp-zero.lua delete mode 100644 lua/plugins/mason.lua diff --git a/init.lua b/init.lua index 307003e..1beb007 100644 --- a/init.lua +++ b/init.lua @@ -73,47 +73,11 @@ vim.opt.undofile = true -- Reserve a space in the gutter vim.opt.signcolumn = 'yes' --- Install Mason -require("mason").setup() +-- Reserve a space in the gutter +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', 'lua vim.lsp.buf.hover()', opts) - vim.keymap.set('n', 'gd', 'lua vim.lsp.buf.definition()', opts) - vim.keymap.set('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) - vim.keymap.set('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) - vim.keymap.set('n', 'go', 'lua vim.lsp.buf.type_definition()', opts) - vim.keymap.set('n', 'gr', 'lua vim.lsp.buf.references()', opts) - vim.keymap.set('n', 'gs', 'lua vim.lsp.buf.signature_help()', opts) - vim.keymap.set('n', '', 'lua vim.lsp.buf.rename()', opts) - vim.keymap.set({'n', 'x'}, '', 'lua vim.lsp.buf.format({async = true})', opts) - vim.keymap.set('n', '', 'lua vim.lsp.buf.code_action()', opts) - end, -}) - --- You'll find a list of language servers here: --- https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md --- These are example language servers. -require('lspconfig').gleam.setup({}) -require('lspconfig').ocamllsp.setup({}) --- NOTE: to make any of this work you need a language server. --- If you don't know what that is, watch this 5 min video: --- https://www.youtube.com/watch?v=LaS32vctfOY +-- lsp-zero local cmp = require('cmp') cmp.setup({ @@ -128,32 +92,7 @@ cmp.setup({ }, mapping = cmp.mapping.preset.insert({}), }) - -vim.api.nvim_create_autocmd("Filetype", { - pattern = { "html", "shtml", "htm" }, - callback = function() - vim.lsp.start({ - name = "superhtml", - cmd = { "superhtml", "lsp" }, - root_dir = vim.fs.dirname(vim.fs.find({".git"}, { upward = true })[1]) - }) - end -}) - -require'lspconfig'.terraformls.setup({}) - -require'lspconfig'.pylsp.setup{ - settings = { - pylsp = { - plugins = { - pycodestyle = { - ignore = {'W391'}, - maxLineLength = 120 - } - } - } - } -} +-- lsp-zero end -- move paragraphs vim.keymap.set("v", "J", ":m '>+1gv=gv") diff --git a/lua/plugins/lsp-zero.lua b/lua/plugins/lsp-zero.lua new file mode 100644 index 0000000..806f13f --- /dev/null +++ b/lua/plugins/lsp-zero.lua @@ -0,0 +1,91 @@ +return { + { + 'williamboman/mason.nvim', + lazy = false, + opts = {}, + }, + + -- Autocompletion + { + 'hrsh7th/nvim-cmp', + event = 'InsertEnter', + config = function() + local cmp = require('cmp') + + cmp.setup({ + sources = { + {name = 'nvim_lsp'}, + }, + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + }), + snippet = { + expand = function(args) + vim.snippet.expand(args.body) + end, + }, + }) + end + }, + + -- LSP + { + 'neovim/nvim-lspconfig', + cmd = {'LspInfo', 'LspInstall', 'LspStart'}, + event = {'BufReadPre', 'BufNewFile'}, + dependencies = { + {'hrsh7th/cmp-nvim-lsp'}, + {'williamboman/mason.nvim'}, + {'williamboman/mason-lspconfig.nvim'}, + }, + init = function() + -- Reserve a space in the gutter + -- This will avoid an annoying layout shift in the screen + vim.opt.signcolumn = 'yes' + end, + config = function() + local lsp_defaults = require('lspconfig').util.default_config + + -- Add cmp_nvim_lsp capabilities settings to lspconfig + -- This should be executed before you configure any language server + lsp_defaults.capabilities = vim.tbl_deep_extend( + 'force', + lsp_defaults.capabilities, + require('cmp_nvim_lsp').default_capabilities() + ) + + -- LspAttach 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', 'lua vim.lsp.buf.hover()', opts) + vim.keymap.set('n', 'gd', 'lua vim.lsp.buf.definition()', opts) + vim.keymap.set('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) + vim.keymap.set('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) + vim.keymap.set('n', 'go', 'lua vim.lsp.buf.type_definition()', opts) + vim.keymap.set('n', 'gr', 'lua vim.lsp.buf.references()', opts) + vim.keymap.set('n', 'gs', 'lua vim.lsp.buf.signature_help()', opts) + vim.keymap.set('n', '', 'lua vim.lsp.buf.rename()', opts) + vim.keymap.set({'n', 'x'}, '', 'lua vim.lsp.buf.format({async = true})', opts) + vim.keymap.set('n', '', 'lua vim.lsp.buf.code_action()', opts) + end, + }) + + require('mason-lspconfig').setup({ + ensure_installed = {}, + handlers = { + -- this first function is the "default handler" + -- it applies to every language server without a "custom handler" + function(server_name) + require('lspconfig')[server_name].setup({}) + end, + } + }) + end + } +} diff --git a/lua/plugins/mason.lua b/lua/plugins/mason.lua deleted file mode 100644 index 9de5470..0000000 --- a/lua/plugins/mason.lua +++ /dev/null @@ -1,5 +0,0 @@ -return { - { - "williamboman/mason.nvim", - }, -}