diff options
| author | William Boman <william@redwill.se> | 2021-10-23 02:02:29 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-23 02:02:29 +0200 |
| commit | 1ad71df31d399fe13df253167283032fb7f28020 (patch) | |
| tree | 0f7c9df338f0388695c6b7bfaa0ef550ab0cd6c9 /scripts/autogen_metadata.lua | |
| parent | Revert "access environ via vim.loop" (diff) | |
| download | mason-1ad71df31d399fe13df253167283032fb7f28020.tar mason-1ad71df31d399fe13df253167283032fb7f28020.tar.gz mason-1ad71df31d399fe13df253167283032fb7f28020.tar.bz2 mason-1ad71df31d399fe13df253167283032fb7f28020.tar.lz mason-1ad71df31d399fe13df253167283032fb7f28020.tar.xz mason-1ad71df31d399fe13df253167283032fb7f28020.tar.zst mason-1ad71df31d399fe13df253167283032fb7f28020.zip | |
map filetype to servers, promote relevant servers in the UI (#190)
Uninstalled servers that map to a filetype that is open in any buffer will be hoisted in
the UI list.
Diffstat (limited to 'scripts/autogen_metadata.lua')
| -rw-r--r-- | scripts/autogen_metadata.lua | 57 |
1 files changed, 33 insertions, 24 deletions
diff --git a/scripts/autogen_metadata.lua b/scripts/autogen_metadata.lua index 5bee63f7..cec6c263 100644 --- a/scripts/autogen_metadata.lua +++ b/scripts/autogen_metadata.lua @@ -21,12 +21,21 @@ end local function write_file(path, txt, flag) uv.fs_open(path, flag, 438, function(open_err, fd) assert(not open_err, open_err) - uv.fs_write(fd, txt, -1, function(write_err) - assert(not write_err, write_err) - uv.fs_close(fd, function(close_err) - assert(not close_err, close_err) - end) - end) + uv.fs_write( + fd, + table.concat({ + "-- THIS FILE IS GENERATED. DO NOT EDIT MANUALLY.", + "-- stylua: ignore start", + txt, + }, "\n"), + -1, + function(write_err) + assert(not write_err, write_err) + uv.fs_close(fd, function(close_err) + assert(not close_err, close_err) + end) + end + ) end) end @@ -44,12 +53,26 @@ local function get_supported_filetypes(server) lspconfig_server_ok and configs[server.name].document_config.default_config.filetypes, {} ) - -- it's probably still not safe to do this in runtime, but just in case - package.loaded["lspconfig/configs"] = nil return filetypes end -local function generate_metadata_table() +do + local filetype_map = {} + + local available_servers = servers.get_available_servers() + for _, server in pairs(available_servers) do + for _, filetype in pairs(get_supported_filetypes(server)) do + if not filetype_map[filetype] then + filetype_map[filetype] = {} + end + table.insert(filetype_map[filetype], server.name) + end + end + + write_file(Path.concat { generated_dir, "filetype_map.lua" }, "return " .. vim.inspect(filetype_map), "w") +end + +do local metadata = {} local function create_metadata_entry(server) @@ -60,20 +83,6 @@ local function generate_metadata_table() for _, server in pairs(available_servers) do metadata[server.name] = create_metadata_entry(server) end - print(string.format("found [%s] configurations", #vim.tbl_keys(metadata))) - return metadata + write_file(Path.concat { generated_dir, "metadata.lua" }, "return " .. vim.inspect(metadata), "w") end - -local mt = generate_metadata_table() - -local metadata_file_lua = Path.concat { generated_dir, "metadata.lua" } -write_file( - metadata_file_lua, - table.concat({ - "-- THIS FILE IS GENERATED. DO NOT EDIT MANUALLY.", - "-- stylua: ignore start", - "return " .. vim.inspect(mt), - }, "\n"), - "w" -) |
