Created
February 18, 2012 05:14
-
-
Save nukino/1857570 to your computer and use it in GitHub Desktop.
[20120218-1414]externalhelp.vim/vim外部ヘルプ実行スクリプト
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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