neovimconfig/lua/plugin/lsp.lua

117 lines
3.4 KiB
Lua

return {
{
"neovim/nvim-lspconfig",
dependencies = {
"williamboman/mason.nvim",
"williamboman/mason-lspconfig.nvim",
"saghen/blink.cmp",
"nvim-telescope/telescope-ui-select.nvim",
"nvimtools/none-ls.nvim",
'nvim-treesitter/nvim-treesitter',
'nvim-tree/nvim-web-devicons',
"jay-babu/mason-null-ls.nvim",
},
config = function()
-- setup --
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities = vim.tbl_deep_extend('force', capabilities, require('blink.cmp').get_lsp_capabilities({}, false))
-- mason --
require("mason").setup({
PATH = "append",
ui = {
border = "rounded",
icons = {
package_installed = "",
package_pending = "",
package_uninstalled = ""
}
}
})
-- mason lspconfig --
require("mason-lspconfig").setup({
ensure_installed = {
"lua_ls",
"clangd",
"rust_analyzer",
},
handlers = {
-- The first entry (without a key) will be the default handler
-- and will be called for each installed server that doesn't have
-- a dedicated handler.
function(server_name) -- default handler (optional)
require("lspconfig")[server_name].setup {
capabilities = capabilities
}
end,
clangd = function()
require("lspconfig").clangd.setup {
capabilities = capabilities,
on_attach = function(client)
client.server_capabilities.documentFormattingProvider = false
client.server_capabilities.documentRangeFormattingProvider = false
end,
}
end,
}
})
-- telescope ui for null-ls
require("telescope").setup {
extensions = {
["ui-select"] = {
}
}
}
require("telescope").load_extension("ui-select")
-- null-ls (none-ls)
local null_ls = require('null-ls')
require("null-ls").setup({
sources = {
null_ls.builtins.diagnostics.trail_space.with {
disabled_filetypes = { "lua" }
},
null_ls.builtins.diagnostics.sqlfluff.with({
extra_args = { "--dialect", "sqlite" },
}),
null_ls.builtins.formatting.sqlfluff.with({
extra_args = { "--dialect", "sqlite" },
}),
null_ls.builtins.formatting.clang_format.with({
extra_args = { "-style={BasedOnStyle: llvm, IndentWidth: 2, BreakBeforeBraces: Linux, ColumnLimit: 0}" }
})
},
})
require("mason-null-ls").setup({
ensure_installed = { "clang_format", "shellharden", "shfmt" }
})
-- config --
vim.diagnostic.config({
update_in_insert = true,
signs = { text = { [vim.diagnostic.severity.ERROR] = "", [vim.diagnostic.severity.WARN] = "", [vim.diagnostic.severity.HINT] = "", [vim.diagnostic.severity.INFO] = "" } },
float = {
focusable = false,
style = "minimal",
border = "rounded",
source = "always",
header = "",
prefix = "",
},
virtual_text = {
prefix = '', -- Could be '●', '■', 'x', '▎', or anything else
},
})
end,
}
}