summaryrefslogtreecommitdiffstats
path: root/lua/conform/formatters/vsg.lua
diff options
context:
space:
mode:
authorFredrik Foss-Indrehus <fredrikfoss@fr.urbanpets.no>2024-06-09 22:09:58 +0200
committerGitHub <noreply@github.com>2024-06-09 16:09:58 -0400
commitcf562dd160c27a7fc5342dfce7e1227746dd3aaa (patch)
treebc8277bcd3b314045bf6e13666ada450fe692b6e /lua/conform/formatters/vsg.lua
parent5541c54cf2ab078a537838e1fb9d96ae47f71255 (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.lua52
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,
+}