minibufexpl.vimとscratch.vimの相性が悪い

scratch.vimは何種類かあるけどhttp://www.vim.org/scripts/script.php?script_id=1134を使っている。
scratch.vimを簡単に説明すると、Vimが起動している間のみ有効な(つまりファイルではなくメモリ上の)メモ。
もともとはEmacsの機能だったはず。
最近はVimを一日中(家だと数日)起動しっぱなしになっているので便利。


さて本題。
minibufexpl.vimで複数のファイルを開いていて、scratch.vimの機能を使った場合に問題が起きる。
Vimの画面全体をScratchにする(で可能)と、Scratchから戻ってくると最後に開いていたファイルと違う場所になる。
Splitを行うScratchの場合()は、minibufexpl.vimの機能をOFFにしてしまう。


仕方がないのでscratch.vimを修正。

function! s:ScratchBufferToggle(flag)
" open the scratch buf
" flag : 0 split
"        1 not split
  let curb = bufnr('')
  call s:ScratchBufferNew()
  if s:visuable == 1
    if curb == s:scratch_number
      silent! bn
    else
      exe curb . 'buffer'
    endif
    if bufnr('') != s:scratch_number
      let s:visuable = 0
    endif

    "ここを追加
    if a:flag == 0
        close
    endif
    "ここまで
  else  "if s:visuable == 0 
    if a:flag == 0
      exe 'split +' . s:scratch_number . 'buffer'
      resize 10
    else
      exe s:scratch_number . 'buffer'
    endif
    let s:visuable = 1
  endif
endfunction

これでSplit機能の方は問題が無くなる。
普通のScratch機能は修正が出来なかったので、Split機能のみを使うことでお茶を濁す


しかしこのscriptをWindowsで使うと重くなる。
どうしたものか。


Windowsでの最低限必要な設定とかscriptはhttp://d.hatena.ne.jp/longicorn/20071130#p1で書いたけど、
そのうち使っているscript一覧とかも書こうかな。