From 5c97c756f191aa8ab50a20798fe05401513eaa31 Mon Sep 17 00:00:00 2001 From: Alex Efros Date: Thu, 22 May 2025 13:52:59 +0300 Subject: feat(golangci_lint_ls): add support for v1 #3865 --- lsp/golangci_lint_ls.lua | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'lsp') diff --git a/lsp/golangci_lint_ls.lua b/lsp/golangci_lint_ls.lua index 6c5fde41..9d6cd48a 100644 --- a/lsp/golangci_lint_ls.lua +++ b/lsp/golangci_lint_ls.lua @@ -27,4 +27,22 @@ return { 'go.mod', '.git', }, + before_init = function(_, config) + -- Add support for golangci-lint V1 (in V2 `--out-format=json` was replaced by + -- `--output.json.path=stdout`). + local v1 + -- PERF: `golangci-lint version` is very slow (about 0.1 sec) so let's find + -- version using `go version -m $(which golangci-lint) | grep '^\smod'`. + if vim.fn.executable 'go' == 1 then + local exe = vim.fn.exepath 'golangci-lint' + local version = vim.system({ 'go', 'version', '-m', exe }):wait() + v1 = string.match(version.stdout, '\tmod\tgithub.com/golangci/golangci%-lint\t') + else + local version = vim.system({ 'golangci-lint', 'version' }):wait() + v1 = string.match(version.stdout, 'version v?1%.') + end + if v1 then + config.init_options.command = { 'golangci-lint', 'run', '--out-format', 'json' } + end + end, } -- cgit v1.2.3-70-g09d2