diff options
| author | Ariel D'Alessandro <dalessandro.ariel@gmail.com> | 2023-01-08 09:58:56 +0100 |
|---|---|---|
| committer | Ariel D'Alessandro <dalessandro.ariel@gmail.com> | 2023-01-08 09:58:56 +0100 |
| commit | f7bcac5ee5db56081981bb946a66d3fc34807988 (patch) | |
| tree | 2cfc8d60054508d5297cd392d6df1e540057bcc7 /lua/alpha/lsp | |
| parent | fb9196e7766f53115009c081f0b4308ca6c081b4 (diff) | |
| download | nvim-conf-f7bcac5ee5db56081981bb946a66d3fc34807988.tar.gz nvim-conf-f7bcac5ee5db56081981bb946a66d3fc34807988.zip | |
feat: refactor lsp & cmp to lua folder from after
Diffstat (limited to 'lua/alpha/lsp')
| -rw-r--r-- | lua/alpha/lsp/attach.lua | 29 | ||||
| -rw-r--r-- | lua/alpha/lsp/init.lua | 12 | ||||
| -rw-r--r-- | lua/alpha/lsp/mason.lua | 12 | ||||
| -rw-r--r-- | lua/alpha/lsp/servers.lua | 11 | ||||
| -rw-r--r-- | lua/alpha/lsp/setups.lua | 65 | ||||
| -rw-r--r-- | lua/alpha/lsp/tools.lua | 4 |
6 files changed, 133 insertions, 0 deletions
diff --git a/lua/alpha/lsp/attach.lua b/lua/alpha/lsp/attach.lua new file mode 100644 index 0000000..ce63e02 --- /dev/null +++ b/lua/alpha/lsp/attach.lua @@ -0,0 +1,29 @@ +local telescope_mapper = require("alpha.telescope.mappings") + +local filetype_attach = setmetatable({}, { + __index = function() + return function() end + end, +}) +return function (client, bufnr) + local filetype = vim.api.nvim_buf_get_option(0, "filetype") + -- keymaps for lsp + vim.keymap.set("n", "K", vim.lsp.buf.hover, { buffer = 0 }) + vim.keymap.set("n", "<leader>vrn", vim.lsp.buf.rename, { buffer = 0 }) + vim.keymap.set("i", "<c-h>", vim.lsp.buf.signature_help, { buffer = 0 }) + vim.keymap.set("n", "<leader>vo", ":LspRestart<cr>", { noremap = true }) + vim.keymap.set({ "n", "v" }, "<leader>vca", vim.lsp.buf.code_action, {}) + vim.keymap.set("n", "<leader>vf", function() + return vim.lsp.buf.format({ async = true }) + end, {}) + + telescope_mapper("gr", "lsp_references", nil, true) + telescope_mapper("<leader>pv", "find_symbol", nil, true) + telescope_mapper("<leader>pd", "lsp_document_symbols", nil, true) + telescope_mapper("<c-]>", "lsp_definitions", nil, true) + + vim.bo.omnifunc = "v:lua.vim.lsp.omnifunc" + + -- Attach any filetype specific options to the client + filetype_attach[filetype](client, bufnr) +end diff --git a/lua/alpha/lsp/init.lua b/lua/alpha/lsp/init.lua new file mode 100644 index 0000000..86b06a6 --- /dev/null +++ b/lua/alpha/lsp/init.lua @@ -0,0 +1,12 @@ +-- LSP configuration + +-- install servers and tools +require('alpha.lsp.mason') +local setups = require("alpha.lsp.setups") + +local lspconfig = require('lspconfig') +require('mason-lspconfig').setup_handlers({ + function (server_name) + lspconfig[server_name].setup(setups[server_name]()) + end +}) diff --git a/lua/alpha/lsp/mason.lua b/lua/alpha/lsp/mason.lua new file mode 100644 index 0000000..9dab32e --- /dev/null +++ b/lua/alpha/lsp/mason.lua @@ -0,0 +1,12 @@ +local mason = require("mason") +local mason_lspconfig = require("mason-lspconfig") + +mason.setup() + +mason_lspconfig.setup({ + ensure_installed = require('alpha.lsp.servers'), +}) + +require('mason-tool-installer').setup({ + ensure_installed = require('alpha.lsp.tools'), +}) diff --git a/lua/alpha/lsp/servers.lua b/lua/alpha/lsp/servers.lua new file mode 100644 index 0000000..921a628 --- /dev/null +++ b/lua/alpha/lsp/servers.lua @@ -0,0 +1,11 @@ +return { + "phpactor", + "rust_analyzer", + "gopls", + "sumneko_lua", + "emmet_ls", + "jsonls", + "html", + "tsserver", + "volar", +} diff --git a/lua/alpha/lsp/setups.lua b/lua/alpha/lsp/setups.lua new file mode 100644 index 0000000..646eec1 --- /dev/null +++ b/lua/alpha/lsp/setups.lua @@ -0,0 +1,65 @@ +local lsp_attach = require("alpha.lsp.attach") + +local lsp_flags = { + debounce_text_changes = 150, +} + +return setmetatable({ + rust_analyzer = function() + return { + on_attach = lsp_attach, + flags = lsp_flags, + settings = { + ["rust-analyzer"] = {}, + }, + } + end, + phpactor = function() + return { + on_attach = lsp_attach, + flags = lsp_flags, + filetypes = { "php", "cucumber" }, + } + end, + emmet_ls = function() + local capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()) + + return { + on_attach = lsp_attach, + flags = lsp_flags, + capabilities = capabilities, + filetypes = { "html", "typescriptreact", "javascriptreact", "css", "sass", "scss", "less", "blade", "vue" }, + } + end, + sumneko_lua = function() + return { + on_attach = lsp_attach, + flags = lsp_flags, + settings = { + Lua = { + runtime = { + version = "LuaJIT", + }, + diagnostics = { + globals = { "vim" }, + }, + workspace = { + library = vim.api.nvim_get_runtime_file("", true), + }, + telemetry = { + enable = false, + }, + }, + }, + } + end, +}, { + __index = function() + return function () + return { + on_attach = lsp_attach, + flags = lsp_flags, + } + end + end, +}) diff --git a/lua/alpha/lsp/tools.lua b/lua/alpha/lsp/tools.lua new file mode 100644 index 0000000..23ef226 --- /dev/null +++ b/lua/alpha/lsp/tools.lua @@ -0,0 +1,4 @@ +return { + "go-debug-adapter", + "php-debug-adapter", +} |