Neomake висит при использовании eslint

11

Я следовал следующим двум урокам, чтобы попытаться настроить eslintи Neomake:

Итак, у меня есть следующие минимальные 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

Проблема заключается в том, что при сохранении Neomakeзависает следующее сообщение:

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

Если я запускаю эту команду вручную, nvimнапример, так:

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

Я получаю следующий вывод:

/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

Что хорошо, значит eslintработает, но я ничего не получаю Neomake.

Если я запускаю, :lopenокно всплывает, а затем мгновенно закрывается, как показано ниже:

Окно открыть, затем закрыть

Мои знания vim/ nvimзнания являются базовыми, поэтому, пожалуйста, укажите их в ответах.

Отис Райт
источник
Попробуй сменить свой autocmd! BufWritePost,BufEnter * Neomakeна augroup neomake/ au!/ autocmd BufWritePost * Neomake/ augroup END BufEnter, у меня нет
особого
На самом деле это может быть причиной для пустого окна быстрого исправления. На вашем экране гипса при запуске :lopenNeomake работает для этого буфера из - за autocmd для BufEnter. @Yonsy сниппет хорошо, но должно быть дополнительно ограничено JavaScript файлов только:augroup neomake/ au!/ autocmd BufWritePost *.js Neomake/ augroup END
grodzik

Ответы:

1

Некоторая [слегка отредактированная] информация из комментариев:

На самом деле это может быть причиной для пустого окна QuickFix. На вашем экране гипса при запуске :lopen, Neomake работает для этого буфера благодаря autocmd для BufEnter. Это должно быть дополнительно ограничено только файлами JavaScript:

augroup neomake
  au!
  autocmd BufWritePost *.js Neomake
augroup END
Д. Бен Кнобл
источник
0

Это не совсем отвечает на ваш вопрос, но я обнаружил, что neomake лучше работает с eslint_d . У него есть приятный побочный эффект, что он должен делать линтинг быстрее.

Вы должны сначала установить eslint_d глобально (но все еще кажется , подобрать любой локальный .eslintrcфайл):

npm install -g eslint_d

Затем добавьте следующую конфигурацию для neomake в ваш init.vim/ .vimrc:

let g:neomake_javascript_enabled_makers = ['eslint_d']

Для меня это было все, что мне было нужно, после перезапуска neovim и открытия запущенного файла javascript, :Neomakeя получил предупреждения от eslint.

icc97
источник