File: vscodejson.vim

package info (click to toggle)
vim-ale 4.0.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 8,764 kB
  • sloc: sh: 499; python: 311; perl: 31; makefile: 4; xml: 4; javascript: 1
file content (32 lines) | stat: -rw-r--r-- 1,082 bytes parent folder | download
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'),
\})