Coc.nvim: рд░рд╛рдЗрдЯрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрд▓реЗрдХреНрд╕ рдФрд░ рдкреНрд░реЛрд╕реЗрд▓реНрдЯ рдЬреИрд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рд▓рд┐рдВрдЯрд░ рд╕рдкреЛрд░реНрдЯ рдЬреЛрдбрд╝реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 4 рдЬреВрди 2020  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: neoclide/coc.nvim

рдХреНрдпрд╛ рдЖрдкрдХреА рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рд╕рдорд╕реНрдпрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ?
рдореИрдВ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд▓реЗрдЦрди рдХреЛ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП alex рдФрд░ proselint рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реИ рдПрдХ рд▓рдВрдмрд╛ рдкрд╛рда рд▓рд┐рдЦрддреЗ рд╕рдордп рдЕрдХреНрд╖рдоред рдореИрдВрдиреЗ ALE рдпрд╛ рд╕рд┐рдВрдереИрдЯрд┐рдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рд╣реИ, рдЬреЛ README alex рдФрд░ proselint рдХрд╣рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ vim рдХреЗ рднреАрддрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕рд┐рд░реНрдл рдкрд╛рда рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд▓рд┐рдиреЗрдЯрд┐рдВрдЧ рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдмрд╣реБрдд рдкрд╕рдВрдж рд╣реИ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ cocред

рдЙрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ alex рдпрд╛ proselint рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП coc-settings.json рднрд╛рд╖рд╛ рд╕рд░реНрд╡рд░ рд╕реЗрдЯрдЕрдк рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХреЗред рдкрд╛рда рд▓рд╛рдЗрдирд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдФрд░ рднреА рдмреЗрд╣рддрд░ рдЬреИрд╕реЗ coc-clangd clangd рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЪреБрдиреЗ рдЧрдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдореИрдВрдиреЗ ALE рдФрд░ рд╕рд┐рдВрдЯреИрд╕реНрдЯрд┐рдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рд╣реИ рдЬреЛ README рдиреЗ alex рдФрд░ proselint рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрд┐рддреБрдм рдкрд░ рдХреЛрдИ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рдкрд╛ рд╕рдХрд╛, рдФрд░ рдлрд┐рд░ рд╕реЗ рдореИрдВ рдЕрдкрдиреЗ рд▓рд┐рдо рдХреЛ рдзреАрдорд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреНрд░рдВрдереЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд▓рд┐рдирд┐рдВрдЧ рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ред

рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрджрд░реНрдн
alex рдФрд░ proselint рдЕрд▓рд╛рд╡рд╛ рднреА рдХреБрдЫ рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреИрд╕реЗ GNU style рдФрд░ diction рдЬреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ alex proselint рд╣реИ (рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд╣реИрдВ ... рдпрд╣ рджреЗрдЦреЗрдВ рдХрд┐ рдореБрдЭреЗ рдЯреЗрдХреНрд╕реНрдЯ рд▓рд╛рдЗрдирд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ) рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдФрд░ рд╡рд┐рд╕реНрддреГрддред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВрдиреЗ рдЗрд╕ рдХреЙрдиреНтАНрдлрд╝тАНрд┐рдЧрд░ рдХреЛ 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"
    }
}

рдЖрдк рдЗрд╕реЗ coc-diagnostic рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ diagnostic-languageserver.linters рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рд╕рд╣рд╛рдпрддрд╛ рдорд┐рд▓реЗрдЧреА!

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╢рд╛рдпрдж https://www.npmjs.com/package/coc-diagnostic рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЙрд╕ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП @chemzqm рдзрдиреНрдпрд╡рд╛рджред
рдореИрдВ рдЗрд╕ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде coc-diagnostic рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ proselint рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛:

"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"
    }
}

рдЖрдк рдЗрд╕реЗ coc-diagnostic рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ diagnostic-languageserver.linters рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рд╕рд╣рд╛рдпрддрд╛ рдорд┐рд▓реЗрдЧреА!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕