From fdc5ae7fcf8a037995cd9ee2619f3ade85358936 Mon Sep 17 00:00:00 2001 From: Shadow Cat Date: Fri, 31 Mar 2023 03:51:19 -0400 Subject: [PATCH] make lspconfig sane --- ftplugin/java.lua | 6 -- lua/config/lsp-settings.lua | 74 ++++++++++++------------- lua/config/reload.lua | 1 + lua/plugins/lsp.lua | 107 ++---------------------------------- lua/plugins/lspconfig.lua | 61 ++++++++++++++++++++ 5 files changed, 101 insertions(+), 148 deletions(-) create mode 100644 lua/plugins/lspconfig.lua diff --git a/ftplugin/java.lua b/ftplugin/java.lua index 4a83d83..c9af93b 100644 --- a/ftplugin/java.lua +++ b/ftplugin/java.lua @@ -1,12 +1,6 @@ -local settings = require 'config.lsp-settings' -local on_attach = settings.on_attach -local capabilities = settings.capabilities - local config = { cmd = {'/bin/jdtls'}, root_dir = vim.fs.dirname(vim.fs.find({'.gradlew', '.git', 'mvnw'}, { upward = true })[1]), - on_attach = on_attach, - capabilities = capabilities, } require('jdtls').start_or_attach(config) diff --git a/lua/config/lsp-settings.lua b/lua/config/lsp-settings.lua index e57317f..c3fe6f7 100644 --- a/lua/config/lsp-settings.lua +++ b/lua/config/lsp-settings.lua @@ -1,42 +1,36 @@ -local on_attach = function(_, bufnr) - vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc") - vim.o.signcolumn = "yes" +vim.api.nvim_create_autocmd('LspAttach', { + group = vim.api.nvim_create_augroup('UserLspConfig', {}), + callback = function(ev) + vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc' + vim.o.signcolumn = "yes" - local map = function(from, to) - vim.keymap.set("n", from, to, - { noremap = true, silent = true, buffer = bufnr } - ) + local map = function(from, to) + vim.keymap.set("n", from, to, + { noremap = true, silent = true, buffer = ev.buf } + ) + end + + local builtin = require('telescope.builtin') + + map("gd", builtin.lsp_definitions) + map("gr", builtin.lsp_references) + map("gi", builtin.lsp_implementations) + map("gs", builtin.lsp_document_symbols) + map("gD", vim.lsp.buf.declaration) + + map("K", vim.lsp.buf.hover) + map("", vim.lsp.buf.signature_help) + + map("wa", vim.lsp.buf.add_workspace_folder) + map("wr", vim.lsp.buf.remove_workspace_folder) + map("wl", function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end) + map("D", vim.lsp.buf.type_definition) + map("rn", vim.lsp.buf.rename) + map("ca", vim.lsp.buf.code_action) + map("fm", function() + vim.lsp.buf.format { async = true } + end) end - - local builtin = require('telescope.builtin') - - map("gd", builtin.lsp_definitions) - map("gr", builtin.lsp_references) - map("gi", builtin.lsp_implementations) - map("gs", builtin.lsp_document_symbols) - map("gD", vim.lsp.buf.declaration) - - map("K", vim.lsp.buf.hover) - map("", vim.lsp.buf.signature_help) - - map("wa", vim.lsp.buf.add_workspace_folder) - map("wr", vim.lsp.buf.remove_workspace_folder) - map("wl", function() - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - end) - map("D", vim.lsp.buf.type_definition) - map("rn", vim.lsp.buf.rename) - map("ca", vim.lsp.buf.code_action) - map("fm", function() - vim.lsp.buf.format { async = true } - end) -end - -local capabilities = require "cmp_nvim_lsp".default_capabilities( - vim.lsp.protocol.make_client_capabilities() -) - -return { - on_attach = on_attach, - capabilities = capabilities -} +}) diff --git a/lua/config/reload.lua b/lua/config/reload.lua index ecd0273..f81adef 100644 --- a/lua/config/reload.lua +++ b/lua/config/reload.lua @@ -10,4 +10,5 @@ for _, mod in ipairs({ "mappings", "utils", "theme", + "lsp-settings", }) do u.mod_post_write(g, "config." .. mod, u.reload) end diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index 8c13367..83707ee 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -1,106 +1,11 @@ -local config = function() - local settings = require("config.lsp-settings") - local on_attach = settings.on_attach - local capabilities = settings.capabilities - - require("lspconfig").lua_ls.setup { - on_attach = on_attach, - capabilities = capabilities, - settings = { - Lua = { - diagnostics = { - globals = { "vim" }, - }, - workspace = { - library = vim.api.nvim_get_runtime_file("", true), - checkThirdParty = false - }, - telemetry = { - enable = false, - }, - }, - }, - } - - vim.g.markdown_fenced_languages = { - "ts=typescript" - } - local c = require("lspconfig") - c.clangd.setup { - on_attach = on_attach, - capabilities = capabilities, - } - c.asm_lsp.setup { - on_attach = on_attach, - capabilities = capabilities, - } - c.pylsp.setup { - on_attach = on_attach, - capabilities = capabilities, - } - c.kotlin_language_server.setup { - on_attach = on_attach, - capabilities = capabilities, - } - c.denols.setup { - on_attach = on_attach, - capabilities = capabilities, - root_dir = c.util.root_pattern("deno.json", "deno.jsonc"), - } - c.angularls.setup { - on_attach = on_attach, - capabilities = capabilities, - } - c.tsserver.setup { - on_attach = on_attach, - capabilities = capabilities, - root_dir = c.util.root_pattern("package.json", "tsconfig.json", "jsconfig.json"), - single_file_support = false, - } - c.jsonls.setup { - on_attach = on_attach, - capabilities = capabilities, - } - c.omnisharp.setup { - cmd = { "omnisharp" }, - - enable_editorconfig_support = true, - enable_ms_build_load_projects_on_demand = false, - enable_roslyn_analyzers = false, - organize_imports_on_format = false, - enable_import_completion = false, - sdk_include_prereleases = true, - analyze_open_documents_only = false, - - on_attach = on_attach, - capabilities = capabilities, - } -end - -local rs_config = function() - local settings = require "config.lsp-settings" - local on_attach = settings.on_attach - local capabilities = settings.capabilities - require "rust-tools".setup { - server = { - on_attach = on_attach, - capabilities = capabilities, - } - } -end - return { - { - "neovim/nvim-lspconfig", - config = config - }, { "simrat39/rust-tools.nvim", dependencies = { "nvim-lua/plenary.nvim", "mfussenegger/nvim-dap", }, - config = rs_config + config = function() require "rust-tools".setup {} end }, { "windwp/nvim-autopairs", @@ -110,12 +15,10 @@ return { "scalameta/nvim-metals", dependencies = { "nvim-lua/plenary.nvim" } }, - "mfussenegger/nvim-jdtls", - "folke/neodev.nvim", { "lervag/vimtex", - config = function() - vim.g.vimtex_view_method = 'zathura' - end - } + config = function() vim.g.vimtex_view_method = 'zathura' end + }, + "mfussenegger/nvim-jdtls", + "folke/neodev.nvim", } diff --git a/lua/plugins/lspconfig.lua b/lua/plugins/lspconfig.lua new file mode 100644 index 0000000..e184f5f --- /dev/null +++ b/lua/plugins/lspconfig.lua @@ -0,0 +1,61 @@ +local config = function() + local c = require("lspconfig") + + vim.g.markdown_fenced_languages = { + "ts=typescript" + } + + c.lua_ls.setup { + settings = { + Lua = { + diagnostics = { + globals = { "vim" }, + }, + workspace = { + library = vim.api.nvim_get_runtime_file("", true), + checkThirdParty = false + }, + telemetry = { + enable = false, + }, + }, + }, + } + c.denols.setup { + root_dir = c.util.root_pattern("deno.json", "deno.jsonc"), + } + c.tsserver.setup { + root_dir = c.util.root_pattern("package.json", "tsconfig.json", "jsconfig.json"), + single_file_support = false, + } + c.omnisharp.setup { + cmd = { "omnisharp" }, + + enable_editorconfig_support = true, + enable_ms_build_load_projects_on_demand = false, + enable_roslyn_analyzers = false, + organize_imports_on_format = false, + enable_import_completion = false, + sdk_include_prereleases = true, + analyze_open_documents_only = false, + } + c.typst_lsp.setup { + cmd = { "/home/bryan/repos/typst-lsp/target/release/typst-lsp" }, + } + + c.angularls.setup {} + c.clangd.setup {} + c.asm_lsp.setup {} + c.pylsp.setup {} + c.kotlin_language_server.setup {} + c.jsonls.setup {} + + require 'config.lsp-settings' +end + +return { + { + "neovim/nvim-lspconfig", + config = config + }, +}