New version: created v3

This commit is contained in:
Keyitdev
2022-07-23 15:08:47 +02:00
parent eb3bdd5962
commit a2d46e7b94
551 changed files with 103679 additions and 4704 deletions
+167
View File
@@ -0,0 +1,167 @@
astronvim.lsp = {}
local user_plugin_opts = astronvim.user_plugin_opts
local conditional_func = astronvim.conditional_func
local function lsp_highlight_document(client)
if client.resolved_capabilities.document_highlight then
vim.api.nvim_create_augroup("lsp_document_highlight", { clear = true })
vim.api.nvim_create_autocmd("CursorHold", {
group = "lsp_document_highlight",
pattern = "<buffer>",
callback = vim.lsp.buf.document_highlight,
})
vim.api.nvim_create_autocmd("CursorMoved", {
group = "lsp_document_highlight",
pattern = "<buffer>",
callback = vim.lsp.buf.clear_references,
})
end
end
astronvim.lsp.on_attach = function(client, bufnr)
astronvim.set_mappings(
user_plugin_opts("lsp.mappings", {
n = {
["K"] = {
function()
vim.lsp.buf.hover()
end,
desc = "Hover symbol details",
buffer = bufnr,
},
["<leader>la"] = {
function()
vim.lsp.buf.code_action()
end,
desc = "LSP code action",
buffer = bufnr,
},
["<leader>lf"] = {
function()
vim.lsp.buf.formatting_sync()
end,
desc = "Format code",
buffer = bufnr,
},
["<leader>lh"] = {
function()
vim.lsp.buf.signature_help()
end,
desc = "Signature help",
buffer = bufnr,
},
["<leader>lr"] = {
function()
vim.lsp.buf.rename()
end,
desc = "Rename current symbol",
buffer = bufnr,
},
["gD"] = {
function()
vim.lsp.buf.declaration()
end,
desc = "Declaration of current symbol",
buffer = bufnr,
},
["gI"] = {
function()
vim.lsp.buf.implementation()
end,
desc = "Implementation of current symbol",
buffer = bufnr,
},
["gd"] = {
function()
vim.lsp.buf.definition()
end,
desc = "Show the definition of current symbol",
buffer = bufnr,
},
["gr"] = {
function()
vim.lsp.buf.references()
end,
desc = "References of current symbol",
buffer = bufnr,
},
["<leader>ld"] = {
function()
vim.diagnostic.open_float()
end,
desc = "Hover diagnostics",
buffer = bufnr,
},
["[d"] = {
function()
vim.diagnostic.goto_prev()
end,
desc = "Previous diagnostic",
buffer = bufnr,
},
["]d"] = {
function()
vim.diagnostic.goto_next()
end,
desc = "Next diagnostic",
buffer = bufnr,
},
["gl"] = {
function()
vim.diagnostic.open_float()
end,
desc = "Hover diagnostics",
buffer = bufnr,
},
},
}),
{ buffer = bufnr }
)
vim.api.nvim_buf_create_user_command(bufnr, "Format", function()
vim.lsp.buf.formatting()
end, { desc = "Format file with LSP" })
local on_attach_override = user_plugin_opts("lsp.on_attach", nil, false)
local aerial_avail, aerial = pcall(require, "aerial")
conditional_func(on_attach_override, true, client, bufnr)
conditional_func(aerial.on_attach, aerial_avail, client, bufnr)
lsp_highlight_document(client)
end
astronvim.lsp.capabilities = vim.lsp.protocol.make_client_capabilities()
astronvim.lsp.capabilities.textDocument.completion.completionItem.documentationFormat = { "markdown", "plaintext" }
astronvim.lsp.capabilities.textDocument.completion.completionItem.snippetSupport = true
astronvim.lsp.capabilities.textDocument.completion.completionItem.preselectSupport = true
astronvim.lsp.capabilities.textDocument.completion.completionItem.insertReplaceSupport = true
astronvim.lsp.capabilities.textDocument.completion.completionItem.labelDetailsSupport = true
astronvim.lsp.capabilities.textDocument.completion.completionItem.deprecatedSupport = true
astronvim.lsp.capabilities.textDocument.completion.completionItem.commitCharactersSupport = true
astronvim.lsp.capabilities.textDocument.completion.completionItem.tagSupport = { valueSet = { 1 } }
astronvim.lsp.capabilities.textDocument.completion.completionItem.resolveSupport = {
properties = { "documentation", "detail", "additionalTextEdits" },
}
function astronvim.lsp.server_settings(server_name)
local server = require("lspconfig")[server_name]
local opts = user_plugin_opts(
"lsp.server-settings." .. server_name,
user_plugin_opts("lsp.server-settings." .. server_name, {
capabilities = vim.tbl_deep_extend("force", astronvim.lsp.capabilities, server.capabilities or {}),
}, true, "configs")
)
local old_on_attach = server.on_attach
local user_on_attach = opts.on_attach
opts.on_attach = function(client, bufnr)
conditional_func(old_on_attach, true, client, bufnr)
astronvim.lsp.on_attach(client, bufnr)
conditional_func(user_on_attach, true, client, bufnr)
end
return opts
end
function astronvim.lsp.disable_formatting(client)
client.resolved_capabilities.document_formatting = false
end
return astronvim.lsp
+55
View File
@@ -0,0 +1,55 @@
local status_ok, lspconfig = pcall(require, "lspconfig")
if status_ok then
require "configs.lsp.handlers"
local insert = table.insert
local tbl_contains = vim.tbl_contains
local sign_define = vim.fn.sign_define
local user_plugin_opts = astronvim.user_plugin_opts
local user_registration = user_plugin_opts("lsp.server_registration", nil, false)
local signs = {
{ name = "DiagnosticSignError", text = "" },
{ name = "DiagnosticSignWarn", text = "" },
{ name = "DiagnosticSignHint", text = "" },
{ name = "DiagnosticSignInfo", text = "" },
}
for _, sign in ipairs(signs) do
sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = "" })
end
vim.diagnostic.config(user_plugin_opts("diagnostics", {
virtual_text = true,
signs = { active = signs },
update_in_insert = true,
underline = true,
severity_sort = true,
float = {
focusable = false,
style = "minimal",
border = "rounded",
source = "always",
header = "",
prefix = "",
},
}))
vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = "rounded" })
vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { border = "rounded" })
local servers = user_plugin_opts "lsp.servers"
local skip_setup = user_plugin_opts "lsp.skip_setup"
local installer_avail, lsp_installer = pcall(require, "nvim-lsp-installer")
if installer_avail then
for _, server in ipairs(lsp_installer.get_installed_servers()) do
insert(servers, server.name)
end
end
for _, server in ipairs(servers) do
if not tbl_contains(skip_setup, server) then
local opts = astronvim.lsp.server_settings(server)
if type(user_registration) == "function" then
user_registration(server, opts)
else
lspconfig[server].setup(opts)
end
end
end
end
@@ -0,0 +1 @@
return { on_attach = astronvim.lsp.disable_formatting }
@@ -0,0 +1,17 @@
return {
on_attach = astronvim.lsp.disable_formatting,
settings = {
json = {
schemas = require("schemastore").json.schemas(),
},
},
setup = {
commands = {
Format = {
function()
vim.lsp.buf.range_formatting({}, { 0, 0 }, { vim.fn.line "$", 0 })
end,
},
},
},
}
@@ -0,0 +1,9 @@
return {
settings = {
python = {
analysis = {
typeCheckingMode = "off",
},
},
},
}
@@ -0,0 +1,15 @@
return {
settings = {
["rust-analyzer"] = {
cargo = {
loadOutDirsFromCheck = true,
},
checkOnSave = {
command = "clippy",
},
experimental = {
procAttrMacros = true,
},
},
},
}
@@ -0,0 +1,16 @@
return {
on_attach = astronvim.lsp.disable_formatting,
settings = {
Lua = {
diagnostics = {
globals = { "vim" },
},
workspace = {
library = {
[vim.fn.expand "$VIMRUNTIME/lua"] = true,
[astronvim.install.home .. "/lua"] = true,
},
},
},
},
}
@@ -0,0 +1 @@
return { on_attach = astronvim.lsp.disable_formatting }