Neomake appeso quando si utilizza eslint


11

Ho seguito i seguenti due tutorial per provare a configurare eslinte Neomake:

Quindi ho il seguente minimo 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

Il problema è quando salvo si Neomakeblocca con il seguente messaggio:

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

Se eseguo quel comando manualmente al di fuori di questo nvimmodo:

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

Ricevo il seguente output:

/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

Il che è positivo significa che eslintfunziona ma non mi viene restituito nulla Neomake.

Se corro :lopenla finestra si apre e poi si chiude immediatamente come di seguito:

La finestra si apre e poi si chiude

La mia vim/ nvimconoscenza è in qualche modo basilare quindi per favore sii esplicito nelle risposte.


prova a cambiare il tuo autocmd! BufWritePost,BufEnter * Neomakein augroup neomake/ au!/ autocmd BufWritePost * Neomake/ augroup END BufEnter non ha molto senso
Yonsy Solis,

In realtà questo potrebbe essere il motivo della finestra di correzione rapida vuota. Sul cast dello schermo quando esegui :lopenNeomake viene eseguito per quel buffer a causa di autocmd per BufEnter. Lo snippet di @Yonsy è buono, ma dovrebbe essere limitato ai soli file JavaScript:augroup neomake/ au!/ autocmd BufWritePost *.js Neomake/ augroup END
grodzik

Risposte:


1

Alcune informazioni [leggermente modificate] dai commenti:

In realtà questo potrebbe essere il motivo della finestra di Quickfix vuota. Quando esegui il cast dello schermo :lopen, Neomake viene eseguito per quel buffer a causa di autocmd per BufEnter. Dovrebbe inoltre essere limitato ai soli file JavaScript:

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

0

Questo non risponde esattamente alla tua domanda, ma ho scoperto che Neomake funziona meglio con eslint_d . Ha il piacevole effetto collaterale che dovrebbe fare anche la lanugine più velocemente.

Devi prima installare eslint_d a livello globale (ma sembra comunque raccogliere qualsiasi .eslintrcfile locale ):

npm install -g eslint_d

Quindi aggiungi la seguente configurazione per Neomake al tuo init.vim/ .vimrc:

let g:neomake_javascript_enabled_makers = ['eslint_d']

Per me era tutto ciò di cui avevo bisogno, dopo aver riavviato neovim e aver aperto un file javascript in esecuzione :Neomakemi ha dato avvertimenti eslint.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.