From 3094bf2a3983b375f4adeccd25c3b12bbbded2aa Mon Sep 17 00:00:00 2001 From: Squibid Date: Thu, 17 Apr 2025 11:41:32 -0500 Subject: a lot more stuff --- lua/conf/plugins/mason-lspconfig.lua | 177 +++++++++++++++++++---------------- 1 file changed, 95 insertions(+), 82 deletions(-) (limited to 'lua/conf/plugins/mason-lspconfig.lua') diff --git a/lua/conf/plugins/mason-lspconfig.lua b/lua/conf/plugins/mason-lspconfig.lua index 65c5693..ceedb6c 100644 --- a/lua/conf/plugins/mason-lspconfig.lua +++ b/lua/conf/plugins/mason-lspconfig.lua @@ -1,18 +1,23 @@ local misc = require('core.misc') local lsp = require('core.lsp.functions') -local map, auto, augroup = misc.map, misc.auto, misc.augroup +local map = misc.map return { 'williamboman/mason-lspconfig.nvim', requires = { 'williamboman/mason.nvim', { 'neovim/nvim-lspconfig', - disable = vim.version().minor < 8, + disable = not vim.fn.has("nvim-0.8.0"), function() lsp.setup() end - } + }, + + -- these two update some lsp capabilities and therefore must be run first + -- 'hrsh7th/cmp-nvim-lsp', + -- 'kevinhwang91/nvim-ufo' }, function() + local lspconfig = require('lspconfig') local util = require('lspconfig.util') -- setup language servers @@ -27,97 +32,105 @@ return { 'williamboman/mason-lspconfig.nvim', "bashls", "zls" -- "asm-lsp", -- seems to be broken - } - } - require('mason-lspconfig').setup_handlers { - function(server_name) - require('lspconfig')[server_name].setup { - on_attach = lsp.lsp_attach, - capabilities = lsp.capabilities() - } - end, + }, + + -- setup all handlers + handlers = { + function(server_name) + lspconfig[server_name].setup {} + end, - -- setup luals - ["lua_ls"] = function(server_name) - local root_files = { '.luarc.json', '.luarc.jsonc', '.luacheckrc', - '.stylua.toml', 'stylua.toml', 'selene.toml', 'selene.yml', - 'README.md' - } + -- setup luals + ["lua_ls"] = function(server_name) + local root_files = { '.luarc.json', '.luarc.jsonc', '.luacheckrc', + '.stylua.toml', 'stylua.toml', 'selene.toml', 'selene.yml', + 'README.md' + } - -- FIXME: luals seems to start up twice and sends back twice the - -- completions (one configured with the below settings and one without) - require('lspconfig')[server_name].setup { - on_attach = lsp.attach, - capabilities = lsp.capabilities(), - settings = { - Lua = { - diagnostics = { - globals = { "vim", 'mp' } - }, - runtime = { - version = 'LuaJIT' - }, - format = { - enable = false - }, - workspace = { - checkThirdParty = false, - library = { - vim.env.VIMRUNTIME + -- FIXME: luals seems to start up twice and sends back twice the + -- completions (one configured with the below settings and one without) + lspconfig[server_name].setup { + settings = { + Lua = { + diagnostics = { + globals = { "vim", 'mp' } + }, + runtime = { + version = 'LuaJIT' + }, + format = { + enable = false + }, + workspace = { + checkThirdParty = false, + library = { + vim.env.VIMRUNTIME + } } } - } - }, + }, - root_dir = function(fname) - local root = util.root_pattern(unpack(root_files))(fname) - if root and root ~= vim.env.HOME then - return root - end + root_dir = function(fname) + local root = util.root_pattern(unpack(root_files))(fname) + if root and root ~= vim.env.HOME then + return root + end - root = util.root_pattern('lua/')(fname) - if root then - return root + root = util.root_pattern('lua/')(fname) + if root then + return root + end + return util.find_git_ancestor(fname) end - return util.find_git_ancestor(fname) - end - } - end, - - -- setup clangd - ["clangd"] = function(server_name) - require('lspconfig')[server_name].setup { - on_attach = function(client, bufnr) - lsp.attach(client, bufnr) + } + end, - -- add some clangd specific mappings - local opts = { buffer = bufnr } - map("n", "o", "ClangdSwitchSourceHeader", opts) - end, - capabilities = lsp.capabilities(), + -- setup clangd + ["clangd"] = function(server_name) + lspconfig[server_name].setup { + on_attach = function(client, bufnr) + -- add some clangd specific mappings + local opts = { buffer = bufnr } + map("n", "o", "ClangdSwitchSourceHeader", opts) + end, - cmd = { - "clangd", - "--background-index", - "--clang-tidy", - "--header-insertion=iwyu", - "--completion-style=detailed", - "--function-arg-placeholders", - "--fallback-style=llvm" - }, - init_options = { - usePlaceholders = true, - clangdFileStatus = true, - fallback_flags = { - "-xc" -- makes clangd think we're using c instead of c++ + cmd = { + "clangd", + "--background-index", + "--clang-tidy", + "--header-insertion=iwyu", + "--completion-style=detailed", + "--function-arg-placeholders", + "--fallback-style=llvm" + }, + init_options = { + usePlaceholders = true, + clangdFileStatus = true, + fallback_flags = { + "-xc" -- makes clangd think we're using c instead of c++ + } } } - } - end, + end, - -- disable it, we start this using nvim-jdtls - ["jdtls"] = function(_) end - } + -- disable it, we start this using nvim-jdtls + ["jdtls"] = function(_) end, + -- setup basedpyright + ["basedpyright"] = function(server_name) + lspconfig[server_name].setup { + on_attach = function(client, bufnr) + -- add some basedpyright specific mappings + local opts = { buffer = bufnr } + map("n", "cri", "PyrightOrganizeImports", opts) + end, + } + end + }, + + ["openscad_lsp"] = function(server_name) + lspconfig[server_name].setup {} + end + } end } -- cgit v1.2.1