Vim で自動的に set spell を行う

先日 Vim のスペルチェックに日本語を除外する機能が実装されました。
せっかくなのでスペルチェックをいい感じに使ってみたいと思います。
さすがに常にスペルチェックを有効にするとちょっと鬱陶しいので以下の様な設定をしてみました。

[ソース]

set spelllang+=cjk


" トリガーがONになっていたら set spell を行う
function! s:set_spell()
    if get(b:, "set_spell_trigger", 0) && &modifiable
        let &spell = 1
        unlet b:set_spell_trigger
    endif
endfunction


" バッファの内容が変更されるか保存された時にスペルチェックを行う
" ただし、実際に有効になるのは CursorHold のタイミング
" また、カーソル移動を行えば無効にする
augroup my-setspell
    autocmd!
    autocmd BufWritePost,TextChanged,TextChangedI * let b:set_spell_trigger = 1
    autocmd CursorHold  * call s:set_spell()
    autocmd CursorMoved * if &spell | set nospell | endif
augroup END


最初は直接 set spell を行っていたのですが、それだとレスポンスが気になったので、CursorHold のタイミングで行うようにしてみました。
あとカーソル移動するとスペルチェックを無効にしています。
常にハイライトされていると鬱陶しいので、一瞬だけチェックできればよいかなーと。


まだ、スペルチェックのよさは感じませんが、スペルチェックをするタイミングとしてはよい感じかなーと。