-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlanguages.lua
More file actions
77 lines (68 loc) · 2.88 KB
/
Copy pathlanguages.lua
File metadata and controls
77 lines (68 loc) · 2.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
-- Single source of truth for language support and fresh-machine installation.
local M = {}
M.languages = {
{ name = "ansible", parsers = { "yaml" }, lsp = "ansiblels", mason = "ansible-language-server" },
{ name = "bash", parsers = { "bash" }, lsp = "bashls", mason = "bash-language-server" },
{ name = "css", parsers = { "css" }, lsp = "cssls", mason = "css-lsp" },
{ name = "docker", parsers = { "dockerfile" }, lsp = "dockerls", mason = "dockerfile-language-server" },
{ name = "go", parsers = { "go", "gomod", "gosum", "gowork" }, lsp = "gopls", mason = "gopls" },
{ name = "html", parsers = { "html" }, lsp = "html", mason = "html-lsp" },
{ name = "json", parsers = { "json", "json5" }, lsp = "jsonls", mason = "json-lsp" },
{ name = "lua", parsers = { "lua", "vim", "vimdoc", "query" }, lsp = "lua_ls", mason = "lua-language-server" },
{ name = "markdown", parsers = { "markdown", "markdown_inline" }, lsp = "marksman", mason = "marksman" },
{ name = "python", parsers = { "python" }, lsp = { "basedpyright", "ruff" }, mason = { "basedpyright", "ruff" } },
{ name = "rust", parsers = { "rust" }, lsp = "rust_analyzer", mason = "rust-analyzer" },
{ name = "swift", parsers = { "swift" }, lsp = "sourcekit", system = "sourcekit-lsp" },
{ name = "terraform", parsers = { "terraform" }, lsp = "terraformls", mason = "terraform-ls" },
{ name = "toml", parsers = { "toml" }, lsp = "taplo", mason = "taplo" },
{ name = "typescript", parsers = { "javascript", "typescript", "tsx" }, lsp = "ts_ls", mason = "typescript-language-server" },
{ name = "yaml", parsers = { "yaml" }, lsp = "yamlls", mason = "yaml-language-server" },
}
M.utility_parsers = { "http" }
M.formatter_packages = {
"stylua",
"ruff",
"goimports",
"shfmt",
"prettier",
"swiftformat",
}
local function append_unique(out, seen, value)
if value and not seen[value] then
seen[value] = true
table.insert(out, value)
end
end
local function append_values(out, seen, values)
if type(values) == "string" then
append_unique(out, seen, values)
else
for _, value in ipairs(values or {}) do
append_unique(out, seen, value)
end
end
end
function M.treesitter_parsers()
local parsers, seen = {}, {}
for _, language in ipairs(M.languages) do
append_values(parsers, seen, language.parsers)
end
append_values(parsers, seen, M.utility_parsers)
return parsers
end
function M.lsp_servers()
local servers, seen = {}, {}
for _, language in ipairs(M.languages) do
append_values(servers, seen, language.lsp)
end
return servers
end
function M.mason_packages()
local packages, seen = {}, {}
for _, language in ipairs(M.languages) do
append_values(packages, seen, language.mason)
end
append_values(packages, seen, M.formatter_packages)
return packages
end
return M