2021-08-04 22:21:44 +02:00
|
|
|
local pid = vim.fn.getpid()
|
|
|
|
|
|
|
|
-- lightbulb
|
2022-05-03 21:48:38 +02:00
|
|
|
vim.api.nvim_create_autocmd({"CursorHold", "CursorHoldI"}, {
|
|
|
|
pattern = "*",
|
|
|
|
callback = require"nvim-lightbulb".update_lightbulb,
|
|
|
|
})
|
2021-08-04 22:21:44 +02:00
|
|
|
|
2022-05-03 21:48:38 +02:00
|
|
|
local on_attach = function(client, bufnr)
|
2021-08-04 22:21:44 +02:00
|
|
|
-- codelens
|
2022-05-03 21:48:38 +02:00
|
|
|
if client.resolved_capabilities.code_lens then
|
|
|
|
vim.api.nvim_create_autocmd({"CursorHold", "CursorHoldI", "InsertLeave"}, {
|
|
|
|
callback = vim.lsp.codelens.refresh,
|
|
|
|
buffer = bufnr,
|
|
|
|
})
|
|
|
|
end
|
2021-08-04 22:21:44 +02:00
|
|
|
end
|
|
|
|
|
2020-09-26 23:54:07 +02:00
|
|
|
-- format on save
|
|
|
|
local diagnosticls_on_attach = function(_, bufnr)
|
2021-08-04 22:21:44 +02:00
|
|
|
on_attach(_, bufnr)
|
2022-05-03 21:48:38 +02:00
|
|
|
vim.api.nvim_create_autocmd("BufWritePre", {
|
|
|
|
callback = function()
|
|
|
|
vim.lsp.buf.formatting_seq_sync(nil, nil, { "tsserver", "diagnosticls" })
|
|
|
|
end,
|
|
|
|
buffer = bufnr,
|
|
|
|
})
|
2020-09-26 23:54:07 +02:00
|
|
|
end
|
|
|
|
|
2022-05-05 17:56:17 +02:00
|
|
|
local config = require("lspconfig")
|
|
|
|
local configs = require("lspconfig.configs")
|
|
|
|
|
|
|
|
if not configs.glslls then
|
|
|
|
configs.glslls = {
|
|
|
|
default_config = {
|
|
|
|
cmd = { "glslls", "--stdin" };
|
|
|
|
filetypes = { "glsl" };
|
|
|
|
root_dir = config.util.root_pattern("*.conf", ".git");
|
|
|
|
settings = {};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
end
|
2021-11-13 04:23:32 +01:00
|
|
|
|
2022-03-30 11:30:29 +02:00
|
|
|
local capabilities_ = vim.lsp.protocol.make_client_capabilities()
|
|
|
|
local capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities_)
|
2021-08-04 22:21:44 +02:00
|
|
|
capabilities.textDocument.completion.completionItem.snippetSupport = true
|
|
|
|
local servers = {
|
|
|
|
"bashls",
|
|
|
|
"jsonls",
|
|
|
|
"yamlls",
|
|
|
|
"html",
|
|
|
|
"cssls",
|
|
|
|
"dockerls",
|
|
|
|
"rnix",
|
|
|
|
"tsserver",
|
2022-03-10 20:34:06 +01:00
|
|
|
"graphql",
|
2021-08-04 22:21:44 +02:00
|
|
|
"pylsp",
|
|
|
|
"terraformls",
|
|
|
|
"hls",
|
|
|
|
"rust_analyzer",
|
2022-03-10 15:03:17 +01:00
|
|
|
"vimls",
|
2022-05-05 17:56:17 +02:00
|
|
|
"glslls",
|
2021-08-04 22:21:44 +02:00
|
|
|
}
|
|
|
|
for _, lsp in ipairs(servers) do
|
|
|
|
config[lsp].setup {
|
|
|
|
on_attach = on_attach,
|
|
|
|
capabilities = capabilities,
|
|
|
|
}
|
|
|
|
end
|
2020-11-28 16:21:07 +01:00
|
|
|
|
|
|
|
config.omnisharp.setup{
|
2021-08-04 22:21:44 +02:00
|
|
|
capabilities = capabilities,
|
2021-05-05 00:05:37 +02:00
|
|
|
cmd = {"omnisharp", "--languageserver", "--hostPID", tostring(pid)},
|
2020-09-26 23:54:07 +02:00
|
|
|
}
|
|
|
|
|
2022-03-10 15:04:02 +01:00
|
|
|
local runtime_path = vim.split(package.path, ';')
|
|
|
|
table.insert(runtime_path, "lua/?.lua")
|
|
|
|
table.insert(runtime_path, "lua/?/init.lua")
|
|
|
|
|
|
|
|
config.sumneko_lua.setup {
|
|
|
|
capabilities = capabilities,
|
|
|
|
settings = {
|
|
|
|
Lua = {
|
|
|
|
runtime = {
|
|
|
|
version = "LuaJIT",
|
|
|
|
path = runtime_path,
|
|
|
|
},
|
|
|
|
diagnostics = {
|
|
|
|
globals = {"vim"},
|
|
|
|
},
|
|
|
|
workspace = {
|
|
|
|
library = vim.api.nvim_get_runtime_file("", true),
|
|
|
|
},
|
|
|
|
telemetry = {
|
|
|
|
enable = false,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
config.diagnosticls.setup {
|
2021-05-05 00:05:37 +02:00
|
|
|
on_attach = diagnosticls_on_attach,
|
|
|
|
filetypes = {
|
|
|
|
"javascript",
|
|
|
|
"javascript.jsx",
|
|
|
|
"javascriptreact",
|
|
|
|
"typescript",
|
|
|
|
"typescript.jsx",
|
|
|
|
"typescriptreact",
|
|
|
|
"json",
|
|
|
|
"yaml",
|
|
|
|
"markdown",
|
2021-11-27 21:16:31 +01:00
|
|
|
"nix",
|
2021-05-05 00:05:37 +02:00
|
|
|
"html",
|
|
|
|
"css"
|
|
|
|
},
|
|
|
|
init_options = {
|
|
|
|
linters = {
|
|
|
|
eslint = {
|
|
|
|
command = "eslint_d",
|
|
|
|
args = {
|
|
|
|
"--cache",
|
|
|
|
"--stdin",
|
|
|
|
"--stdin-filename",
|
|
|
|
"%filepath",
|
|
|
|
"--format",
|
|
|
|
"json"
|
|
|
|
},
|
|
|
|
rootPatterns = {".eslintrc.js", ".eslintrc.json", ".git"},
|
|
|
|
debounce = 50,
|
|
|
|
sourceName = "eslint",
|
|
|
|
parseJson = {
|
|
|
|
errorsRoot = "[0].messages",
|
|
|
|
line = "line",
|
|
|
|
column = "column",
|
|
|
|
endLine = "endLine",
|
|
|
|
endColumn = "endColumn",
|
|
|
|
message = "${message} [${ruleId}]",
|
|
|
|
security = "severity"
|
|
|
|
},
|
|
|
|
securities = {
|
|
|
|
["2"] = "error",
|
|
|
|
["1"] = "warning"
|
|
|
|
},
|
|
|
|
},
|
|
|
|
stylelint = {
|
|
|
|
command = "stylelint",
|
|
|
|
args = {
|
|
|
|
"--stdin",
|
|
|
|
"--formatter",
|
|
|
|
"json",
|
|
|
|
"--file",
|
|
|
|
"%filepath"
|
|
|
|
},
|
|
|
|
rootPatterns = {".git"},
|
|
|
|
debounce = 50,
|
|
|
|
sourceName = "stylelint",
|
|
|
|
parseJson = {
|
|
|
|
errorsRoot = "[0].warnings",
|
|
|
|
line = "line",
|
|
|
|
column = "column",
|
|
|
|
message = "${text}",
|
|
|
|
security = "severity",
|
|
|
|
},
|
|
|
|
securities = {
|
|
|
|
error = "error",
|
|
|
|
warning = "warning",
|
|
|
|
},
|
|
|
|
},
|
2021-11-27 21:16:31 +01:00
|
|
|
["nix-linter"] = {
|
|
|
|
-- TODO uses custom script until json support is fixed
|
|
|
|
command = "nix-linter",
|
|
|
|
sourceName = "nix-linter",
|
|
|
|
debounce = 50,
|
|
|
|
parseJson = {
|
|
|
|
line = "pos.spanBegin.sourceLine",
|
|
|
|
column = "pos.spanBegin.sourceColumn",
|
|
|
|
endLine = "pos.spanEnd.sourceLine",
|
|
|
|
endColumn = "pos.spanEnd.sourceColumn",
|
|
|
|
message = "${description}",
|
|
|
|
},
|
|
|
|
},
|
2021-05-05 00:05:37 +02:00
|
|
|
},
|
|
|
|
filetypes = {
|
|
|
|
javascript = {"eslint"},
|
|
|
|
["javascript.jsx"] = {"eslint"},
|
|
|
|
javascriptreact = {"eslint"},
|
|
|
|
typescript = {"eslint"},
|
|
|
|
["typescript.jsx"] = {"eslint"},
|
|
|
|
typescriptreact = {"eslint"},
|
|
|
|
css = {"stylelint"},
|
2021-11-27 21:16:31 +01:00
|
|
|
nix = {"nix-linter"},
|
2021-05-05 00:05:37 +02:00
|
|
|
},
|
|
|
|
formatters = {
|
|
|
|
eslint = {
|
|
|
|
command = "eslint_d",
|
|
|
|
args = {
|
|
|
|
"--cache",
|
2021-05-05 13:49:41 +02:00
|
|
|
"--fix-to-stdout",
|
|
|
|
"--stdin",
|
|
|
|
"--stdin-filename",
|
2021-05-05 00:05:37 +02:00
|
|
|
"%filepath"
|
|
|
|
},
|
|
|
|
debounce = 50,
|
|
|
|
rootPatterns = {".eslintrc.js", ".eslintrc.json", ".git"},
|
|
|
|
},
|
|
|
|
stylelint = {
|
|
|
|
command = "stylelint",
|
|
|
|
args = {
|
|
|
|
"--stdin",
|
|
|
|
"--fix",
|
|
|
|
"--file",
|
|
|
|
"%filepath"
|
|
|
|
},
|
|
|
|
rootPatterns = {".stylelintrc.json", ".git"},
|
|
|
|
},
|
|
|
|
prettier = {
|
|
|
|
command = "prettier",
|
|
|
|
args = {
|
|
|
|
"--stdin",
|
|
|
|
"--stdin-filepath",
|
|
|
|
"%filepath"
|
|
|
|
},
|
|
|
|
rootPatterns = {".prettierrc.json", ".git"},
|
|
|
|
},
|
2021-11-27 21:16:31 +01:00
|
|
|
nixfmt = {
|
|
|
|
command = "nixfmt",
|
|
|
|
},
|
2022-04-25 21:13:22 +02:00
|
|
|
rustfmt = {
|
|
|
|
command = "rustfmt",
|
|
|
|
},
|
2021-05-05 00:05:37 +02:00
|
|
|
},
|
|
|
|
formatFiletypes = {
|
|
|
|
javascript = {"eslint"},
|
|
|
|
["javascript.jsx"] = {"eslint"},
|
|
|
|
javascriptreact = {"eslint"},
|
|
|
|
typescript = {"eslint"},
|
|
|
|
["typescript.jsx"] = {"eslint"},
|
|
|
|
typescriptreact = {"eslint"},
|
|
|
|
json = {"prettier"},
|
|
|
|
yaml = {"prettier"},
|
|
|
|
markdown = {"prettier"},
|
2021-08-04 22:21:44 +02:00
|
|
|
nix = {"nixfmt"},
|
2022-04-25 21:13:22 +02:00
|
|
|
rust = {"rustfmt"},
|
2021-05-05 00:05:37 +02:00
|
|
|
html = {"prettier"},
|
|
|
|
css = {"stylelint"},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
2021-08-04 22:21:44 +02:00
|
|
|
|
2022-03-30 11:30:29 +02:00
|
|
|
require("nvim-autopairs").setup({
|
2021-08-04 22:21:44 +02:00
|
|
|
check_ts = true,
|
|
|
|
})
|