

diagnostic-languagserver 是一个可以与大多数的 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 支持一下 |
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 呢? |