Neomake suspendu lors de l'utilisation d'eslint

11

J'ai suivi les deux didacticiels suivants pour essayer de configurer eslintet Neomake:

J'ai donc le minimum suivant 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

Le problème est lorsque j'enregistre se Neomakebloque avec le message suivant:

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

Si j'exécute cette commande manuellement en dehors de nvimcomme ça:

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

Je reçois la sortie suivante:

/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

Ce qui est bien, cela signifie que cela eslintfonctionne, mais je n'en retire rien Neomake.

Si j'exécute :lopenla fenêtre apparaît et se ferme instantanément comme ci-dessous:

Fenêtre ouverte puis fermée

Mon vim/ nvimconnaissance est assez basique donc s'il vous plaît être explicite dans les réponses.

Otis Wright
la source
essayez de changer votre autocmd! BufWritePost,BufEnter * Neomakeen augroup neomake/ au!/ autocmd BufWritePost * Neomake/ augroup END BufEnter n'ont pas beaucoup de sens
Yonsy Solis
En fait, cela pourrait être la raison de la fenêtre de résolution rapide vide. Sur votre :lopencopie d' écran lorsque vous exécutez Neomake s'exécute pour ce tampon en raison de l'autocmd pour BufEnter. L'extrait @Yonsy est bon, mais devrait en outre être limité aux fichiers JavaScript uniquement:augroup neomake/ au!/ autocmd BufWritePost *.js Neomake/ augroup END
grodzik

Réponses:

1

Quelques informations [légèrement modifiées] des commentaires:

En fait, cela pourrait être la raison de la fenêtre Quickfix vide. Sur votre distribution d'écran lorsque vous exécutez :lopen, Neomake s'exécute pour ce tampon en raison de l'autocmd pour BufEnter. Il doit en outre être limité aux fichiers JavaScript uniquement:

augroup neomake
  au!
  autocmd BufWritePost *.js Neomake
augroup END
D. Ben Knoble
la source
0

Cela ne répond pas exactement à votre question, mais j'ai trouvé que neomake fonctionne mieux avec eslint_d . Il a le bel effet secondaire qu'il devrait aussi faire les peluches plus rapidement.

Vous devez d'abord installer eslint_d globalement (mais il semble toujours récupérer n'importe quel .eslintrcfichier local ):

npm install -g eslint_d

Ajoutez ensuite la configuration suivante pour neomake à votre init.vim/ .vimrc:

let g:neomake_javascript_enabled_makers = ['eslint_d']

Pour moi, c'était tout ce dont j'avais besoin, après avoir redémarré neovim et ouvert un fichier javascript en cours d'exécution :Neomake, il m'a donné des avertissements eslint.

icc97
la source