basyura's blog

あしたになったらほんきだす。

plugin/rails.vim を読む - その9

" autocomd の railsPluginDetect グループを定義
augroup railsPluginDetect
  " ファイル .vimrc が2回読み込まれるとき、autocommand は二度現れる。
  " これを避けるため
  " 現在のグループに対する「全て」の autocommand を削除。
  autocmd!
  " 全てのファイルに対して
  " 存在しないファイルの編集を始めたとき、新しいバッファの編集を始めたとき
  " ファイルの読み書き用のファイル名(?)を完全パスにして
  " Detact を呼び出す
  autocmd BufNewFile,BufRead * call s:Detect(expand("<afile>:p"))
  " ファイル .vimrc の読み込みを含む、全てのスタートアップ処理
  " autocommand の実行時、この自動コマンドが実行されたときの
  " マッチが空で b:rails_root が存在しない場合
  " 現在のディレクトリ名を引数にして Detect を呼び出す。
  " b:rails_root が存在する場合、
  " User グループのカレントファイル名にマッチする
  " BufEnterRails イベントを可憐とバッファに適用する。
  autocmd VimEnter * 
        if expand("<amatch>") == "" && !exists("b:rails_root") 
            | call s:Detect(getcwd()) | endif 
        | if exists("b:rails_root") 
            | silent doau User BufEnterRails | endif
  " FileType が netrw の場合に
  " b:rails_root が存在しない場合 Detect を呼び出す。
  " b:rails_root が存在する場合
  " User グループのカレントファイル名にマッチする
  " BufEnterRails イベントを可憐とバッファに適用する。
  autocmd FileType netrw if !exists("b:rails_root") 
        | call s:Detect(expand("<afile>:p")) | endif 
        | if exists("b:rails_root") 
            | silent doau User BufEnterRails | endif
  " 全てのファイルのバッファに入った後
  " b:rails_root が存在していれば
  " User グループのカレントファイル名にマッチする
  " BufEnterRails イベントを可憐とバッファに適用する。
  autocmd BufEnter * if exists("b:rails_root")
        |silent doau User BufEnterRails|endif
  " 全てのファイルの他のバッファに移る際
  " b:rails_root が存在していれば
  " User グループのカレントファイル名にマッチする
  " BufEnterRails イベントを可憐とバッファに適用する。
  autocmd BufLeave * if exists("b:rails_root")
        |silent doau User BufLeaveRails|endif
  " Syntax が railslog で
  " autoload が true の場合 rails#log_syntax を呼び出す
  autocmd Syntax railslog if s:autoload()
        |call rails#log_syntax()|endif
augroup END
" Rails コマンド定義
command! -bar -bang -nargs=* -complete=dir Rails :if s:autoload()
    |call rails#new_app_command(<bang>0,<f-args>)|endif