ΠΠ°Ρ Π·Π°ΠΏΡΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ²ΡΠ·Π°Π½ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ?
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ alex
ΠΈ proselint
ΡΡΠΎΠ±Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΠ²ΠΎΠΈ Π·Π°ΠΏΠΈΡΠΈ, Π½ΠΎ Ρ Π²ΡΠ΅Π³Π΄Π° ΡΠ°Π·ΠΎΡΠ°ΡΠΎΠ²ΡΠ²Π°ΡΡΡ Π² ΡΡΠΎΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΉΡΠΈ ΠΈΠ· vim ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» Π² ΡΠ°ΠΉΠ»Π΅ ΡΠ°ΠΌ ΠΏΠΎ ΡΠ΅Π±Π΅, ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ°. Π― Π΄ΡΠΌΠ°Π» ΠΎΠ± ALE ΠΈΠ»ΠΈ ΡΠΈΠ½ΡΠ°ΡΡΠΈΠΊΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅, ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² README Π΄Π»Ρ alex
ΠΈ proselint
ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΈΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² vim, Π½ΠΎ Ρ Π½Π΅ Ρ
ΠΎΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ Π΄Π»Ρ Π»ΠΈΠ½ΡΠΈΠ½Π³Π° ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ Π»ΡΠ±Π»Ρ ΠΊΠΎΠΊ Π±ΠΎΠ»ΡΡΠ΅ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ
Π²Π΅ΡΠ΅ΠΉ.
ΠΠΏΠΈΡΠΈΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅
Π― Π΄ΡΠΌΠ°Ρ, Π±ΡΠ»ΠΎ Π±Ρ Π½Π΅ΠΏΠ»ΠΎΡ
ΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠΌΠΎΠ³ Π²ΡΡΡΠ½ΠΈΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΡΠ·ΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° coc-settings.json Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° alex
ΠΈΠ»ΠΈ proselint
. ΠΡΠ΅ Π»ΡΡΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π»ΠΈΠ½ΡΠΈΠ½Π³Π° ΡΠ΅ΠΊΡΡΠ°, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΡΠΎΠΌΡ, ΡΡΠΎ coc-clangd
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ clangd
.
ΠΠΏΠΈΡΠΈΡΠ΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ
ΠΠ°ΠΊ Ρ ΡΠΆΠ΅ ΡΠΊΠ°Π·Π°Π», Ρ ΠΏΠΎΠ΄ΡΠΌΠ°Π» ΠΎΠ± ALE ΠΈ ΡΠΈΠ½ΡΠ°ΡΡΠΈΠΊΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅, ΠΏΠΎ ΡΠ»ΠΎΠ²Π°ΠΌ README Π΄Π»Ρ alex
ΠΈ proselint
ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ. ΠΠΎ Ρ Π½Π΅ ΡΠΌΠΎΠ³ Π½Π°ΠΉΡΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π° github Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ, ΠΈ ΡΠ½ΠΎΠ²Π° ΠΌΠ½Π΅ Π½Π΅ Π½ΡΠΆΠ½Π° Π΄ΡΡΠ³Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π»ΠΈΠ½ΡΠΈΠ½Π³Π° ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠΎΠ², Π·Π°ΠΌΠ΅Π΄Π»ΡΡΡΠΈΡ
ΠΌΠΎΠΉ vim.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ
ΠΠΎΠΌΠΈΠΌΠΎ alex
ΠΈ proselint
Π΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΠΊΠΈΠ΅ Π²Π΅ΡΠΈ, ΠΊΠ°ΠΊ GNU style
ΠΈ diction
ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠΆΠ΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡΡ, Π½ΠΎ Ρ Π»ΠΈΡΠ½ΠΎ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ alex
ΠΈ proselint
ΡΡΠΎ (Edit: ΡΡΠΎ ... Π²ΠΈΠ΄Π΅ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ΅ΠΊΡΡ ΠΏΡΠ»Π΅Π½ΠΈΠ΅) Π±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠ½ΠΎ ΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, https://www.npmjs.com/package/coc-diagnostic ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ @chemzqm Π·Π° ΡΡΡ ΡΡΡΠ»ΠΊΡ.
ΠΠ½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ Π·Π°ΡΡΠ°Π²ΠΈΡΡ proselint
ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ coc-diagnostic
Ρ ΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ:
"diagnostic-languageserver.filetypes": {
"text": ["proselint"]
},
"diagnostic-languageserver.linters": {
"proselint": {
"command": "proselint",
"isStdout": true,
"isStderr": false,
"debounce": 100,
"args": ["-"],
"offsetLine": 0,
"offsetColumn": 0,
"sourceName": "proselint",
"formatLines": 1,
"formatPattern": [
"^[^:]+:(\\d+):(\\d+):(\\s)(.*)$",
{
"line": 1,
"column": 2,
"security": 3,
"message": 4
}
],
"securities": {
" ": "info"
}
}
}
Π― Π²ΡΠ΅ Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π°Π΄ GNU diction
, style
ΠΈ alex
. Π― ΠΎΡΠΏΡΠ°Π²Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π΄Π΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΊΠΎΠ½ΡΡ.
Π― ΡΠ΄Π΅Π»Π°Π» ΡΡΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ Π΄Π»Ρ alex
. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ Π΅Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ.
"alex": {
"command": "alexjs",
"debounce": 200,
"isStderr": true,
"args": ["--stdin"],
"offsetLine": 0,
"offsetColumn": 0,
"sourceName": "alex.js",
"formatLines": 1,
"formatPattern": [
"^\\s*(\\d+):(\\d+)-(\\d+):(\\d+)\\s{2}([a-z]+)\\s{2}(.*?)\\s{2,}([a-z-]+)\\s{2,}([a-z-]+)$",
{
"line": 1,
"column": 2,
"endLine": 3,
"endColumn": 4,
"security" : 5,
"message": 6
}
],
"securities" : {
"warning": "warning",
"error": "error"
}
}
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠΎ Π² ΡΠ²ΠΎΠΉ diagnostic-languageserver.linters
ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Ρ coc-diagnostic
.
ΠΠ°Π΄Π΅ΡΡΡ, ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ!
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π― ΡΠ΄Π΅Π»Π°Π» ΡΡΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ Π΄Π»Ρ
alex
. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ Π΅Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ.ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠΎ Π² ΡΠ²ΠΎΠΉ
diagnostic-languageserver.linters
ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Ρcoc-diagnostic
.ΠΠ°Π΄Π΅ΡΡΡ, ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ!