Neomake tergantung saat menggunakan eslint

11

Saya telah mengikuti dua tutorial berikut untuk mencoba dan mengatur eslintdan Neomake:

Jadi saya punya minimal berikut 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

Masalahnya adalah ketika saya menyimpan Neomakehang dengan pesan berikut:

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

Jika saya menjalankan perintah itu secara manual di luar nvimseperti:

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

Saya menerima output berikut:

/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

Yang bagus itu artinya eslintbekerja tetapi saya tidak mendapatkan apa-apa dari Neomake.

Jika saya menjalankan :lopenjendela muncul dan kemudian langsung menutup seperti di bawah ini:

Buka jendela lalu tutup

Saya vim/ nvimpengetahuan agak dasar jadi harap eksplisit dalam tanggapan.

Otis Wright
sumber
coba ubah autocmd! BufWritePost,BufEnter * Neomakeke augroup neomake/ au!/ autocmd BufWritePost * Neomake/ augroup END BufEnter Anda tidak masuk akal
Yonsy Solis
Sebenarnya ini mungkin menjadi alasan untuk jendela perbaikan cepat kosong. Pada layar Anda dilemparkan ketika Anda menjalankan :lopenNeomake menjalankan untuk buffer itu karena autocmd untuk BufEnter. Cuplikan @Yonsy baik, tetapi harus dibatasi hanya untuk file JavaScript saja:augroup neomake/ au!/ autocmd BufWritePost *.js Neomake/ augroup END
grodzik

Jawaban:

1

Beberapa info [yang diedit] dari komentar:

Sebenarnya ini mungkin menjadi alasan untuk jendela Quickfix kosong. Di layar Anda ketika Anda menjalankan :lopen, Neomake menjalankan buffer itu karena autocmd untuk BufEnter. Itu harus dibatasi hanya untuk file JavaScript saja:

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

Ini tidak persis menjawab pertanyaan Anda, tetapi saya menemukan bahwa neomake berfungsi lebih baik dengan eslint_d . Ini memiliki efek samping yang bagus yang harus dilakukan linting lebih cepat juga.

Pertama-tama Anda harus menginstal eslint_d secara global (tetapi tampaknya masih mengambil .eslintrcfile lokal apa pun ):

npm install -g eslint_d

Kemudian tambahkan konfigurasi berikut untuk neomake ke init.vim/ Anda .vimrc:

let g:neomake_javascript_enabled_makers = ['eslint_d']

Bagi saya itu yang saya butuhkan, setelah memulai kembali neovim dan membuka file javascript berjalan :Neomakememberi saya peringatan eslint.

icc97
sumber