50 howm-mode.vim (2-27) mattn さんのパッチの取り込みと s:OpenMemo() の修正
http://mattn.kaoriya.net/software/vim/20080218172019.htm
mattn さんが書かれていた s:OpenMemo() 内の matchend の変更を吸収。ついでなので OpenMemo に手を入れてみた。
let s:errmsg_cantmkdir = "cannot create directory '%dir%'" " filepath を howm のメモファイルとして開く " linenum == 0 の時には新しいメモのテンプレートを追加した状態で開く " linenum != 0 の時にはその行にキャレットを置いた状態で開く function! s:OpenMemo(filepath, linenum) let editing = s:HowmExpand("%:p") let filepath = s:HowmExpand(a:filepath) if editing != filepath let idx = matchend(filepath, '\V' . escape(s:HowmExpand(g:howm_dir), '\')) if idx != -1 let dir = substitute(strpart(filepath, idx), '[^/]*$', '', '') if v:version >= 700 && exists('*mkdir') let dir_fp = s:HowmExpand(g:howm_dir) . dir if !isdirectory(dir_fp) silent! call mkdir(dir_fp, 'p') echo 'mkdir("' . dir_fp. '", "p")' endif else " 存在しないディレクトリ下のファイルを指定されたら,ディレクトリを作る let retval = s:MakeDirectory(dir) if retval != '' echohl WarningMsg echo substitute(s:errmsg_cantmkdir, '%dir%', escape(dir, '\'), 'g') echohl None return endif endif endif call s:OpenWindow(a:filepath, 1) endif " ... endfunction
変更点は以下の三点。
- matchend() の第二引数の修正
- mkdir() が使えるとき ( v:version >= 700 && exists('*mkdir') ) は s:MakeDirectory() を使わないようにする修正
- TODO になっていたエラーメッセージを作成