sdf_chezmoi/dot_vim/bundle/neobundle.vim/autoload/unite/sources/neobundle_install.vim

191 lines
7.0 KiB
VimL

"=============================================================================
" FILE: neobundle/install.vim
" AUTHOR: Shougo Matsushita <Shougo.Matsu@gmail.com>
" License: MIT license {{{
" Permission is hereby granted, free of charge, to any person obtaining
" a copy of this software and associated documentation files (the
" "Software"), to deal in the Software without restriction, including
" without limitation the rights to use, copy, modify, merge, publish,
" distribute, sublicense, and/or sell copies of the Software, and to
" permit persons to whom the Software is furnished to do so, subject to
" the following conditions:
"
" The above copyright notice and this permission notice shall be included
" in all copies or substantial portions of the Software.
"
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
" IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
" CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
" TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
" SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
" }}}
"=============================================================================
let s:save_cpo = &cpo
set cpo&vim
function! unite#sources#neobundle_install#define() abort "{{{
return [s:source_install, s:source_update]
endfunction"}}}
let s:source_install = {
\ 'name' : 'neobundle/install',
\ 'description' : 'install bundles',
\ 'hooks' : {},
\ 'default_kind' : 'word',
\ 'syntax' : 'uniteSource__NeoBundleInstall',
\ }
function! s:source_install.hooks.on_init(args, context) abort "{{{
let bundle_names = filter(copy(a:args), "v:val != '!'")
let a:context.source__bang =
\ index(a:args, '!') >= 0 || !empty(bundle_names)
let a:context.source__not_fuzzy = 0
call s:init(a:context, bundle_names)
endfunction"}}}
function! s:source_install.hooks.on_syntax(args, context) abort "{{{
syntax match uniteSource__NeoBundleInstall_Progress /(.\{-}):\s*.*/
\ contained containedin=uniteSource__NeoBundleInstall
highlight default link uniteSource__NeoBundleInstall_Progress String
syntax match uniteSource__NeoBundleInstall_Source /|.\{-}|/
\ contained containedin=uniteSource__NeoBundleInstall_Progress
highlight default link uniteSource__NeoBundleInstall_Source Type
syntax match uniteSource__NeoBundleInstall_URI /-> diff URI/
\ contained containedin=uniteSource__NeoBundleInstall
highlight default link uniteSource__NeoBundleInstall_URI Underlined
endfunction"}}}
function! s:source_install.hooks.on_close(args, context) abort "{{{
if !empty(a:context.source__processes)
for process in a:context.source__processes
if has('nvim')
call jobstop(process.proc)
else
call process.proc.waitpid()
endif
endfor
endif
endfunction"}}}
function! s:source_install.async_gather_candidates(args, context) abort "{{{
if !a:context.sync && empty(filter(range(1, winnr('$')),
\ "getwinvar(v:val, '&l:filetype') ==# 'unite'"))
return []
endif
let old_msgs = copy(neobundle#installer#get_updates_log())
if a:context.source__number < a:context.source__max_bundles
while a:context.source__number < a:context.source__max_bundles
\ && len(a:context.source__processes) <
\ g:neobundle#install_max_processes
let bundle = a:context.source__bundles[a:context.source__number]
call neobundle#installer#sync(bundle, a:context, 1)
call unite#clear_message()
call unite#print_source_message(
\ neobundle#installer#get_progress_message(bundle,
\ a:context.source__number,
\ a:context.source__max_bundles), self.name)
redrawstatus
endwhile
endif
if !empty(a:context.source__processes)
for process in a:context.source__processes
call neobundle#installer#check_output(a:context, process, 1)
endfor
" Filter eof processes.
call filter(a:context.source__processes, '!v:val.eof')
else
call neobundle#installer#update_log(
\ neobundle#installer#get_updated_bundles_message(
\ a:context.source__synced_bundles), 1)
call neobundle#installer#update_log(
\ neobundle#installer#get_errored_bundles_message(
\ a:context.source__errored_bundles), 1)
call neobundle#installer#update(
\ a:context.source__synced_bundles)
" Finish.
call neobundle#installer#update_log('Completed.', 1)
let a:context.is_async = 0
endif
return map(neobundle#installer#get_updates_log()[len(old_msgs) :], "{
\ 'word' : (v:val =~ '^\\s*\\h\\w*://' ? ' -> diff URI' : v:val),
\ 'is_multiline' : 1,
\ 'kind' : (v:val =~ '^\\s*\\h\\w*://' ? 'uri' : 'word'),
\ 'action__uri' : substitute(v:val, '^\\s\\+', '', ''),
\}")
endfunction"}}}
function! s:source_install.complete(args, context, arglead, cmdline, cursorpos) abort "{{{
return ['!'] +
\ neobundle#commands#complete_bundles(a:arglead, a:cmdline, a:cursorpos)
endfunction"}}}
let s:source_update = deepcopy(s:source_install)
let s:source_update.name = 'neobundle/update'
let s:source_update.description = 'update bundles'
function! s:source_update.hooks.on_init(args, context) abort "{{{
let a:context.source__bang =
\ index(a:args, 'all') >= 0 ? 2 : 1
let a:context.source__not_fuzzy = index(a:args, '!') >= 0
let bundle_names = filter(copy(a:args),
\ "v:val !=# 'all' && v:val !=# '!'")
call s:init(a:context, bundle_names)
endfunction"}}}
function! s:init(context, bundle_names) abort "{{{
let a:context.source__synced_bundles = []
let a:context.source__errored_bundles = []
let a:context.source__processes = []
let a:context.source__number = 0
let a:context.source__bundles = !a:context.source__bang ?
\ neobundle#get_force_not_installed_bundles(a:bundle_names) :
\ empty(a:bundle_names) ?
\ neobundle#config#get_enabled_bundles() :
\ a:context.source__not_fuzzy ?
\ neobundle#config#search(a:bundle_names) :
\ neobundle#config#fuzzy_search(a:bundle_names)
call neobundle#installer#_load_install_info(
\ a:context.source__bundles)
let reinstall_bundles =
\ neobundle#installer#get_reinstall_bundles(
\ a:context.source__bundles)
if !empty(reinstall_bundles)
call neobundle#installer#reinstall(reinstall_bundles)
endif
let a:context.source__max_bundles =
\ len(a:context.source__bundles)
call neobundle#installer#clear_log()
if empty(a:context.source__bundles)
let a:context.is_async = 0
call neobundle#installer#error(
\ 'Target bundles not found. You may use wrong bundle name.')
else
call neobundle#installer#update_log(
\ 'Update started: ' . strftime('(%Y/%m/%d %H:%M:%S)'))
endif
endfunction"}}}
let &cpo = s:save_cpo
unlet s:save_cpo
" vim: foldmethod=marker