mirror of
https://github.com/amix/vimrc
synced 2025-06-24 07:44:59 +08:00
Updated plugins
This commit is contained in:
@ -19,12 +19,12 @@ if has('reltime')
|
||||
lockvar! g:syntastic_start
|
||||
endif
|
||||
|
||||
let g:syntastic_version = '3.4.0-90'
|
||||
let g:syntastic_version = '3.4.0-117'
|
||||
lockvar g:syntastic_version
|
||||
|
||||
" Sanity checks {{{1
|
||||
|
||||
for s:feature in ['autocmd', 'eval', 'modify_fname', 'quickfix', 'user_commands']
|
||||
for s:feature in ['autocmd', 'eval', 'modify_fname', 'quickfix', 'reltime', 'user_commands']
|
||||
if !has(s:feature)
|
||||
call syntastic#log#error("need Vim compiled with feature " . s:feature)
|
||||
finish
|
||||
@ -65,10 +65,11 @@ let g:syntastic_defaults = {
|
||||
\ 'filetype_map': {},
|
||||
\ 'full_redraws': !(has('gui_running') || has('gui_macvim')),
|
||||
\ 'id_checkers': 1,
|
||||
\ 'ignore_extensions': '\c\v^([gx]?z|lzma|bz2)$',
|
||||
\ 'ignore_files': [],
|
||||
\ 'loc_list_height': 10,
|
||||
\ 'quiet_messages': {},
|
||||
\ 'reuse_loc_lists': (v:version >= 704),
|
||||
\ 'reuse_loc_lists': 0,
|
||||
\ 'sort_aggregated_errors': 1,
|
||||
\ 'stl_format': '[Syntax: line:%F (%t)]',
|
||||
\ 'style_error_symbol': 'S>',
|
||||
@ -167,7 +168,7 @@ command! -nargs=* -complete=custom,s:CompleteCheckerName SyntasticCheck
|
||||
\ call syntastic#util#redraw(g:syntastic_full_redraws)
|
||||
command! Errors call s:ShowLocList()
|
||||
command! -nargs=? -complete=custom,s:CompleteFiletypes SyntasticInfo
|
||||
\ call s:modemap.echoMode() |
|
||||
\ call s:modemap.modeInfo(<f-args>) |
|
||||
\ call s:registry.echoInfoFor(s:resolveFiletypes(<f-args>))
|
||||
command! SyntasticReset
|
||||
\ call s:ClearCache() |
|
||||
@ -237,6 +238,11 @@ endfunction " }}}2
|
||||
|
||||
"refresh and redraw all the error info for this buf when saving or reading
|
||||
function! s:UpdateErrors(auto_invoked, ...) " {{{2
|
||||
call syntastic#log#debugShowVariables(g:SyntasticDebugTrace, 'version')
|
||||
call syntastic#log#debugShowOptions(g:SyntasticDebugTrace, s:debug_dump_options)
|
||||
call syntastic#log#debugDump(g:SyntasticDebugVariables)
|
||||
call syntastic#log#debug(g:SyntasticDebugTrace, 'UpdateErrors' . (a:auto_invoked ? ' (auto)' : '') .
|
||||
\ ': ' . (a:0 ? join(a:000) : 'default checkers'))
|
||||
if s:skipFile()
|
||||
return
|
||||
endif
|
||||
@ -288,14 +294,13 @@ endfunction " }}}2
|
||||
|
||||
"detect and cache all syntax errors in this buffer
|
||||
function! s:CacheErrors(checker_names) " {{{2
|
||||
call syntastic#log#debug(g:SyntasticDebugTrace, 'CacheErrors: ' .
|
||||
\ (len(a:checker_names) ? join(a:checker_names) : 'default checkers'))
|
||||
call s:ClearCache()
|
||||
let newLoclist = g:SyntasticLoclist.New([])
|
||||
|
||||
if !s:skipFile()
|
||||
" debug logging {{{3
|
||||
call syntastic#log#debugShowVariables(g:SyntasticDebugTrace, 'version')
|
||||
call syntastic#log#debugShowOptions(g:SyntasticDebugTrace, s:debug_dump_options)
|
||||
call syntastic#log#debugDump(g:SyntasticDebugVariables)
|
||||
call syntastic#log#debugShowVariables(g:SyntasticDebugTrace, 'aggregate_errors')
|
||||
call syntastic#log#debug(g:SyntasticDebugTrace, 'getcwd() = ' . getcwd())
|
||||
" }}}3
|
||||
@ -376,7 +381,6 @@ function! s:CacheErrors(checker_names) " {{{2
|
||||
endif
|
||||
endif
|
||||
|
||||
call newLoclist.setOwner(bufnr(''))
|
||||
call newLoclist.deploy()
|
||||
endfunction " }}}2
|
||||
|
||||
@ -408,7 +412,9 @@ endfunction " }}}2
|
||||
" 'preprocess' - a function to be applied to the error file before parsing errors
|
||||
" 'postprocess' - a list of functions to be applied to the error list
|
||||
" 'cwd' - change directory to the given path before running the checker
|
||||
" 'env' - environment variables to set before running the checker
|
||||
" 'returns' - a list of valid exit codes for the checker
|
||||
" @vimlint(EVL102, 1, l:env_save)
|
||||
function! SyntasticMake(options) " {{{2
|
||||
call syntastic#log#debug(g:SyntasticDebugTrace, 'SyntasticMake: called with options:', a:options)
|
||||
|
||||
@ -432,11 +438,31 @@ function! SyntasticMake(options) " {{{2
|
||||
execute 'lcd ' . fnameescape(a:options['cwd'])
|
||||
endif
|
||||
|
||||
" set environment variables {{{3
|
||||
let env_save = {}
|
||||
if has_key(a:options, 'env') && len(a:options['env'])
|
||||
for key in keys(a:options['env'])
|
||||
if key =~? '\m^[a-z_]\+$'
|
||||
exec 'let env_save[' . string(key) . '] = $' . key
|
||||
exec 'let $' . key . ' = ' . string(a:options['env'][key])
|
||||
endif
|
||||
endfor
|
||||
endif
|
||||
let $LC_MESSAGES = 'C'
|
||||
let $LC_ALL = ''
|
||||
" }}}3
|
||||
|
||||
let err_lines = split(system(a:options['makeprg']), "\n", 1)
|
||||
|
||||
" restore environment variables {{{3
|
||||
let $LC_ALL = old_lc_all
|
||||
let $LC_MESSAGES = old_lc_messages
|
||||
if len(env_save)
|
||||
for key in keys(env_save)
|
||||
exec 'let $' . key . ' = ' . string(env_save[key])
|
||||
endfor
|
||||
endif
|
||||
" }}}3
|
||||
|
||||
call syntastic#log#debug(g:SyntasticDebugLoclist, 'checker output:', err_lines)
|
||||
|
||||
@ -497,6 +523,7 @@ function! SyntasticMake(options) " {{{2
|
||||
|
||||
return errors
|
||||
endfunction " }}}2
|
||||
" @vimlint(EVL102, 0, l:env_save)
|
||||
|
||||
"return a string representing the state of buffer according to
|
||||
"g:syntastic_stl_format
|
||||
@ -527,9 +554,14 @@ endfunction " }}}2
|
||||
|
||||
" Skip running in special buffers
|
||||
function! s:skipFile() " {{{2
|
||||
let force_skip = exists('b:syntastic_skip_checks') ? b:syntastic_skip_checks : 0
|
||||
let fname = expand('%')
|
||||
return force_skip || (&buftype != '') || !filereadable(fname) || getwinvar(0, '&diff') || s:ignoreFile(fname)
|
||||
let skip = (exists('b:syntastic_skip_checks') ? b:syntastic_skip_checks : 0) ||
|
||||
\ (&buftype != '') || !filereadable(fname) || getwinvar(0, '&diff') ||
|
||||
\ s:ignoreFile(fname) || fnamemodify(fname, ':e') =~? g:syntastic_ignore_extensions
|
||||
if skip
|
||||
call syntastic#log#debug(g:SyntasticDebugTrace, 'skipFile: skipping')
|
||||
endif
|
||||
return skip
|
||||
endfunction " }}}2
|
||||
|
||||
" Take a list of errors and add default values to them from a:options
|
||||
|
@ -43,6 +43,7 @@ endfunction " }}}2
|
||||
" Reset the error balloons
|
||||
" @vimlint(EVL103, 1, a:loclist)
|
||||
function! g:SyntasticBalloonsNotifier.reset(loclist) " {{{2
|
||||
let b:syntastic_balloons = {}
|
||||
if has('balloon_eval')
|
||||
call syntastic#log#debug(g:SyntasticDebugNotifications, 'balloons: reset')
|
||||
set nobeval
|
||||
|
@ -32,8 +32,8 @@ endfunction " }}}2
|
||||
" Sets error highlights in the cuirrent window
|
||||
function! g:SyntasticHighlightingNotifier.refresh(loclist) " {{{2
|
||||
if self.enabled()
|
||||
call self.reset(a:loclist)
|
||||
call syntastic#log#debug(g:SyntasticDebugNotifications, 'highlighting: refresh')
|
||||
call self._reset()
|
||||
let buf = bufnr('')
|
||||
let issues = filter(a:loclist.copyRaw(), 'v:val["bufnr"] == buf')
|
||||
for item in issues
|
||||
@ -64,11 +64,7 @@ endfunction " }}}2
|
||||
function! g:SyntasticHighlightingNotifier.reset(loclist) " {{{2
|
||||
if s:has_highlighting
|
||||
call syntastic#log#debug(g:SyntasticDebugNotifications, 'highlighting: reset')
|
||||
for match in getmatches()
|
||||
if stridx(match['group'], 'Syntastic') == 0
|
||||
call matchdelete(match['id'])
|
||||
endif
|
||||
endfor
|
||||
call self._reset()
|
||||
endif
|
||||
endfunction " }}}2
|
||||
" @vimlint(EVL103, 0, a:loclist)
|
||||
@ -95,6 +91,14 @@ function! g:SyntasticHighlightingNotifier._setup() " {{{2
|
||||
endif
|
||||
endfunction " }}}2
|
||||
|
||||
function! g:SyntasticHighlightingNotifier._reset() " {{{2
|
||||
for match in getmatches()
|
||||
if stridx(match['group'], 'Syntastic') == 0
|
||||
call matchdelete(match['id'])
|
||||
endif
|
||||
endfor
|
||||
endfunction " }}}2
|
||||
|
||||
" }}}1
|
||||
|
||||
" vim: set sw=4 sts=4 et fdm=marker:
|
||||
|
@ -46,6 +46,14 @@ function! g:SyntasticLoclist.isEmpty() " {{{2
|
||||
return empty(self._rawLoclist)
|
||||
endfunction " }}}2
|
||||
|
||||
function! g:SyntasticLoclist.isNewerThan(stamp) " {{{2
|
||||
if !exists("self._stamp")
|
||||
let self._stamp = []
|
||||
return 0
|
||||
endif
|
||||
return syntastic#util#compareLexi(self._stamp, a:stamp) > 0
|
||||
endfunction " }}}2
|
||||
|
||||
function! g:SyntasticLoclist.copyRaw() " {{{2
|
||||
return copy(self._rawLoclist)
|
||||
endfunction " }}}2
|
||||
@ -132,6 +140,8 @@ function! g:SyntasticLoclist.setOwner(buffer) " {{{2
|
||||
endfunction " }}}2
|
||||
|
||||
function! g:SyntasticLoclist.deploy() " {{{2
|
||||
call self.setOwner(bufnr(''))
|
||||
let self._stamp = syntastic#util#stamp()
|
||||
for buf in self.getBuffers()
|
||||
call setbufvar(buf, 'syntastic_loclist', self)
|
||||
endfor
|
||||
|
@ -19,8 +19,8 @@ endfunction " }}}2
|
||||
function! g:SyntasticModeMap.synch() " {{{2
|
||||
if exists('g:syntastic_mode_map')
|
||||
let self._mode = get(g:syntastic_mode_map, 'mode', 'active')
|
||||
let self._activeFiletypes = get(g:syntastic_mode_map, 'active_filetypes', [])
|
||||
let self._passiveFiletypes = get(g:syntastic_mode_map, 'passive_filetypes', [])
|
||||
let self._activeFiletypes = copy(get(g:syntastic_mode_map, 'active_filetypes', []))
|
||||
let self._passiveFiletypes = copy(get(g:syntastic_mode_map, 'passive_filetypes', []))
|
||||
else
|
||||
let self._mode = 'active'
|
||||
let self._activeFiletypes = []
|
||||
@ -62,6 +62,27 @@ function! g:SyntasticModeMap.echoMode() " {{{2
|
||||
echo "Syntastic: " . self._mode . " mode enabled"
|
||||
endfunction " }}}2
|
||||
|
||||
function! g:SyntasticModeMap.modeInfo(...) " {{{2
|
||||
echomsg 'Syntastic version: ' . g:syntastic_version
|
||||
let type = a:0 ? a:1 : &filetype
|
||||
echomsg 'Info for filetype: ' . type
|
||||
|
||||
call self.synch()
|
||||
echomsg 'Mode: ' . self._mode
|
||||
if self._mode ==# 'active'
|
||||
if len(self._passiveFiletypes)
|
||||
let plural = len(self._passiveFiletypes) != 1 ? 's' : ''
|
||||
echomsg 'Passive filetype' . plural . ': ' . join(sort(copy(self._passiveFiletypes)))
|
||||
endif
|
||||
else
|
||||
if len(self._activeFiletypes)
|
||||
let plural = len(self._activeFiletypes) != 1 ? 's' : ''
|
||||
echomsg 'Active filetype' . plural . ': ' . join(sort(copy(self._activeFiletypes)))
|
||||
endif
|
||||
endif
|
||||
echomsg 'Filetype ' . type . ' is ' . (self.allowsAutoChecking(type) ? 'active' : 'passive')
|
||||
endfunction " }}}2
|
||||
|
||||
" }}}1
|
||||
|
||||
" Private methods {{{1
|
||||
|
@ -8,6 +8,9 @@ let g:SyntasticNotifiers = {}
|
||||
let s:notifier_types = ['signs', 'balloons', 'highlighting', 'cursor', 'autoloclist']
|
||||
lockvar! s:notifier_types
|
||||
|
||||
let s:persistent_notifiers = ['signs', 'balloons']
|
||||
lockvar! s:persistent_notifiers
|
||||
|
||||
" Public methods {{{1
|
||||
|
||||
function! g:SyntasticNotifiers.Instance() " {{{2
|
||||
@ -20,11 +23,27 @@ function! g:SyntasticNotifiers.Instance() " {{{2
|
||||
endfunction " }}}2
|
||||
|
||||
function! g:SyntasticNotifiers.refresh(loclist) " {{{2
|
||||
if !a:loclist.isEmpty() && !a:loclist.isNewerThan([])
|
||||
" loclist not fully constructed yet
|
||||
return
|
||||
endif
|
||||
|
||||
call syntastic#log#debug(g:SyntasticDebugNotifications, 'notifiers: refresh')
|
||||
for type in self._enabled_types
|
||||
let class = substitute(type, '\m.*', 'Syntastic\u&Notifier', '')
|
||||
if !has_key(g:{class}, 'enabled') || self._notifier[type].enabled()
|
||||
call self._notifier[type].refresh(a:loclist)
|
||||
if index(s:persistent_notifiers, type) > -1
|
||||
" refresh only if loclist has changed since last call
|
||||
if !exists('b:syntastic_' . type . '_stamp')
|
||||
let b:syntastic_{type}_stamp = []
|
||||
endif
|
||||
if a:loclist.isNewerThan(b:syntastic_{type}_stamp) || a:loclist.isEmpty()
|
||||
call self._notifier[type].refresh(a:loclist)
|
||||
let b:syntastic_{type}_stamp = syntastic#util#stamp()
|
||||
endif
|
||||
else
|
||||
call self._notifier[type].refresh(a:loclist)
|
||||
endif
|
||||
endif
|
||||
endfor
|
||||
endfunction " }}}2
|
||||
@ -40,6 +59,11 @@ function! g:SyntasticNotifiers.reset(loclist) " {{{2
|
||||
if has_key(g:{class}, 'reset')
|
||||
call self._notifier[type].reset(a:loclist)
|
||||
endif
|
||||
|
||||
" also reset stamps
|
||||
if index(s:persistent_notifiers, type) > -1
|
||||
let b:syntastic_{type}_stamp = []
|
||||
endif
|
||||
endfor
|
||||
endfunction " }}}2
|
||||
|
||||
|
@ -9,6 +9,7 @@ let s:defaultCheckers = {
|
||||
\ 'actionscript':['mxmlc'],
|
||||
\ 'ada': ['gcc'],
|
||||
\ 'applescript': ['osacompile'],
|
||||
\ 'arduino': ['avrgcc'],
|
||||
\ 'asciidoc': ['asciidoc'],
|
||||
\ 'asm': ['gcc'],
|
||||
\ 'bro': ['bro'],
|
||||
@ -29,7 +30,7 @@ let s:defaultCheckers = {
|
||||
\ 'dart': ['dartanalyzer'],
|
||||
\ 'docbk': ['xmllint'],
|
||||
\ 'dustjs': ['swiffer'],
|
||||
\ 'elixir': ['elixir'],
|
||||
\ 'elixir': [],
|
||||
\ 'erlang': ['escript'],
|
||||
\ 'eruby': ['ruby'],
|
||||
\ 'fortran': ['gfortran'],
|
||||
@ -178,9 +179,6 @@ function! g:SyntasticRegistry.getNamesOfAvailableCheckers(ftalias) " {{{2
|
||||
endfunction " }}}2
|
||||
|
||||
function! g:SyntasticRegistry.echoInfoFor(ftalias_list) " {{{2
|
||||
echomsg "Syntastic version: " . g:syntastic_version
|
||||
echomsg "Info for filetype: " . join(a:ftalias_list, '.')
|
||||
|
||||
let ft_list = syntastic#util#unique(map( copy(a:ftalias_list), 's:normaliseFiletype(v:val)' ))
|
||||
if len(ft_list) != 1
|
||||
let available = []
|
||||
@ -196,8 +194,15 @@ function! g:SyntasticRegistry.echoInfoFor(ftalias_list) " {{{2
|
||||
let active = map(self.getCheckersAvailable(ft, []), 'v:val.getName()')
|
||||
endif
|
||||
|
||||
echomsg "Available checker(s): " . join(sort(available))
|
||||
echomsg "Currently enabled checker(s): " . join(active)
|
||||
let cnt = len(available)
|
||||
let plural = cnt != 1 ? 's' : ''
|
||||
let cklist = cnt ? join(sort(available)) : '-'
|
||||
echomsg 'Available checker' . plural . ': ' . cklist
|
||||
|
||||
let cnt = len(active)
|
||||
let plural = cnt != 1 ? 's' : ''
|
||||
let cklist = cnt ? join(active) : '-'
|
||||
echomsg 'Currently enabled checker' . plural . ': ' . cklist
|
||||
endfunction " }}}2
|
||||
|
||||
" }}}1
|
||||
|
@ -42,7 +42,6 @@ function! g:SyntasticSignsNotifier.refresh(loclist) " {{{2
|
||||
call self._signErrors(a:loclist)
|
||||
endif
|
||||
call self._removeSigns(old_signs)
|
||||
let s:first_sign_id = exists('s:next_sign_id') ? s:next_sign_id : 5000
|
||||
endfunction " }}}2
|
||||
|
||||
" }}}1
|
||||
@ -88,26 +87,29 @@ function! g:SyntasticSignsNotifier._signErrors(loclist) " {{{2
|
||||
let loclist = a:loclist
|
||||
if !loclist.isEmpty()
|
||||
|
||||
" errors some first, so that they are not masked by warnings
|
||||
let buf = bufnr('')
|
||||
if !bufloaded(buf)
|
||||
" signs can be placed only in loaded buffers
|
||||
return
|
||||
endif
|
||||
|
||||
" errors come first, so that they are not masked by warnings
|
||||
let issues = copy(loclist.errors())
|
||||
call extend(issues, loclist.warnings())
|
||||
call filter(issues, 'v:val["bufnr"] == buf')
|
||||
let seen = {}
|
||||
|
||||
for i in issues
|
||||
if !has_key(seen, i['lnum'])
|
||||
if i['lnum'] > 0 && !has_key(seen, i['lnum'])
|
||||
let seen[i['lnum']] = 1
|
||||
|
||||
if i['lnum'] > 0
|
||||
let sign_severity = i['type'] ==? 'W' ? 'Warning' : 'Error'
|
||||
let sign_subtype = get(i, 'subtype', '')
|
||||
let sign_type = 'Syntastic' . sign_subtype . sign_severity
|
||||
let sign_severity = i['type'] ==? 'W' ? 'Warning' : 'Error'
|
||||
let sign_subtype = get(i, 'subtype', '')
|
||||
let sign_type = 'Syntastic' . sign_subtype . sign_severity
|
||||
|
||||
execute "sign place " . s:next_sign_id . " line=" . i['lnum'] . " name=" . sign_type . " buffer=" . i['bufnr']
|
||||
call add(self._bufSignIds(), s:next_sign_id)
|
||||
let s:next_sign_id += 1
|
||||
endif
|
||||
execute "sign place " . s:next_sign_id . " line=" . i['lnum'] . " name=" . sign_type . " buffer=" . i['bufnr']
|
||||
call add(self._bufSignIds(), s:next_sign_id)
|
||||
let s:next_sign_id += 1
|
||||
endif
|
||||
endfor
|
||||
endif
|
||||
|
Reference in New Issue
Block a user