diagnostic-languageserver 是一个可以与大多数的 linter 集成的 LSP 服务。
安装:
yarn global add diagnostic-languageserver
language server 对大多数的语言支持已经很完善了,但是还是有些语言没有或者是支持的比较差,比如 viml,shell 等,还是少不了使用 linter 来检查代码。所以基本都会安装一个插件,比如:ale。
不过既然 LSP 已经自带了代码检查,为什么不用 LSP 和 linter 集成?受 efm-langserver 启发,然后就有了这个项目。
下面是 shellcheck linter 配置示例,LSP 客户端使用的是 coc.nvim(你也可以选其他客户端)
coc-settings.json:
{
"languageserver": {
"dls": {
"command": "diagnostic-languageserver",
"args": ["--stdio"],
"filetypes": [ "sh" ],
"initializationOptions": {
"linters": {
"shellcheck": {
"command": "shellcheck",
"debounce": 100,
"args": [ "--format=gcc", "-"],
"offsetLine": 0,
"offsetColumn": 0,
"sourceName": "shellcheck",
"formatLines": 1,
"formatPattern": [
"^[^:]+:(\\d+):(\\d+):\\s+([^:]+):\\s+(.*)$",
{
"line": 1,
"column": 2,
"message": 4,
"security": 3
}
],
"securities": {
"error": "error",
"warning": "warning",
"note": "info"
}
},
},
"filetypes": {
"sh": "shellcheck"
}
}
}
}
}
更多配置可以看 github
增加 Format 支持。
比如使用 dartfmt:
"formatters": {
"dartfmt": {
"command": "dartfmt",
"args": [ "--fix" ],
}
},
"formatFiletypes": {
"dart": "dartfmt"
}
1
Sparetire 2019-03-17 20:51:26 +08:00 via Android 1
支持一下
|
2
fannheyward 2019-03-18 10:26:03 +08:00
和 efm-langserver 主要的异同或者优势是什么?
|
3
yuuko OP @fannheyward
优势: 1. 使用正则更灵活可以适配更多的 linter,比如 languagetool 这种输出每个 issue 是多行的,而且 提示信息可以自由分割组合。 2. 支持 security 分级( error, warning, info, hint),当然这个也得 linter 支持。 3. 特别适配了下本地 linter,比如 eslint, 配置命令是 `./node_modules/.bin/eslint` 这种相对路径开头的,会先找本地安装的 eslint,找不到再用 全局的。 efm 的优势:他还提供 format command 配置支持 本来是打算向 efm 提 pr 的,无奈我 go 太菜 |
4
yech1990 2019-03-18 22:32:03 +08:00 via Android
pylint 呢?
|