Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

vim で編集中のファイルを eslint する

$
0
0

はじめに

※ vim + quickrun + eslint です.

vim でファイルを編集,npm run lint 実行,エラー文を覚える,編集...
この流れは効率が悪いので,なんとかしたいなと思い quickrun を使うことにしました.

※ 2016/09/22
outputter/quickfix/errorformat,
outputter/quickfix/open_cmd を追加した

quickrun の設定

~/.vimrc

let g:quickrun_config = get(g:, 'quickrun_config', {}) 
let s:eslint_path = system('PATH=$(npm bin):$PATH && which eslint')
let b:quickrun_eslint_path = substitute(s:eslint_path, '^\n*\s*\(.\{-}\)\n*\s*$', '\1', '')
let g:quickrun_config = { 
\ '_': {
  \ 'runner' : 'vimproc',
  \ 'runner/vimproc/updatetime' : 60, 
  \ 'outputter' : 'buffered',
  \ 'outputter/buffered/target' : 'message',
  \ 'outputter/buffer/close_on_empty' : 1,
  \ 'outputter/buffer/split'  : ':rightbelow 2sp',
\ },
\ 'javascript.jsx': {
  \ 'command'  : b:quickrun_eslint_path,
  \ 'cmdopt'   : '--config ~/.react/.eslintrc',
  \ 'exec'     : '%c %o %s',
  \ 'outputter': 'error',
  \ 'outputter/error/error'   : 'quickfix',
  \ 'outputter/quickfix/errorformat': '\ \ %l:%c\ \ error\ %m,%-G%.%#',
  \ 'outputter/quickfix/open_cmd': 'copen 1',
  \ },
\}

let g:quickrun_no_default_key_mappings = 1
nnoremap <Leader>r :ccl<CR>:write<CR>:QuickRun -mode n<CR>
nnoremap <expr><silent> <C-c> quickrun#is_running() ? quickrun#sweep_sessions() : "\<C-c>"
let s:hook = {
      \ "name" : "face",
      \ "kind" : "hook",
      \ "is_success": 0,
      \ "config" : {
        \ "enable" : 1
        \ }
      \ }
function! s:hook.on_success(...)
  if(&ft=='javascript.jsx')
    let self.is_success = 1
  endif
endfunction
function! s:hook.on_exit(...)
  if self.is_success
    echo ":-)"
  endif
endfunction
call quickrun#module#register(s:hook, 1)
unlet s:hook
unlet s:eslint_path

やってること

let s:eslint_path = system('PATH=$(npm bin):$PATH && which eslint')
let b:quickrun_eslint_path = substitute(s:eslint_path, '^\n*\s*\(.\{-}\)\n*\s*$', '\1', '')

これは mtscout6/syntastic-local-eslint.vimを参考にしました.
eslint をグローバルにインストールしてたら,この設定は必要ないと思います.

  \ 'outputter/quickfix/errorformat': '\ \ %l:%c\ \ error\ %m,%-G%.%#',
  \ 'outputter/quickfix/open_cmd': 'copen 1',

出力をエラーメッセージだけに絞ります.
quickfix の表示領域も狭くしてます.

let s:hook = {
      \ "name" : "face",
      \ "kind" : "hook",
      \ "is_success": 0,
      \ "config" : {
        \ "enable" : 1
        \ }
      \ }
function! s:hook.on_success(...)
  if(&ft=='javascript.jsx')
    let self.is_success = 1
  endif
endfunction
function! s:hook.on_exit(...)
  if self.is_success
    echo ":-)"
  endif
endfunction
call quickrun#module#register(s:hook, 1)

eslint は成功した時に何もメッセージを返してくれないので,顔 :-) を表示するようにしてます.

最後に

vim から eslint を実行したいけど,そのためだけに syntastic を使うのもなー と思い,quickrun で済ませました.
今後は quickfix について調べて,もっといい感じにしていきたいです.

2016/09/22
結構いい感じになったと思う.


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>