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ค่อนข้างพื้นฐานดังนั้นโปรดตอบอย่างชัดเจน


ลองเปลี่ยน BufEnter ของคุณautocmd! BufWritePost,BufEnter * Neomakeให้เป็นaugroup neomake/ au!/ autocmd BufWritePost * Neomake/ augroup ENDเรื่องไม่สมเหตุสมผล
Yonsy Solis

ที่จริงนี่อาจเป็นสาเหตุของหน้าต่าง Quick fix ที่ว่างเปล่า บนหน้าจอของคุณเมื่อคุณเรียกใช้:lopenNeomake ทำงานสำหรับบัฟเฟอร์นั้นเนื่องจาก autocmd สำหรับ BufEnter @Yonsy ข้อมูลโค้ดเป็นสิ่งที่ดี แต่ควร จำกัด เฉพาะไฟล์ JavaScript เท่านั้น:augroup neomake/ au!/ autocmd BufWritePost *.js Neomake/ augroup END
grodzik

คำตอบ:


1

ข้อมูล [แก้ไขเบา ๆ ] บางส่วนจากความคิดเห็น:

ที่จริงนี่อาจเป็นสาเหตุของหน้าต่าง Quickfix ที่ว่างเปล่า บนหน้าจอของคุณเมื่อคุณเรียกใช้:lopenNeomake ทำงานสำหรับบัฟเฟอร์นั้นเนื่องจาก 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 และเปิดไฟล์จาวาสคริปต์ที่:Neomakeให้คำเตือน eslint

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.