mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-04-02 01:30:28 +08:00
88 lines
2.8 KiB
VimL
88 lines
2.8 KiB
VimL
function! neomake#makers#ft#vim#EnabledMakers() abort
|
|
return ['vint']
|
|
endfunction
|
|
|
|
let s:slash = neomake#utils#Slash()
|
|
let s:neomake_root = expand('<sfile>:p:h:h:h:h:h', 1)
|
|
|
|
let s:vint_supports_stdin = {}
|
|
|
|
function! neomake#makers#ft#vim#neomake_checks() abort
|
|
let maker = {
|
|
\ 'exe': join([s:neomake_root, 'contrib', 'vim-checks'], s:slash),
|
|
\ 'errorformat': '%f:%l: %m',
|
|
\ }
|
|
|
|
return maker
|
|
endfunction
|
|
|
|
function! neomake#makers#ft#vim#vint() abort
|
|
let args = ['--style-problem', '--no-color',
|
|
\ '-f', '{file_path}:{line_number}:{column_number}:{severity}:{description} ({policy_name})']
|
|
|
|
if has('nvim')
|
|
call add(args, '--enable-neovim')
|
|
endif
|
|
|
|
let maker = {
|
|
\ 'args': args,
|
|
\ 'errorformat': '%I%f:%l:%c:style_problem:%m,'
|
|
\ .'%f:%l:%c:%t%*[^:]:E%n: %m,'
|
|
\ .'%f:%l:%c:%t%*[^:]:%m',
|
|
\ 'output_stream': 'stdout',
|
|
\ 'postprocess': {
|
|
\ 'fn': function('neomake#postprocess#generic_length'),
|
|
\ 'pattern': '\v%(^:|%([^:]+: ))\zs(\S+)',
|
|
\ }}
|
|
|
|
function! maker.supports_stdin(_jobinfo) abort
|
|
let exe = exists('*exepath') ? exepath(self.exe) : self.exe
|
|
let support = get(s:vint_supports_stdin, exe, -1)
|
|
if support == -1
|
|
let ver = neomake#compat#systemlist(['vint', '--version'])
|
|
let ver_split = split(ver[0], '\.')
|
|
if len(ver_split) > 1 && (ver_split[0] > 0 || +ver_split[1] >= 4)
|
|
let support = 1
|
|
else
|
|
let support = 0
|
|
endif
|
|
let s:vint_supports_stdin[exe] = support
|
|
call neomake#log#debug('vint: stdin support: '.support.'.')
|
|
endif
|
|
if support
|
|
let self.args += ['--stdin-display-name', '%:.']
|
|
endif
|
|
return support
|
|
endfunction
|
|
return maker
|
|
endfunction
|
|
|
|
function! neomake#makers#ft#vim#vimlint() abort
|
|
return {
|
|
\ 'args': ['-u'],
|
|
\ 'errorformat': '%f:%l:%c:%trror: EVL%n: %m,'
|
|
\ . '%f:%l:%c:%tarning: EVL%n: %m,'
|
|
\ . '%f:%l:%c:%t%*[^:]: EVP_%#E%#%n: %m',
|
|
\ 'postprocess': function('neomake#makers#ft#vim#PostprocessVimlint'),
|
|
\ 'output_stream': 'stdout',
|
|
\ }
|
|
endfunction
|
|
|
|
function! neomake#makers#ft#vim#PostprocessVimlint(entry) abort
|
|
let m = matchlist(a:entry.text, '\v`\zs[^`]{-}\ze`')
|
|
if empty(m)
|
|
return
|
|
endif
|
|
|
|
" Ensure that the text is there.
|
|
let l = len(m[0])
|
|
let line = getline(a:entry.lnum)
|
|
if line[a:entry.col-1 : a:entry.col-2+l] == m[0]
|
|
let a:entry.length = l
|
|
elseif m[0][0:1] ==# 'l:' && line[a:entry.col-1 : a:entry.col-4+l] == m[0][2:]
|
|
" Ignore implicit 'l:' prefix.
|
|
let a:entry.length = l - 2
|
|
endif
|
|
endfunction
|
|
" vim: ts=4 sw=4 et
|