summaryrefslogtreecommitdiff
path: root/ale_linters/json/vscodejson.vim
blob: be9eaf5308a1b603fe0882b59b44072fcf5588e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
" Author: Dalius Dobravolskas <dalius.dobravolskas@gmail.com>
" Description: VSCode json language server

call ale#Set('json_vscodejson_executable', '<auto>')

function! ale_linters#json#vscodejson#GetExecutable(buffer) abort
    let l:executable = ale#Var(a:buffer, 'json_vscodejson_executable')

    if l:executable is# '<auto>'
        if ale#engine#IsExecutable(a:buffer, 'vscode-json-languageserver')
            let l:executable = 'vscode-json-languageserver'
        else
            let l:executable = 'vscode-json-language-server'
        endif
    endif

    return l:executable
endfunction

function! ale_linters#json#vscodejson#GetProjectRoot(buffer) abort
    let l:git_path = ale#path#FindNearestDirectory(a:buffer, '.git')

    return !empty(l:git_path) ? fnamemodify(l:git_path, ':h:h') : ''
endfunction

call ale#linter#Define('json', {
\   'name': 'vscodejson',
\   'lsp': 'stdio',
\   'executable': function('ale_linters#json#vscodejson#GetExecutable'),
\   'command': '%e --stdio',
\   'project_root': function('ale_linters#json#vscodejson#GetProjectRoot'),
\})