mirror of
https://github.com/nmasur/dotfiles
synced 2025-07-06 09:40:14 +00:00
conditional lsp servers
This commit is contained in:
@ -4,6 +4,10 @@
|
||||
|
||||
local M = {}
|
||||
|
||||
function on_path(program)
|
||||
return vim.fn.executable(program) == 1
|
||||
end
|
||||
|
||||
M.packer = function(use)
|
||||
-- Language server engine
|
||||
use({
|
||||
@ -13,16 +17,24 @@ M.packer = function(use)
|
||||
local capabilities = require("cmp_nvim_lsp").update_capabilities(
|
||||
vim.lsp.protocol.make_client_capabilities()
|
||||
)
|
||||
require("lspconfig").rust_analyzer.setup({ capabilities = capabilities })
|
||||
require("lspconfig").tflint.setup({ capabilities = capabilities })
|
||||
require("lspconfig").terraformls.setup({ capabilities = capabilities })
|
||||
require("lspconfig").pyright.setup({
|
||||
on_attach = function()
|
||||
-- set keymaps (requires 0.7.0)
|
||||
-- vim.keymap.set("n", "", "", {buffer=0})
|
||||
end,
|
||||
capabilities = capabilities,
|
||||
})
|
||||
if on_path("rust-analyzer") then
|
||||
require("lspconfig").rust_analyzer.setup({ capabilities = capabilities })
|
||||
end
|
||||
if on_path("tflint") then
|
||||
require("lspconfig").tflint.setup({ capabilities = capabilities })
|
||||
end
|
||||
if on_path("terraform-ls") then
|
||||
require("lspconfig").terraformls.setup({ capabilities = capabilities })
|
||||
end
|
||||
if on_path("pyright") then
|
||||
require("lspconfig").pyright.setup({
|
||||
on_attach = function()
|
||||
-- set keymaps (requires 0.7.0)
|
||||
-- vim.keymap.set("n", "", "", {buffer=0})
|
||||
end,
|
||||
capabilities = capabilities,
|
||||
})
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
@ -40,16 +52,47 @@ M.packer = function(use)
|
||||
config = function()
|
||||
require("null-ls").setup({
|
||||
sources = {
|
||||
require("null-ls").builtins.formatting.stylua,
|
||||
require("null-ls").builtins.formatting.black,
|
||||
require("null-ls").builtins.formatting.fish_indent,
|
||||
require("null-ls").builtins.formatting.nixfmt,
|
||||
require("null-ls").builtins.formatting.rustfmt,
|
||||
require("null-ls").builtins.diagnostics.shellcheck,
|
||||
require("null-ls").builtins.formatting.stylua.with({
|
||||
condition = function()
|
||||
return on_path("stylua")
|
||||
end,
|
||||
}),
|
||||
require("null-ls").builtins.formatting.black.with({
|
||||
condition = function()
|
||||
return on_path("black")
|
||||
end,
|
||||
}),
|
||||
require("null-ls").builtins.formatting.fish_indent.with({
|
||||
condition = function()
|
||||
return on_path("fish_indent")
|
||||
end,
|
||||
}),
|
||||
require("null-ls").builtins.formatting.nixfmt.with({
|
||||
condition = function()
|
||||
return on_path("nixfmt")
|
||||
end,
|
||||
}),
|
||||
require("null-ls").builtins.formatting.rustfmt.with({
|
||||
condition = function()
|
||||
return on_path("rustfmt")
|
||||
end,
|
||||
}),
|
||||
require("null-ls").builtins.diagnostics.shellcheck.with({
|
||||
condition = function()
|
||||
return on_path("shellcheck")
|
||||
end,
|
||||
}),
|
||||
require("null-ls").builtins.formatting.shfmt.with({
|
||||
extra_args = { "-i", "4", "-ci" },
|
||||
condition = function()
|
||||
return on_path("shfmt")
|
||||
end,
|
||||
}),
|
||||
require("null-ls").builtins.formatting.terraform_fmt.with({
|
||||
condition = function()
|
||||
return on_path("terraform")
|
||||
end,
|
||||
}),
|
||||
require("null-ls").builtins.formatting.terraform_fmt,
|
||||
-- require("null-ls").builtins.diagnostics.luacheck,
|
||||
-- require("null-ls").builtins.diagnostics.markdownlint,
|
||||
-- require("null-ls").builtins.diagnostics.pylint,
|
||||
@ -57,12 +100,14 @@ M.packer = function(use)
|
||||
-- Format on save
|
||||
on_attach = function(client)
|
||||
if client.resolved_capabilities.document_formatting then
|
||||
vim.cmd([[
|
||||
augroup LspFormatting
|
||||
autocmd! * <buffer>
|
||||
autocmd BufWritePre <buffer> lua vim.lsp.buf.formatting_seq_sync()
|
||||
augroup END
|
||||
]])
|
||||
local id = vim.api.nvim_create_augroup("LspFormatting", {
|
||||
clear = true,
|
||||
})
|
||||
vim.api.nvim_create_autocmd("BufWritePre", {
|
||||
group = id,
|
||||
pattern = "*",
|
||||
callback = vim.lsp.buf.formatting_seq_sync,
|
||||
})
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
@ -21,6 +21,7 @@ M.packer = function(use)
|
||||
"yaml",
|
||||
"json",
|
||||
},
|
||||
auto_install = true,
|
||||
highlight = { enable = true },
|
||||
indent = { enable = true },
|
||||
})
|
||||
|
@ -57,6 +57,19 @@ M.packer = function(use)
|
||||
requires = { "nvim-telescope/telescope.nvim" },
|
||||
config = function()
|
||||
require("telescope").load_extension("project")
|
||||
|
||||
choose_project = function()
|
||||
local opts = require("telescope.themes").get_ivy({
|
||||
layout_config = {
|
||||
bottom_pane = {
|
||||
height = 10,
|
||||
},
|
||||
},
|
||||
})
|
||||
require("telescope").extensions.project.project(opts)
|
||||
end
|
||||
|
||||
vim.keymap.set("n", "<C-p>", choose_project)
|
||||
end,
|
||||
})
|
||||
|
||||
|
Reference in New Issue
Block a user