RSense
前回、うまく動作しないと言っていた RSense ですが、あのあと色々と試してみて動作したので覚書。
[Rsense]
[セットアップ]
- RSense ユーザーマニュアル - Windows
- gvimでRsense0.3を使う - Rubyはじめました
- Windows環境でRuby1.9.3+RsenseをWindowsサービスに >> 失敗orz - Qiita
- Vanrb Lightning Talk Slides: Ruby and Vim - Standards
導入方法とかは上記のサイトを見ればだいたい書いてあります。
[ftplugin/ruby.vim]
if !exists('g:neocomplcache_omni_patterns') let g:neocomplcache_omni_patterns = {} endif let g:rsenseUseOmniFunc = 1 if filereadable(expand($RSENSE_HOME.'/bin/rsense')) let g:rsenseHome = $RSENSE_HOME let g:neocomplcache_omni_patterns.ruby = '[^. *\t]\.\w*\|\h\w*::' endif " RSense Service の開始と終了 if !exists("s:service_started") let s:service_started=0 endif function! s:service_start() if !s:service_started RSenseServiceStart let s:service_started=1 endif endfunction call s:service_start() function! s:service_stop() if s:service_started RSenseServiceStop let s:service_started=0 endif endfunction augroup ftplugin-ruby autocmd! autocmd VimLeave <buffer> call <SID>service_stop() augroup END
[オムニ補完]
こんな感じで、変数の型を考慮した補完が出来るみたいですね。
補完速度に関しては、補完時にコマンドの呼び出しが入るのでめちゃくちゃ早いとは言えませんが、それでも思ったよりは早い感じですね。
まぁ規模が大きくなるともっと補完速度が遅くなってくるかも知れませんが。
上記の場合では set filetype=ruby 時にサービスを開始して、Vim の終了時にサービスが終了するようにしています。
まぁ Vim と関係なく、RSense のサービスはずーっと起動していてもいいとは思いますが。
あと 2つ以上の Vim を起動している場合に片方の Vim を終了させるとサービスが終了してしまうので注意して下さい。