From 2cffcd332efdbfe19cb7e81b3fc326880b6a54cc Mon Sep 17 00:00:00 2001 From: Steven Arcangeli Date: Fri, 29 Sep 2023 16:47:00 -0700 Subject: doc: speed up documentation generation --- lua/conform/formatters/init.lua | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'lua/conform/formatters/init.lua') 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 -- cgit v1.2.3-70-g09d2