| @ -0,0 +1,71 @@ | |||
| " --------------------------------------------------------------------------- | |||
| " Search the database from vim-script.org for a matching plugin. If no | |||
| " argument is given, list all plugins. This function is used by the :Plugins | |||
| " and :PluginSearch commands. | |||
| " | |||
| " ... -- a plugin name to search for | |||
| " --------------------------------------------------------------------------- | |||
| func! vundle#search#new(string) | |||
| let info = ['"Keymap: i - Install plugin; c - Cleanup; s - Search; R - Reload list'] | |||
| let url = s:search_url.'+'.a:string | |||
| let query_result = s:search(url) | |||
| " check error first | |||
| if 0 == query_result[0] | |||
| let false = 0 | |||
| let true = 0 | |||
| let null = 0 | |||
| let res = substitute(query_result[1], "\n", "", 'g') | |||
| let items = eval(res).items | |||
| " echo items | |||
| call vundle#scripts#view('search', info, vundle#search#bundle_names(items)) | |||
| echo len(items).' plugins found' | |||
| else | |||
| call vundle#scripts#view('search', info, ['"An error running query']) | |||
| endif | |||
| redraw | |||
| endf | |||
| " --------------------------------------------------------------------------- | |||
| " Create a list of 'Plugin ...' lines from a list of bundle names. | |||
| " | |||
| " names -- a list of names (strings) of plugins | |||
| " return -- a list of 'Plugin ...' lines suitable to be written to a buffer | |||
| " --------------------------------------------------------------------------- | |||
| func! vundle#search#bundle_names(items) | |||
| let r = [] | |||
| for item in a:items | |||
| call add(r, printf("Plugin '%s' \" %s", item.full_name, item.description)) | |||
| endfo | |||
| return r | |||
| endf | |||
| " --------------------------------------------------------------------------- | |||
| " | |||
| " to -- the filename (string) to save the database to | |||
| " url -- the request url | |||
| " return -- 0 on success, 1 if an error occurred | |||
| " --------------------------------------------------------------------------- | |||
| func! s:search(url) | |||
| let url = vundle#installer#shellesc(a:url) | |||
| if executable("curl") | |||
| let cmd = 'curl --fail -s '.l:url | |||
| elseif executable("wget") | |||
| let cmd = 'wget -q -O - '.l:url | |||
| else | |||
| echoerr 'Error curl or wget is not available!' | |||
| return [1] | |||
| endif | |||
| let response = system(cmd) | |||
| if (0 != v:shell_error) | |||
| echoerr 'Error fetching scripts!' | |||
| endif | |||
| return [v:shell_error, response] | |||
| endf | |||
| let s:search_url = 'https://api.github.com/search/repositories?q=language:VimL+user:vim-scripts' | |||
| " vim: set expandtab sts=2 ts=2 sw=2 tw=78 norl: | |||