my demo first config lua
This commit is contained in:
65
current_config/lua/alpha/lsp/init.lua
Normal file
65
current_config/lua/alpha/lsp/init.lua
Normal file
@@ -0,0 +1,65 @@
|
||||
return {
|
||||
setup = function(ops)
|
||||
ops = vim.tbl_deep_extend("force", require "alpha.lsp.default", ops)
|
||||
|
||||
local lspconfig = require "lspconfig"
|
||||
|
||||
local mason_servers = {}
|
||||
for server, options in pairs(ops.servers) do
|
||||
if options.enable == true then
|
||||
local ok, definition = pcall(require, "alpha.lsp.servers." .. server)
|
||||
local server_options
|
||||
if not ok then
|
||||
server_options = ops.default_options(options)
|
||||
else
|
||||
server_options = definition(options)
|
||||
end
|
||||
lspconfig[server].setup(server_options)
|
||||
table.insert(mason_servers, server)
|
||||
end
|
||||
end
|
||||
|
||||
-- Mason
|
||||
if ops.mason.enable then
|
||||
local mason_ops = {}
|
||||
if ops.mason.auto_install == true then
|
||||
mason_ops.ensure_installed = mason_servers
|
||||
end
|
||||
local mason_lspconfig = require "mason-lspconfig"
|
||||
mason_lspconfig.setup(mason_ops)
|
||||
end
|
||||
|
||||
-- TODO: implement null ls with options
|
||||
require "alpha.lsp.null-ls"
|
||||
|
||||
local servers = {}
|
||||
for server, options in pairs(ops.servers) do
|
||||
table.insert(servers, string.format("%s <%s>", server, options.enable))
|
||||
end
|
||||
|
||||
-- TODO: create an auto command that on write of the configuration, calls again the setup and restart the server if it's up.
|
||||
-- can get the client by name of the file
|
||||
|
||||
vim.api.nvim_create_user_command("AlphaLSP", function()
|
||||
vim.ui.select(servers, { prompt = "LSP Servers" }, function(server)
|
||||
if server == nil then
|
||||
return
|
||||
end
|
||||
|
||||
server = string.match(server, "^(.+) <")
|
||||
local path = string.format("%s/lua/alpha/lsp/servers/%s.lua", vim.fn.stdpath "config", server)
|
||||
if vim.fn.filereadable(path) == 0 then
|
||||
local create = vim.fn.confirm("Server Does Not exist. Create new server?", "&Yes\n&No\n&Cancel")
|
||||
if create ~= 1 then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
local uri = vim.uri_from_fname(path)
|
||||
local buffer = vim.uri_to_bufnr(uri)
|
||||
|
||||
vim.api.nvim_win_set_buf(0, buffer)
|
||||
end)
|
||||
end, {})
|
||||
end,
|
||||
}
|
||||
Reference in New Issue
Block a user