117 lines
3.4 KiB
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,
|
|
}
|
|
}
|