diff options
author | Steven Arcangeli <stevearc@stevearc.com> | 2023-09-29 16:47:00 -0700 |
---|---|---|
committer | Steven Arcangeli <stevearc@stevearc.com> | 2023-09-29 16:50:57 -0700 |
commit | 2cffcd332efdbfe19cb7e81b3fc326880b6a54cc (patch) | |
tree | ce3595bfae800ff0d93f4973aea1207a544f2600 /lua/conform/formatters/init.lua | |
parent | d8170c14db0f3c90fa799db3bca29d3fb3c089c3 (diff) |
doc: speed up documentation generation
Diffstat (limited to 'lua/conform/formatters/init.lua')
-rw-r--r-- | lua/conform/formatters/init.lua | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/lua/conform/formatters/init.lua b/lua/conform/formatters/init.lua index b0e430e..c789e12 100644 --- a/lua/conform/formatters/init.lua +++ b/lua/conform/formatters/init.lua @@ -1,4 +1,29 @@ local M = {} +local uv = vim.uv or vim.loop + +-- This is used for documentation generation +M.list_all_formatters = function() + local ret = {} + for path in vim.gsplit(vim.o.runtimepath, ",", { plain = true }) do + local formatter_path = path .. "/lua/conform/formatters" + local formatter_dir = uv.fs_opendir(formatter_path) + if formatter_dir then + local entries = uv.fs_readdir(formatter_dir) + while entries do + for _, entry in ipairs(entries) do + if entry.name ~= "init.lua" then + local basename = string.match(entry.name, "^(.*)%.lua$") + local module = require("conform.formatters." .. basename) + ret[basename] = module.meta + end + end + entries = uv.fs_readdir(formatter_dir) + end + uv.fs_closedir(formatter_dir) + end + end + return ret +end -- A little metatable magic to allow accessing formatters like -- require("conform.formatters").prettier |