eslintを使用するとNeomakeがハングする


11

私が試してみて、設定するには、次の2つのチュートリアルを追っているeslintNeomake

だから私は次の最小限のものを持っています 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 * Neomakeaugroup neomake/ au!/ autocmd BufWritePost * Neomake/ augroup END BufEnter に変更しようとしても意味がありません
Yonsy Solis

実際には、これが空のクイックフィックスウィンドウの理由かもしれません。:lopenNeomake を実行すると、BufEnterのautocmdが原因で、そのバッファーに対して画面キャストが実行されます。@Yonsyスニペットは良いですが、さらにJavaScriptに限定されるべきであるファイルのみ:augroup neomake/ au!/ autocmd BufWritePost *.js Neomake/ augroup END
grodzik

回答:


1

コメントからの[軽く編集された]情報:

実際、これが空のQuickfixウィンドウの理由かもしれません。を実行したときのスクリーンキャストでは:lopen、BufEnterのautocmdにより、そのバッファーに対してNeomakeが実行されます。さらに、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ファイルを開くと、:Neomakeeslint警告が表示されました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.