2

[Vim 8.0.1 / Syntastic 3.9.0-19 / Vundle 0.5 / vint 0.3.19 on Arch Linux]

My vim linter seems to be broken and I don't quite understand why.
It's been working fine in its present configuration, until this morning.

I get the following error message, when I write any buffer identified as vim filetype to disk:

syntastic: warning: checker vim/vint: unrecognized error format (crashed checker?)

It is also the content of :messages in buffer.

"Startpage"-ing it returned zero relevant result.

The pertinent ~/.vimrc section ...

filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'vim-syntastic/syntastic'
Plugin 'Valloric/YouCompleteMe.git'
Plugin 'Townk/vim-autoclose' 
Plugin 'dougireton/vim-chef'
Plugin 'jimhester/lintr'
Plugin 'vim-scripts/LaTeX-Suite-aka-Vim-LaTeX'
Plugin 'Kuniwak/vint'
call vundle#end()
filetype plugin indent on

Syntastic is aware of $USER $PATH:

:echo syntastic#util#system('echo "$PATH"')
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/opt/bin:/opt/scripts

The runtime path includes Vundle:

:set runtimepath?
runtimepath=~/.vim,~/.vim/bundle/Vundle.vim,~/.vim/bundle/syntastic,~/.vim/bundle/YouCompleteMe,~/.vim/bundle/vim-autoclose,~/.vim/bundle/vim-chef,~/.vim/bundle/lintr,~/.vim/bundle/LaTeX-Suite-aka-Vim-LaTeX,~/.vim/bundle/vint,/usr/share/vim/vimfiles,/usr/share/vim/vim81,/usr/share/vim/vim81/pack/dist/opt/matchit,/usr/share/vim/vimfiles/after,~/.vim/after,~.vim/bundle/Vundle.vim,~/.vim/bundle/Vundle.vim/after,~/.vim/bundle/syntastic/after,~/.vim/bundle/YouCompleteMe/after,~/.vim/bundle/vim-autoclose/after,~/.vim/bundle/vim-chef/after,~/.vim/bundle/lintr/after,~/.vim/bundle/LaTeX-Suite-aka-Vim-LaTeX/after,~/.vim/bundle/vint/after

The cloned git repo in ~/.vim/bundle/Vundle.vim is up to date. The vint executable is correctly located at /usr/bin/vint and I inserted the following in ~/.vimrc:

  let g:syntastic_vim_checkers = ['vint']

so that issuing ex cmd :SyntasticInfo [vim] does yield vint and the correct filetype, "vim".

I am stumped. Has anybody seen this before ?

  • 1
    The error message probably means exactly what it says, either vint changed output format when I wasn't looking, or it just crashed. Feel free to post to the issue tracker if you jcare to find out what's going on. This isn't appropriate for Vi and Vim. – lcd047 Oct 26 '18 at 19:06
  • @lcd047: issue opened on github.com/vim-syntastic/syntastic/issues – Cbhihe Oct 26 '18 at 21:11
0

The Kuniwak/vint lint checker breaks (im my setup) when parsing non-ASCII characters. It happens as soon as even one character outside the 0-127 ASCII range (plus a few such as "_", etc. ) appear in the vim-script, no matter where, i.e. inside or outside comments.

As suggested by @lcd047, I added debug option flags to my ~/.vimrc to catch more verbose messages:

"let g:syntastic_debug = 3
"let g:syntastic_debug_file = '~/.vim/syntastic.log'

The content of :messages revealed:

"/usr/lib/python3.7/site-packages/vint/encodings/decoding_strategy.py", line 77, in decode', ' return bytes_seq.decode(encoding=encoding_part.decode(encoding=''ascii''))', 'UnicodeDecodeError: ''ascii'' codec can''t decode byte 0xc2 in position 33: ordinal not in range(128)', '']

syntastic: warning: checker vim/vint: unrecognized error format (crashed checker?)

As it turns out, byte 0xc2 is the first byte of the two-byte non-ASCII character "º" that I had just mapped as in: inoremap <C-º> <Esc>.

The mapping worked just fine ... and vint just quit. In retrospect I find it curious that in support of the suspicion that vint was at fault, running :echo system('vint $USER/.vimrc --json') in-buffer, and $ vint $USER/.vimrc from console, produced the exact same error.

So I opened an issue at the vint GitHub repo.


In the end the Kuniwak/vint lint checker works fine. Another plugin causes an incompatibility and is at fault: Townk/vim-autoclose. It somehow makes vint crash when parsing non-ASCII characters. Also for instance, syntax highlighting groups targeting those same non-ASCIIs do not work when autoclose is loaded. It also causes weird results when used in conjunction with YouCompleteMe.

Solution: replace Townk/vim-autoclose with Raimondi/delimitMate.

  • Shouldn't you actually wait for the reply of author before posting your analyses left and right? For what it's worth, my vint can happily parse the line inoremap <C-º> <Esc>. – lcd047 Oct 28 '18 at 17:31
  • 1
    Since you can reproduce the problem in a terminal, this has nothing to do with Vim. Your vint installation is broken. If you ask nicely, vint's author will probably tell you how / why. Maybe claiming it's a feature was not a step in that direction. – lcd047 Oct 28 '18 at 18:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.