Skip to content

Instantly share code, notes, and snippets.

@nukino
Created February 18, 2012 05:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nukino/1857570 to your computer and use it in GitHub Desktop.
Save nukino/1857570 to your computer and use it in GitHub Desktop.
[20120218-1414]externalhelp.vim/vim外部ヘルプ実行スクリプト
let g:external_hlp_hhhexe = get(g:, 'external_hlp_hhhexe', '')
let g:external_hlp_winhlpexe = get(g:, 'external_hlp_winhlpexe', '')
" 引数1:キーワード種類
" 0:カーソル位置をキーワードとする
" 1:キーワード入力
" 2:引数2をキーワードとする
"
" 引数2:キーワード
"
" 引数3:ヘルプファイル名。指定しない場合、
" b:externalhelp_file変数→g:external_hlp_files辞書変数
function! externalhelp#show_windowhelp(...)
if !has('win32')
echoerr "Win32環境下以外での動作は想定していません"
return ""
endif
"helpfile, keyw, is_cursor_keyw
let keyw_type = get(a:, "1", 0)
let keywd = get(a:, "2", "")
let helpfile = get(a:, "3", "")
if helpfile == "" | let helpfile = get(b:,"externalhelp_file","") | en
if helpfile == "" | let helpfile = get(get(g:, "external_hlp_files", {}), &filetype, "") | en
if helpfile == "" | return "" | en
let helpext = tolower(matchstr(helpfile, '\v.+\.\zs.+\ze'))
if helpext == 'chm'
let help_exe = g:external_hlp_hhhexe
let key_cmdline = 'printf( ''"%s" "%s" %s'', help_exe, helpfile, keywd)'
let nokey_cmdline = 'printf( ''"%s" "%s"'', help_exe, helpfile)'
elseif helpext == 'hlp'
let help_exe = g:external_hlp_winhlpexe
let key_cmdline = 'printf( ''"%s" -k%s "%s"'', help_exe, keywd, helpfile)'
let nokey_cmdline = 'printf( ''"%s" "%s"'', help_exe, helpfile)'
else
echoerr "不明なヘルプファイル拡張子です:" . helpext
return ""
endif
if ( !executable( help_exe ) )
echoerr '実行ファイル"' . help_exe . '"が見つかりません'
elseif ( !filereadable( helpfile ) )
echoerr 'ヘルプファイル"' . helpfile . '"が見つかりません'
else
if keyw_type == 0
let keywd = expand("<cword>")
elseif keyw_type == 1
let keywd = input("input keyword:")
endif
if ( keywd == "" )
let cmdline = eval(nokey_cmdline)
else
let cmdline = eval(key_cmdline)
endif
"メッセージなしで実行
"LocalBrowseShellCmdRefresh関数でエラーが起きる(時がある)ので、エラーも無視
execute "silent! !start " . cmdline
endif
return ""
endfunction
"おまけ
"引数1、引数2の意味はshow_windowhelpと同じ
function! externalhelp#show_vimhelp(...)
let keyw_type = get(a:, "1", 0)
let keywd = get(a:, "2", "")
if keyw_type == 0
let keywd = expand("<cword>")
elseif keyw_type == 1
let keywd = input("input keyword:")
endif
execute "help " . keywd
endfunction
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment