From 1e89056dee49c7b41cfd90ed393245509b1f6a62 Mon Sep 17 00:00:00 2001 From: Snoweuph Date: Fri, 31 May 2024 18:59:57 +0200 Subject: [PATCH] LSP Code restructuring --- .config/nvim/lua/plugins/editor.lua | 5 +- .../plugins/editor/editor_language_server.lua | 79 +++++++- ..._configuration.lua => editor_nvim_dev.lua} | 0 .../language_server/language_server.lua | 170 ------------------ .../language_server/language_server_extra.lua | 40 ----- .../language_server_generic.lua | 32 ++++ .../language_server/language_server_go.lua | 23 +++ .../language_server/language_server_lua.lua | 30 ++++ .../language_server/language_server_php.lua | 29 +++ .../language_server/language_server_web.lua | 36 ++++ 10 files changed, 228 insertions(+), 216 deletions(-) rename .config/nvim/lua/plugins/editor/{language_server/language_server_nvim_configuration.lua => editor_nvim_dev.lua} (100%) delete mode 100644 .config/nvim/lua/plugins/editor/language_server/language_server.lua delete mode 100644 .config/nvim/lua/plugins/editor/language_server/language_server_extra.lua create mode 100644 .config/nvim/lua/plugins/editor/language_server/language_server_generic.lua create mode 100644 .config/nvim/lua/plugins/editor/language_server/language_server_go.lua create mode 100644 .config/nvim/lua/plugins/editor/language_server/language_server_lua.lua create mode 100644 .config/nvim/lua/plugins/editor/language_server/language_server_php.lua create mode 100644 .config/nvim/lua/plugins/editor/language_server/language_server_web.lua diff --git a/.config/nvim/lua/plugins/editor.lua b/.config/nvim/lua/plugins/editor.lua index ee1bbf0..5806e6d 100644 --- a/.config/nvim/lua/plugins/editor.lua +++ b/.config/nvim/lua/plugins/editor.lua @@ -4,5 +4,6 @@ return { require("plugins.editor.editor_code_snippets"), require("plugins.editor.editor_debugging"), require("plugins.editor.editor_language_server"), - require("plugins.editor.editor_markdown_preview") -} \ No newline at end of file + require("plugins.editor.editor_markdown_preview"), + require("plugins.editor.editor_nvim_dev") +} diff --git a/.config/nvim/lua/plugins/editor/editor_language_server.lua b/.config/nvim/lua/plugins/editor/editor_language_server.lua index 37bc374..250c011 100644 --- a/.config/nvim/lua/plugins/editor/editor_language_server.lua +++ b/.config/nvim/lua/plugins/editor/editor_language_server.lua @@ -1,5 +1,76 @@ +lua_lsp = require("plugins.editor.language_server.language_server_lua") +generic_lsp = require("plugins.editor.language_server.language_server_generic") +go_lsp = require("plugins.editor.language_server.language_server_go") +web_lsp = require("plugins.editor.language_server.language_server_web") +php_lsp = require("plugins.editor.language_server.language_server_php") + return { - require("plugins.editor.language_server.language_server"), - require("plugins.editor.language_server.language_server_extra"), - require("plugins.editor.language_server.language_server_nvim_configuration"), -} \ No newline at end of file + { + "williamboman/mason.nvim", + lazy = false, + config = function() + require("mason").setup() + end, + }, + { + "williamboman/mason-lspconfig.nvim", + lazy = false, + opts = { + auto_install = true, + }, + config = function() + require("mason-lspconfig").setup({ + ensure_installed = { + table.unpack(lua_lsp.mason_requirements), + table.unpack(generic_lsp.mason_requirements), + table.unpack(go_lsp.mason_requirements), + table.unpack(web_lsp.mason_requirements), + table.unpack(php_lsp.mason_requirements) + }, + }) + end, + }, + { + "neovim/nvim-lspconfig", + lazy = false, + config = function() + -- Setup -- + local capabilities = require("cmp_nvim_lsp").default_capabilities() + local lspconfig = require("lspconfig") + + lua_lsp.setup(lspconfig, capabilities) + generic_lsp.setup(lspconfig, capabilities) + go_lsp.setup(lspconfig, capabilities) + web_lsp.setup(lspconfig, capabilities) + php_lsp.setup(lspconfig, capabilities) + + -- Keybinding -- + vim.keymap.set("n", "cd", vim.lsp.buf.hover, { desc = "Show Code Definition" }) + vim.keymap.set("n", "gd", vim.lsp.buf.definition, { desc = "Go to Definition" }) + vim.keymap.set("n", "gr", vim.lsp.buf.references, { desc = "Go to References" }) + vim.keymap.set("n", "ca", vim.lsp.buf.code_action, { desc = "Do Code Actions" }) + end, + }, + { + "nvimtools/none-ls.nvim", + dependencies = { + "nvim-lua/plenary.nvim", + }, + config = function() + -- Setup -- + local null_ls = require("null-ls") + null_ls.setup({ + sources = { + table.unpack(lua_lsp.formatter(null_ls)), + table.unpack(generic_lsp.formatter(null_ls)), + table.unpack(go_lsp.formatter(null_ls)), + table.unpack(web_lsp.formatter(null_ls)), + table.unpack(php_lsp.formatter(null_ls)), + }, + }) + + -- Keybinding -- + vim.keymap.set("n", "fc", vim.lsp.buf.format, { desc = "Format Code" }) + end, + } +} diff --git a/.config/nvim/lua/plugins/editor/language_server/language_server_nvim_configuration.lua b/.config/nvim/lua/plugins/editor/editor_nvim_dev.lua similarity index 100% rename from .config/nvim/lua/plugins/editor/language_server/language_server_nvim_configuration.lua rename to .config/nvim/lua/plugins/editor/editor_nvim_dev.lua diff --git a/.config/nvim/lua/plugins/editor/language_server/language_server.lua b/.config/nvim/lua/plugins/editor/language_server/language_server.lua deleted file mode 100644 index 5075583..0000000 --- a/.config/nvim/lua/plugins/editor/language_server/language_server.lua +++ /dev/null @@ -1,170 +0,0 @@ -return { - { - "williamboman/mason.nvim", - lazy = false, - config = function() - require("mason").setup() - end, - }, - { - "williamboman/mason-lspconfig.nvim", - lazy = false, - opts = { - auto_install = true, - }, - config = function() - require("mason-lspconfig").setup({ - ensure_installed = { - "lua_ls", - "bashls", - "dotls", - "jsonls", - "sqlls", - "lemminx", - "yamlls", - "marksman", - "html", - "emmet_ls", - "cssls", - "tailwindcss", - "tsserver", - "stimulus_ls", - "svelte", - "volar", - "eslint", - "phpactor", - "gopls", - "rust_analyzer", - "jdtls", - "kotlin_language_server", - "pylsp", - }, - }) - end, - }, - { - "neovim/nvim-lspconfig", - lazy = false, - config = function() - -- Setup -- - local capabilities = require("cmp_nvim_lsp").default_capabilities() - local lspconfig = require("lspconfig") - - -- Lua support -- - lspconfig.lua_ls.setup({ - capabilities = capabilities, - settings = { - Lua = { - diagnostics = { - globals = { "vim" }, - } - } - } - }) - - -- Bash support -- - lspconfig.bashls.setup({ - capabilities = capabilities, - }) - -- Dotenv support -- - lspconfig.dotls.setup({ - capabilities = capabilities, - }) - - -- JSON support -- - lspconfig.jsonls.setup({ - capabilities = capabilities, - }) - -- SQL support -- - lspconfig.sqlls.setup({ - capabilities = capabilities, - }) - -- XML support -- - lspconfig.lemminx.setup({ - capabilities = capabilities, - }) - -- YAML support -- - lspconfig.yamlls.setup({ - capabilities = capabilities, - }) - - -- Markdown support -- - lspconfig.marksman.setup({ - capabilities = capabilities, - }) - - -- HTML support -- - lspconfig.html.setup({ - capabilities = capabilities, - }) - -- Emmet support -- - lspconfig.emmet_ls.setup({ - capabilities = capabilities, - }) - -- PHP support -- - lspconfig.phpactor.setup({ - capabilities = capabilities, - }) - -- CSS & SCSS support --$response - lspconfig.cssls.setup({ - capabilities = capabilities, - }) - -- Tailwind support -- - lspconfig.tailwindcss.setup({ - capabilities = capabilities, - }) - -- JavaScript & TypeScript support -- - lspconfig.tsserver.setup({ - capabilities = capabilities, - }) - -- Stimulus support -- - lspconfig.stimulus_ls.setup({ - capabilities = capabilities, - }) - -- Svelte support -- - lspconfig.svelte.setup({ - capabilities = capabilities, - }) - -- Vue support -- - lspconfig.volar.setup({ - capabilities = capabilities, - }) - - -- Go support -- - lspconfig.gopls.setup({ - capabilities = capabilities, - }) - - -- Rust support -- - lspconfig.rust_analyzer.setup({ - capabilities = capabilities, - }) - - -- Java support -- - lspconfig.jdtls.setup({ - capabilities = capabilities, - }) - -- Kotlin support -- - lspconfig.kotlin_language_server.setup({ - capabilities = capabilities, - }) - - -- Python support -- - lspconfig.pylsp.setup({ - capabilities = capabilities, - }) - - -- Eslint support -- - lspconfig.eslint.setup({ - capabilities = capabilities, - }) - - -- Keybinding -- - - vim.keymap.set("n", "cd", vim.lsp.buf.hover, { desc = "Show Code Definition" }) - vim.keymap.set("n", "gd", vim.lsp.buf.definition, { desc = "Go to Definition" }) - vim.keymap.set("n", "gr", vim.lsp.buf.references, { desc = "Go to References" }) - vim.keymap.set("n", "ca", vim.lsp.buf.code_action, { desc = "Do Code Actions" }) - end, - } -} diff --git a/.config/nvim/lua/plugins/editor/language_server/language_server_extra.lua b/.config/nvim/lua/plugins/editor/language_server/language_server_extra.lua deleted file mode 100644 index c8ce015..0000000 --- a/.config/nvim/lua/plugins/editor/language_server/language_server_extra.lua +++ /dev/null @@ -1,40 +0,0 @@ -return { - "nvimtools/none-ls.nvim", - dependencies = { - "nvim-lua/plenary.nvim", - }, - config = function() - -- Setup -- - local null_ls = require("null-ls") - null_ls.setup({ - sources = { - -- Prettier -- - null_ls.builtins.formatting.prettier, - - -- Php -- - null_ls.builtins.diagnostics.phpstan, - null_ls.builtins.formatting.phpcsfixer.with({ - prefer_local = "vendor/bin/php-cs-fixer", - args = { "fix", "--allow-risky=yes", "$FILENAME" } - }), - - -- Twig -- - null_ls.builtins.diagnostics.twigcs, - - -- JavaScript & Typescript - --null_ls.builtins.formatting.eslint_d, - - -- Lua -- - null_ls.builtins.formatting.stylua, - - -- Go -- - null_ls.builtins.formatting.gofumpt, - null_ls.builtins.code_actions.gomodifytags, - null_ls.builtins.code_actions.impl - }, - }) - - -- Keybinding -- - vim.keymap.set("n", "fc", vim.lsp.buf.format, { desc = "Format Code" }) - end, -} diff --git a/.config/nvim/lua/plugins/editor/language_server/language_server_generic.lua b/.config/nvim/lua/plugins/editor/language_server/language_server_generic.lua new file mode 100644 index 0000000..0e1f98f --- /dev/null +++ b/.config/nvim/lua/plugins/editor/language_server/language_server_generic.lua @@ -0,0 +1,32 @@ +local LSP = {} + +LSP.mason_requirements = { + "bashls", + "jsonls", + "sqlls", + "lemminx", + "yamlls", + "marksman" +} + +LSP.plugin_info = { + +} + +function LSP.setup(lspconfig, capabilities) + local config = { capabilities = capabilities } + lspconfig.bashls.setup(config) + lspconfig.jsonls.setup(config) + lspconfig.sqlls.setup(config) + lspconfig.lemminx.setup(config) + lspconfig.yamlls.setup(config) + lspconfig.marksman.setup(config) +end + +function LSP.formatter(null_ls) + return { + null_ls.builtins.formatting.prettier + } +end + +return LSP diff --git a/.config/nvim/lua/plugins/editor/language_server/language_server_go.lua b/.config/nvim/lua/plugins/editor/language_server/language_server_go.lua new file mode 100644 index 0000000..89e0609 --- /dev/null +++ b/.config/nvim/lua/plugins/editor/language_server/language_server_go.lua @@ -0,0 +1,23 @@ +local LSP = {} + +LSP.mason_requirements = { + "gopls" +} + +LSP.plugin_info = { + +} + +function LSP.setup(lspconfig, capabilities) + lspconfig.gopls.setup({ capabilities = capabilities }) +end + +function LSP.formatter(null_ls) + return { + null_ls.builtins.formatting.gofumpt, + null_ls.builtins.code_actions.gomodifytags, + null_ls.builtins.code_actions.impl + } +end + +return LSP diff --git a/.config/nvim/lua/plugins/editor/language_server/language_server_lua.lua b/.config/nvim/lua/plugins/editor/language_server/language_server_lua.lua new file mode 100644 index 0000000..0b667c9 --- /dev/null +++ b/.config/nvim/lua/plugins/editor/language_server/language_server_lua.lua @@ -0,0 +1,30 @@ +local LSP = {} + +LSP.mason_requirements = { + "lua_ls" +} + +LSP.plugin_info = { + +} + +function LSP.setup(lspconfig, capabilities) + lspconfig.lua_ls.setup({ + capabilities = capabilities, + settings = { + Lua = { + diagnostics = { + globals = { "vim" }, + } + } + } + }) +end + +function LSP.formatter(null_ls) + return { + null_ls.builtins.formatting.stylua + } +end + +return LSP diff --git a/.config/nvim/lua/plugins/editor/language_server/language_server_php.lua b/.config/nvim/lua/plugins/editor/language_server/language_server_php.lua new file mode 100644 index 0000000..e5d6c0b --- /dev/null +++ b/.config/nvim/lua/plugins/editor/language_server/language_server_php.lua @@ -0,0 +1,29 @@ +local LSP = {} + +LSP.mason_requirements = { + "phpactor", + "stimulus_ls" +} + +LSP.plugin_info = { + +} + +function LSP.setup(lspconfig, capabilities) + local config = { capabilities = capabilities } + lspconfig.phpactor.setup(config) + lspconfig.stimulus_ls.setup(config) +end + +function LSP.formatter(null_ls) + return { + null_ls.builtins.diagnostics.phpstan, + null_ls.builtins.formatting.phpcsfixer.with({ + prefer_local = "vendor/bin/php-cs-fixer", + args = { "fix", "--allow-risky=yes", "$FILENAME" } + }), + null_ls.builtins.diagnostics.twigcs, + } +end + +return LSP diff --git a/.config/nvim/lua/plugins/editor/language_server/language_server_web.lua b/.config/nvim/lua/plugins/editor/language_server/language_server_web.lua new file mode 100644 index 0000000..0e58e2f --- /dev/null +++ b/.config/nvim/lua/plugins/editor/language_server/language_server_web.lua @@ -0,0 +1,36 @@ +local LSP = {} + +LSP.mason_requirements = { + "html", + "emmet_ls", + "cssls", + "tailwindcss", + "tsserver", + "svelte", + "volar", + "eslint", +} + +LSP.plugin_info = { + +} + +function LSP.setup(lspconfig) + local config = { capabilities = capabilities } + lspconfig.html.setup(config) + lspconfig.emmet_ls.setup(config) + lspconfig.cssls.setup(config) + lspconfig.tailwindcss.setup(config) + lspconfig.tsserver.setup(config) + lspconfig.svelte.setup(config) + lspconfig.volar.setup(config) + lspconfig.eslint.setup(config) +end + +function LSP.formatter(null_ls) + return { + null_ls.builtins.formatting.eslint_d, + } +end + +return LSP