35 howm-mode.vim (2-13) VimGrepSearch の修正

http://d.hatena.ne.jp/eclipse-a/20080115/1200375043 で書いた s:VimGrepSearch() にあった問題点を修正。

  • :vimgrep の使用条件の確認を改善
  • g:howm_dir の ~ の展開などができていなかった
  • s:GrepSearch() と同様のメッセージ出力(howm Searching...)ができていなかった
" s:GrepSearch と同様の出力をする関数
" Vim7 以降にある内蔵 grep ( :vimgrep ) を使用する
"
" searchWord: Vim の正規表現
" TODO: HInr のうち I に対応できていない
" TODO: &lazyredraw に意味があるか確認する
" TODO: filename が若干違う
function! s:VimGrepSearch(searchWord)
  if v:version < 700 || !has('quickfix')
    " TODO:エラーメッセージ
    return ''
  endif
  redraw!
  echo s:prefix_howm.s:msg_wait_search
  let searchPath = s:HowmExpand(g:howm_dir)
  let save_lazyredraw = &lazyredraw
  let &lazyredraw = 1
  let save_qflist = deepcopy(getqflist())
  silent! execute 'vimgrep /'. a:searchWord .'/gj '. searchPath .'**/*.*'
  let retval = join(map(getqflist(), "fnamemodify(bufname(v:val['bufnr']),':p:.:gs?\\?/?').':'.v:val['lnum'].':'.v:val['text']"), "\n")
  call setqflist(save_qflist)
  let &lazyredraw = save_lazyredraw
  return retval
endfunction