diff options
author | Fredrik Foss-Indrehus <fredrikfoss@fr.urbanpets.no> | 2024-06-09 22:09:58 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-09 16:09:58 -0400 |
commit | cf562dd160c27a7fc5342dfce7e1227746dd3aaa (patch) | |
tree | bc8277bcd3b314045bf6e13666ada450fe692b6e /lua/conform/formatters/vsg.lua | |
parent | 5541c54cf2ab078a537838e1fb9d96ae47f71255 (diff) |
feat: add support for for vsg (#451)
* feat: add support for vsg
* support more config files, use ctx.dirname
Diffstat (limited to 'lua/conform/formatters/vsg.lua')
-rw-r--r-- | lua/conform/formatters/vsg.lua | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/lua/conform/formatters/vsg.lua b/lua/conform/formatters/vsg.lua new file mode 100644 index 0000000..ca0059e --- /dev/null +++ b/lua/conform/formatters/vsg.lua @@ -0,0 +1,52 @@ +local config_files = { + "vsg_config.yaml", + "vsg_config.yml", + "vsg_config.json", + "vsg.yaml", + "vsg.yml", + "vsg.json", + ".vsg_config.yaml", + ".vsg_config.yml", + ".vsg_config.json", + ".vsg.yaml", + ".vsg.yml", + ".vsg.json", +} + +local function find_config(dirname) + local paths = { + dirname, + (os.getenv("XDG_CONFIG_HOME") or os.getenv("HOME") .. "/.config") .. "/vsg", + } + + for _, path in ipairs(paths) do + local config = vim.fs.find(config_files, { + path = path, + upward = path == dirname, + })[1] + if config then + return config + end + end +end + +---@type conform.FileFormatterConfig +return { + meta = { + url = "https://github.com/jeremiah-c-leary/vhdl-style-guide", + description = "Style guide enforcement for VHDL.", + }, + command = "vsg", + stdin = false, + args = function(_, ctx) + local args = { "-of", "syntastic", "--fix", "-f", "$FILENAME" } + local config_file = find_config(ctx.dirname) + + if config_file then + table.insert(args, "-c") + table.insert(args, config_file) + end + + return args + end, +} |