-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcode_languages.lua
More file actions
55 lines (45 loc) · 1.69 KB
/
Copy pathcode_languages.lua
File metadata and controls
55 lines (45 loc) · 1.69 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
-- MCP Tool: code_languages
-- List supported languages for Tree-sitter code analysis tools
-- Entry kind: function.lua
local treesitter = require("treesitter")
local parser = require("parser")
local queries = require("queries")
local function call(arguments)
local supported = parser.supported_languages()
local with_queries = queries.available()
-- Build query lookup
local has_queries = {}
for _, lang in ipairs(with_queries) do
has_queries[lang] = true
end
-- Extension map (reverse)
local lang_exts = {}
for ext, lang in pairs(parser.ext_to_lang) do
if not lang_exts[lang] then
lang_exts[lang] = {}
end
table.insert(lang_exts[lang], "." .. ext)
end
-- Sort and format
local names = {}
for name, _ in pairs(supported) do
table.insert(names, name)
end
table.sort(names)
local lines = {}
table.insert(lines, "# Supported Languages")
table.insert(lines, "")
table.insert(lines, string.format("%-14s %-20s %s", "Language", "Extensions", "Query Patterns"))
table.insert(lines, string.rep("-", 55))
for _, name in ipairs(names) do
local exts = lang_exts[name]
local ext_str = exts and table.concat(exts, ", ") or ""
local query_str = has_queries[name] and "✓ symbols" or "parse only"
table.insert(lines, string.format("%-14s %-20s %s", name, ext_str, query_str))
end
table.insert(lines, "")
table.insert(lines, "Languages with '✓ symbols' support code_outline, code_symbols, and code_query.")
table.insert(lines, "All languages support code_parse and code_diagnostics.")
return table.concat(lines, "\n")
end
return { call = call }