我今天用自制软件更新了节点,这意味着所有的npm模块都被吹走了。这当然意味着jshint
可执行文件(例如由npm install -g jshint
获得)不再存在,因此Syntastic只是默默地停止检查我的js文件中的语法。
我没有花太多时间注意到,但我希望能够了解这一变化。我希望在句子状态行中以Syntastic - cannot run jshint
的曲调显示某些内容(最好是红色)。
答案 0 :(得分:2)
最简单的解决方案是编辑文件
syntastic/syntax_checkers/javascript/jshint.vim
从
更改功能function! SyntaxCheckers_javascript_jshint_IsAvailable()
return executable('jshint')
endfunction
到
function! SyntaxCheckers_javascript_jshint_IsAvailable()
if executable('jshint') != 1
echohl Error
echo "Syntastic - cannot run jshint"
echohl None
endif
return executable('jshint')
endfunction
echohl将回显的高亮颜色设置为高光组错误(很可能是红色但可能不是红色)。然后它会在您保存时打印出要打印的信息。但是这不在状态行上。
答案 1 :(得分:0)
不幸的是,Syntastic似乎缺乏报告缺失的检查程序的功能,而该检查程序可能具有人们所期望的可见性。理想情况下,应添加此类功能。对于不适合打补丁Syntastic的用户,可能的解决方法是打开调试,搜索已知有问题的字符串并对其发出警报。例如。通过用错误符号标记第一行并将日志放在新缓冲区中。如下所示,我将其添加到了.vimrc
中。
let g:syntastic_debug = 1
function! SyntasticCheckerNotFound()
redir => messages
silent messages
redir END
let pos = match(messages, "syntastic.*Checker.*is not available")
if pos != -1
new
setlocal buftype=nofile
put =messages
sign place 1 line=1 name=SyntasticError buffer=1
" goto pos
endif
let g:syntastic_debug = 0
endfunction
autocmd VimEnter <buffer> call SyntasticCheckerNotFound()
在VimEnter
事件上运行上述函数时,它仅在启动vim时执行一次,并且仅在作为参数提供的第一个文件上执行。远非完美,但它可能足以减少确定因缺少检查器而导致的绒毛断裂所需的时间和精力。