Files
chatgpt.vim/lua/chatgpt_nvim/tools/lint.lua

43 lines
1.2 KiB
Lua

local uv = vim.loop
local M = {}
-- A naive lint approach: if a file ends with .lua, run "luacheck" if available.
-- If .go, run "go build" or "go vet", etc. This is just an example; adapt to your needs.
-- Return nil if lint tool can't be determined or is not installed.
local function guess_linter_command(path)
if path:match("%.lua$") then
return "luacheck " .. vim.fn.shellescape(path)
elseif path:match("%.go$") then
-- We'll just do a quick "go build" or "go vet"
return "go vet " .. vim.fn.fnamemodify(path, ":h")
end
return nil
end
-- Executes the linter command and returns the output or an error if it fails to run.
local function run_command(cmd)
local handle = io.popen(cmd)
if not handle then
return nil, ("Failed to run: %s"):format(cmd)
end
local output = handle:read("*a") or ""
handle:close()
return output, nil
end
function M.lint_file(path)
local lint_cmd = guess_linter_command(path)
if not lint_cmd then
return nil, "No known lint command for file: " .. path
end
local output, err = run_command(lint_cmd)
if not output then
return nil, err or ("Failed to lint: " .. path)
end
return output, nil
end
return M