Neomake pendurado ao usar eslint


11

Tenho acompanhado os dois tutoriais a seguir para tentar configurar eslinte Neomake:

Então, eu tenho o seguinte mínimo init.vim

call plug#begin('~/.vim/plugged')

Plug 'neomake/neomake'

call plug#end()

autocmd! BufWritePost,BufEnter * Neomake
let g:neomake_verbose=3
let g:neomake_open_list = 2
let g:neomake_javascript_enabled_makers = ['eslint']

" neomake
nmap <Leader><Space>o :lopen<CR>      " open location window
nmap <Leader><Space>c :lclose<CR>     " close location window
nmap <Leader><Space>, :ll<CR>         " go to current error/warning
nmap <Leader><Space>n :lnext<CR>      " next error/warning
nmap <Leader><Space>p :lprev<CR>      " previous error/warning

O problema é quando eu salvo Neomaketrava com a seguinte mensagem:

Neomake: Starting: eslint -f compact /home/otis/Developer/test/index.js

Se eu executar esse comando manualmente fora do seguinte nvimmodo:

eslint -f compact /home/otis/Developer/test/index.js

Eu recebo a seguinte saída:

/home/otis/Developer/test/index.js: line 1, col 1, Error - Unexpected var, use let or const instead. (no-var)
/home/otis/Developer/test/index.js: line 1, col 5, Error - 'a' is defined but never used. (no-unused-vars)
/home/otis/Developer/test/index.js: line 1, col 9, Error - Strings must use singlequote. (quotes)

3 problems

O que é bom, significa que eslintestá funcionando, mas não estou conseguindo nada de volta Neomake.

Se eu correr, :lopena janela aparece e fecha instantaneamente, como abaixo:

Janela aberta e fechada

Meu vim/ nvimconhecimento é um pouco básico, portanto, seja explícito nas respostas.


tentar mudar o seu autocmd! BufWritePost,BufEnter * Neomakepara augroup neomake/ au!/ autocmd BufWritePost * Neomake/ augroup END BufEnter não tem muitos sentido
Yonsy Solis

Na verdade, esse pode ser o motivo da janela de correção rápida vazia. Na tela em que você executa, o :lopenNeomake executa esse buffer devido ao autocmd for BufEnter. O snippet @Yonsy é bom, mas deve se limitar adicionalmente apenas aos arquivos JavaScript:augroup neomake/ au!/ autocmd BufWritePost *.js Neomake/ augroup END
grodzik

Respostas:


1

Algumas informações [levemente editadas] dos comentários:

Na verdade, esse pode ser o motivo da janela vazia do Quickfix. Na tela em que você executa :lopen, o Neomake executa esse buffer devido ao autocmd do BufEnter. Além disso, deve ser limitado apenas aos arquivos JavaScript:

augroup neomake
  au!
  autocmd BufWritePost *.js Neomake
augroup END

0

Isso não responde exatamente à sua pergunta, mas eu achei que o neomake funciona melhor com eslint_d . Ele tem o bom efeito colateral de que deve fazer a limpeza mais rapidamente também.

Você primeiro precisa instalar o eslint_d globalmente (mas ainda parece pegar qualquer .eslintrcarquivo local ):

npm install -g eslint_d

Em seguida, adicione a seguinte configuração do neomake ao seu init.vim/ .vimrc:

let g:neomake_javascript_enabled_makers = ['eslint_d']

Para mim, era tudo o que eu precisava, depois de reiniciar o neovim e abrir um arquivo javascript em execução, :Neomakeme deram avisos eslint.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.