aboutsummaryrefslogtreecommitdiffstats
path: root/lsp/golangci_lint_ls.lua
diff options
context:
space:
mode:
authorAlex Efros <powerman@powerman.name>2025-05-22 13:52:59 +0300
committerGitHub <noreply@github.com>2025-05-22 03:52:59 -0700
commit5c97c756f191aa8ab50a20798fe05401513eaa31 (patch)
treeecb9c29ec0d56aa1283e74017c7ffb9fc0de47c3 /lsp/golangci_lint_ls.lua
parentdocs: update configs.md (diff)
downloadnvim-lspconfig-5c97c756f191aa8ab50a20798fe05401513eaa31.tar
nvim-lspconfig-5c97c756f191aa8ab50a20798fe05401513eaa31.tar.gz
nvim-lspconfig-5c97c756f191aa8ab50a20798fe05401513eaa31.tar.bz2
nvim-lspconfig-5c97c756f191aa8ab50a20798fe05401513eaa31.tar.lz
nvim-lspconfig-5c97c756f191aa8ab50a20798fe05401513eaa31.tar.xz
nvim-lspconfig-5c97c756f191aa8ab50a20798fe05401513eaa31.tar.zst
nvim-lspconfig-5c97c756f191aa8ab50a20798fe05401513eaa31.zip
feat(golangci_lint_ls): add support for v1 #3865
Diffstat (limited to 'lsp/golangci_lint_ls.lua')
-rw-r--r--lsp/golangci_lint_ls.lua18
1 files changed, 18 insertions, 0 deletions
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,
}