Golangci-server - 一个golangci-lint语言服务器

572 阅读1分钟

golangci-server

golangci-server是一个golangci-lint语言服务器。

安装

  1. 安装golangci-lint

  2. 安装golangci-server

     go install github.com/stephenafamo/golangci-server@latest
    

灵感

大部分的灵感来自于golangci-lint-langserver

我开始试图修改它,但发现在优秀的glsp包的基础上重建更容易。

coc.nvim的配置

coc-settings.json

{
  "languageserver": {
    "golangci-server": {
      "command": "golangci-server",
      "filetypes": ["go"],
    }
  }
}
  

vim-lsp的配置

augroup vim_lsp_golangci_server
  au!
  autocmd User lsp_setup call lsp#register_server({
      \ 'name': 'golangci-server',
      \ 'cmd': {server_info->['golangci-server']},
      \ 'whitelist': ['go'],
      \ })
augroup END

nvim-lspconfig的配置

local lspconfig = require 'lspconfig'
local configs = require 'lspconfig.configs'

if not configs.golangcilsp then
 	configs.golangcilsp = {
		default_config = {
			cmd = {'golangci-server'},
			root_dir = lspconfig.util.root_pattern('.git', 'go.mod'),
		};
	}
end
lspconfig.golangcilsp.setup {
	filetypes = {'go'}
}

配置lsp-mode(Emacs)

(with-eval-after-load 'lsp-mode
  (lsp-register-client
   (make-lsp-client :new-connection (lsp-stdio-connection
                                     '("golangci-server"))
                    :major-modes '(go-mode)
                    :language-id "go"
                    :priority 0
                    :server-id 'golangci-lint
                    :add-on? t
                    :library-folders-fn #'lsp-go--library-default-directories

  (add-to-list 'lsp-language-id-configuration '(go-mode . "golangci-lint")))