summaryrefslogtreecommitdiffstats
path: root/lua/conform
diff options
context:
space:
mode:
Diffstat (limited to 'lua/conform')
-rw-r--r--lua/conform/formatters/init.lua25
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