aboutsummaryrefslogtreecommitdiffstats
path: root/lua/alpha/lsp
diff options
context:
space:
mode:
authorAriel D'Alessandro <dalessandro.ariel@gmail.com>2023-01-08 09:58:56 +0100
committerAriel D'Alessandro <dalessandro.ariel@gmail.com>2023-01-08 09:58:56 +0100
commitf7bcac5ee5db56081981bb946a66d3fc34807988 (patch)
tree2cfc8d60054508d5297cd392d6df1e540057bcc7 /lua/alpha/lsp
parentfb9196e7766f53115009c081f0b4308ca6c081b4 (diff)
downloadnvim-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.lua29
-rw-r--r--lua/alpha/lsp/init.lua12
-rw-r--r--lua/alpha/lsp/mason.lua12
-rw-r--r--lua/alpha/lsp/servers.lua11
-rw-r--r--lua/alpha/lsp/setups.lua65
-rw-r--r--lua/alpha/lsp/tools.lua4
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",
+}