aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2022-12-19 11:51:55 +0100
committerGitHub <noreply@github.com>2022-12-19 11:51:55 +0100
commit75db29607407b905bc9cf93caa679be444bd0e9d (patch)
tree2f065a61961fc2d54e34d9fa1c2af7081fdca137 /scripts/lua
parentfeat: add neocmake mapping (#104) (diff)
downloadmason-lspconfig-75db29607407b905bc9cf93caa679be444bd0e9d.tar
mason-lspconfig-75db29607407b905bc9cf93caa679be444bd0e9d.tar.gz
mason-lspconfig-75db29607407b905bc9cf93caa679be444bd0e9d.tar.bz2
mason-lspconfig-75db29607407b905bc9cf93caa679be444bd0e9d.tar.lz
mason-lspconfig-75db29607407b905bc9cf93caa679be444bd0e9d.tar.xz
mason-lspconfig-75db29607407b905bc9cf93caa679be444bd0e9d.tar.zst
mason-lspconfig-75db29607407b905bc9cf93caa679be444bd0e9d.zip
docs: include server mapping in vimdocs (#107)
Closes #106.
Diffstat (limited to 'scripts/lua')
-rw-r--r--scripts/lua/mason-scripts/mason-lspconfig/generate.lua94
-rw-r--r--scripts/lua/mason-scripts/utils.lua4
2 files changed, 74 insertions, 24 deletions
diff --git a/scripts/lua/mason-scripts/mason-lspconfig/generate.lua b/scripts/lua/mason-scripts/mason-lspconfig/generate.lua
index 7be4f3f..e28003b 100644
--- a/scripts/lua/mason-scripts/mason-lspconfig/generate.lua
+++ b/scripts/lua/mason-scripts/mason-lspconfig/generate.lua
@@ -47,36 +47,82 @@ local function ensure_valid_package_name_translations()
end
end
+local get_server_mappings = _.compose(
+ _.filter_map(function(pair)
+ local lspconfig_name, mason_name =
+ assert(pair[1], "missing lspconfig name"), assert(pair[2], "missing mason name")
+ if not pcall(require, ("lspconfig.server_configurations.%s"):format(lspconfig_name)) then
+ return Optional.empty()
+ end
+ local lspconfig_url = ("https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#%s"):format(
+ lspconfig_name
+ )
+ local mason_url = ("https://github.com/williamboman/mason.nvim/blob/main/PACKAGES.md#%s"):format(mason_name)
+ return Optional.of {
+ lspconfig_name = lspconfig_name,
+ mason_name = mason_name,
+ lspconfig_url = lspconfig_url,
+ mason_url = mason_url,
+ }
+ end),
+ _.sort_by(_.head),
+ _.to_pairs
+)
+
---@async
local function create_server_mapping_docs()
- local server_mappings = require "mason-lspconfig.mappings.server"
+ local server_mappings = get_server_mappings(require("mason-lspconfig.mappings.server").lspconfig_to_package)
- local table_body = _.compose(
- _.filter_map(function(pair)
- local lspconfig_name, mason_name =
- assert(pair[1], "missing lspconfig name"), assert(pair[2], "missing mason name")
- if not pcall(require, ("lspconfig.server_configurations.%s"):format(lspconfig_name)) then
- return Optional.empty()
- end
- local lspconfig_url = ("https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#%s"):format(
- lspconfig_name
- )
- local mason_url = ("https://github.com/williamboman/mason.nvim/blob/main/PACKAGES.md#%s"):format(mason_name)
- return Optional.of(
- string.format("| [%s](%s) | [%s](%s) |", lspconfig_name, lspconfig_url, mason_name, mason_url)
+ do
+ local markdown_header = {
+ "| lspconfig server name | mason.nvim package name |",
+ "| --------------------- | ----------------------- |",
+ }
+
+ local markdown_table = _.map(function(map)
+ return string.format(
+ "| [%s](%s) | [%s](%s) |",
+ map.lspconfig_name,
+ map.lspconfig_url,
+ map.mason_name,
+ map.mason_url
)
- end),
- _.sort_by(_.head),
- _.to_pairs
- )(server_mappings.lspconfig_to_package)
+ end, server_mappings)
- local table_header = {
- "| lspconfig server name | mason.nvim package name |",
- "| --------------------- | ----------------------- |",
- }
+ local markdown = _.join("\n", _.concat(markdown_header, markdown_table))
+ script_utils.write_file(path.concat { DOCS_DIR, "server-mapping.md" }, markdown)
+ end
+
+ do
+ local vimdoc_header = {
+ "*mason-lspconfig-mapping.txt*",
+ "",
+ "==============================================================================",
+ "SERVER MAPPINGS *mason-lspconfig-server-map*",
+ "",
+ }
+
+ local vimdoc_footer = {
+ "",
+ "vim:tw=78:ft=help:norl:expandtab:sw=4",
+ }
+
+ local col_width = _.apply(math.max, _.map(_.compose(_.length, _.prop "mason_name"), server_mappings)) + 2
- local output = _.join("\n", _.concat(table_header, table_body))
- script_utils.write_file(path.concat { DOCS_DIR, "server-mapping.md" }, output)
+ local vimdoc_table = _.concat(
+ {
+ "`Mason name`" .. (" "):rep(col_width - #"Mason name") .. "`lspconfig name`",
+ },
+ _.map(function(map)
+ return ("%s%s%s"):format(map.mason_name, (" "):rep(col_width - #map.mason_name), map.lspconfig_name)
+ end, server_mappings)
+ )
+
+ local concat = _.reduce(_.concat, {})
+
+ local vimdoc = _.join("\n", concat { vimdoc_header, vimdoc_table, vimdoc_footer })
+ script_utils.write_file(path.concat { DOCS_DIR, "mason-lspconfig-mapping.txt" }, vimdoc)
+ end
end
a.run_blocking(function()
diff --git a/scripts/lua/mason-scripts/utils.lua b/scripts/lua/mason-scripts/utils.lua
index 49a20df..a6cee3a 100644
--- a/scripts/lua/mason-scripts/utils.lua
+++ b/scripts/lua/mason-scripts/utils.lua
@@ -23,6 +23,10 @@ function M.write_file(path, contents, flags)
},
},
{
+ _.matches "doc/.+%.txt$",
+ _.always {},
+ },
+ {
_.T,
_.always {
"# THIS FILE IS GENERATED. DO NOT EDIT MANUALLY.",