Some checks failed
		
		
	
	Detach Plugins / check (FlyGrep.vim) (push) Has been cancelled
				
			Detach Plugins / check (GitHub.vim) (push) Has been cancelled
				
			Detach Plugins / check (JavaUnit.vim) (push) Has been cancelled
				
			Detach Plugins / check (SourceCounter.vim) (push) Has been cancelled
				
			Detach Plugins / check (cpicker.nvim) (push) Has been cancelled
				
			Detach Plugins / check (dein-ui.vim) (push) Has been cancelled
				
			Detach Plugins / check (git.vim) (push) Has been cancelled
				
			Detach Plugins / check (iedit.vim) (push) Has been cancelled
				
			Detach Plugins / check (scrollbar.vim) (push) Has been cancelled
				
			Detach Plugins / check (vim-chat) (push) Has been cancelled
				
			Detach Plugins / check (vim-cheat) (push) Has been cancelled
				
			Detach Plugins / check (vim-todo) (push) Has been cancelled
				
			Detach Plugins / check (xmake.vim) (push) Has been cancelled
				
			test / Linux (nvim, nightly) (push) Has been cancelled
				
			test / Linux (nvim, v0.3.8) (push) Has been cancelled
				
			test / Linux (nvim, v0.4.0) (push) Has been cancelled
				
			test / Linux (nvim, v0.4.2) (push) Has been cancelled
				
			test / Linux (nvim, v0.4.3) (push) Has been cancelled
				
			test / Linux (nvim, v0.4.4) (push) Has been cancelled
				
			test / Linux (nvim, v0.5.0) (push) Has been cancelled
				
			test / Linux (nvim, v0.5.1) (push) Has been cancelled
				
			test / Linux (nvim, v0.6.0) (push) Has been cancelled
				
			test / Linux (nvim, v0.6.1) (push) Has been cancelled
				
			test / Linux (nvim, v0.7.0) (push) Has been cancelled
				
			test / Linux (nvim, v0.7.2) (push) Has been cancelled
				
			test / Linux (nvim, v0.8.0) (push) Has been cancelled
				
			test / Linux (nvim, v0.8.1) (push) Has been cancelled
				
			test / Linux (nvim, v0.8.2) (push) Has been cancelled
				
			test / Linux (nvim, v0.8.3) (push) Has been cancelled
				
			test / Linux (nvim, v0.9.0) (push) Has been cancelled
				
			test / Linux (nvim, v0.9.1) (push) Has been cancelled
				
			test / Linux (true, vim, v7.4.052) (push) Has been cancelled
				
			test / Linux (true, vim, v7.4.1689) (push) Has been cancelled
				
			test / Linux (true, vim, v7.4.629) (push) Has been cancelled
				
			test / Linux (true, vim, v8.0.0027) (push) Has been cancelled
				
			test / Linux (true, vim, v8.0.0183) (push) Has been cancelled
				
			test / Linux (vim, nightly) (push) Has been cancelled
				
			test / Linux (vim, v8.0.0184) (push) Has been cancelled
				
			test / Linux (vim, v8.0.1453) (push) Has been cancelled
				
			test / Linux (vim, v8.1.2269) (push) Has been cancelled
				
			test / Linux (vim, v8.2.2434) (push) Has been cancelled
				
			test / Linux (vim, v8.2.3995) (push) Has been cancelled
				
			test / Windows (nvim, nightly) (push) Has been cancelled
				
			test / Windows (nvim, v0.3.8) (push) Has been cancelled
				
			test / Windows (nvim, v0.4.2) (push) Has been cancelled
				
			test / Windows (nvim, v0.4.3) (push) Has been cancelled
				
			test / Windows (nvim, v0.4.4) (push) Has been cancelled
				
			test / Windows (nvim, v0.5.0) (push) Has been cancelled
				
			test / Windows (nvim, v0.5.1) (push) Has been cancelled
				
			test / Windows (nvim, v0.6.0) (push) Has been cancelled
				
			test / Windows (nvim, v0.6.1) (push) Has been cancelled
				
			test / Windows (nvim, v0.7.0) (push) Has been cancelled
				
			test / Windows (nvim, v0.7.2) (push) Has been cancelled
				
			test / Windows (nvim, v0.8.0) (push) Has been cancelled
				
			test / Windows (nvim, v0.8.1) (push) Has been cancelled
				
			test / Windows (nvim, v0.8.2) (push) Has been cancelled
				
			test / Windows (nvim, v0.8.3) (push) Has been cancelled
				
			test / Windows (nvim, v0.9.0) (push) Has been cancelled
				
			test / Windows (nvim, v0.9.1) (push) Has been cancelled
				
			test / Windows (vim, nightly) (push) Has been cancelled
				
			test / Windows (vim, v7.4.1185) (push) Has been cancelled
				
			test / Windows (vim, v7.4.1689) (push) Has been cancelled
				
			test / Windows (vim, v8.0.0027) (push) Has been cancelled
				
			test / Windows (vim, v8.0.1453) (push) Has been cancelled
				
			test / Windows (vim, v8.1.2269) (push) Has been cancelled
				
			test / Windows (vim, v8.2.2434) (push) Has been cancelled
				
			test / Windows (vim, v8.2.3995) (push) Has been cancelled
				
			docker / docker (push) Has been cancelled
				
			mirror / check (coding) (push) Has been cancelled
				
			mirror / check (gitee) (push) Has been cancelled
				
			mirror / check (gitlab) (push) Has been cancelled
				
			
		
			
				
	
	
		
			755 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			755 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
"=============================================================================
 | 
						|
" FILE: config.vim
 | 
						|
" AUTHOR:  Shougo Matsushita <Shougo.Matsu at 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
 | 
						|
 | 
						|
if !exists('s:neobundles')
 | 
						|
  let s:within_block = 0
 | 
						|
  let s:lazy_rtp_bundles = []
 | 
						|
  let s:neobundles = {}
 | 
						|
  let neobundle#tapped = {}
 | 
						|
endif
 | 
						|
 | 
						|
function! neobundle#config#init() abort "{{{
 | 
						|
  if neobundle#config#within_block()
 | 
						|
    call neobundle#util#print_error(
 | 
						|
          \ 'neobundle#begin()/neobundle#end() usage is invalid.')
 | 
						|
    call neobundle#util#print_error(
 | 
						|
          \ 'Please check your .vimrc.')
 | 
						|
    return
 | 
						|
  endif
 | 
						|
 | 
						|
  augroup neobundle
 | 
						|
    autocmd VimEnter * call s:on_vim_enter()
 | 
						|
  augroup END
 | 
						|
 | 
						|
  call s:filetype_off()
 | 
						|
 | 
						|
  let s:within_block = 1
 | 
						|
  let s:lazy_rtp_bundles = []
 | 
						|
 | 
						|
  " Load extra bundles configuration.
 | 
						|
  call neobundle#config#load_extra_bundles()
 | 
						|
endfunction"}}}
 | 
						|
function! neobundle#config#append() abort "{{{
 | 
						|
  if neobundle#config#within_block()
 | 
						|
    call neobundle#util#print_error(
 | 
						|
          \ 'neobundle#begin()/neobundle#end() usage is invalid.')
 | 
						|
    call neobundle#util#print_error(
 | 
						|
          \ 'Please check your .vimrc.')
 | 
						|
    return
 | 
						|
  endif
 | 
						|
 | 
						|
  if neobundle#get_rtp_dir() == ''
 | 
						|
    call neobundle#util#print_error(
 | 
						|
          \ 'You must call neobundle#begin() before.')
 | 
						|
    call neobundle#util#print_error(
 | 
						|
          \ 'Please check your .vimrc.')
 | 
						|
    return
 | 
						|
  endif
 | 
						|
 | 
						|
  call s:filetype_off()
 | 
						|
 | 
						|
  let s:within_block = 1
 | 
						|
  let s:lazy_rtp_bundles = []
 | 
						|
endfunction"}}}
 | 
						|
function! neobundle#config#final() abort "{{{
 | 
						|
  if !neobundle#config#within_block()
 | 
						|
    call neobundle#util#print_error(
 | 
						|
          \ 'neobundle#begin()/neobundle#end() usage is invalid.')
 | 
						|
    call neobundle#util#print_error(
 | 
						|
          \ 'Please check your .vimrc.')
 | 
						|
    return
 | 
						|
  endif
 | 
						|
 | 
						|
  " Join to the tail in runtimepath.
 | 
						|
  let rtps = neobundle#util#split_rtp(&runtimepath)
 | 
						|
  let index = index(rtps, neobundle#get_rtp_dir())
 | 
						|
  if index < 0
 | 
						|
    call neobundle#util#print_error(
 | 
						|
          \ 'Invalid runtimepath is detected.')
 | 
						|
    call neobundle#util#print_error(
 | 
						|
          \ 'Please check your .vimrc.')
 | 
						|
    return
 | 
						|
  endif
 | 
						|
  for bundle in filter(s:lazy_rtp_bundles,
 | 
						|
        \ 'isdirectory(v:val.rtp) && !v:val.disabled')
 | 
						|
    let bundle.sourced = 1
 | 
						|
    call insert(rtps, bundle.rtp, index)
 | 
						|
    let index += 1
 | 
						|
 | 
						|
    if isdirectory(bundle.rtp.'/after')
 | 
						|
      call add(rtps, s:get_rtp_after(bundle))
 | 
						|
    endif
 | 
						|
  endfor
 | 
						|
  let &runtimepath = neobundle#util#join_rtp(rtps, &runtimepath, '')
 | 
						|
 | 
						|
  call neobundle#call_hook('on_source', s:lazy_rtp_bundles)
 | 
						|
 | 
						|
  let s:within_block = 0
 | 
						|
  let s:lazy_rtp_bundles = []
 | 
						|
endfunction"}}}
 | 
						|
function! neobundle#config#within_block() abort "{{{
 | 
						|
  return s:within_block
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#get(name) abort "{{{
 | 
						|
  return get(s:neobundles, a:name, {})
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#get_neobundles() abort "{{{
 | 
						|
  return values(s:neobundles)
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#get_enabled_bundles() abort "{{{
 | 
						|
  return filter(values(s:neobundles),
 | 
						|
        \ "!v:val.disabled")
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#get_autoload_bundles() abort "{{{
 | 
						|
  return filter(values(s:neobundles),
 | 
						|
        \ "!v:val.sourced && v:val.lazy && !v:val.disabled")
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#source_bundles(bundles) abort "{{{
 | 
						|
  if !empty(a:bundles)
 | 
						|
    call neobundle#config#source(map(copy(a:bundles),
 | 
						|
          \ "type(v:val) == type({}) ? v:val.name : v:val"))
 | 
						|
  endif
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#check_not_exists(names, ...) abort "{{{
 | 
						|
  " For infinite loop.
 | 
						|
  let self = get(a:000, 0, [])
 | 
						|
 | 
						|
  let _ = map(neobundle#get_not_installed_bundles(a:names), 'v:val.name')
 | 
						|
  for bundle in map(filter(copy(a:names),
 | 
						|
        \ 'index(self, v:val) < 0 && has_key(s:neobundles, v:val)'),
 | 
						|
        \ 's:neobundles[v:val]')
 | 
						|
    call add(self, bundle.name)
 | 
						|
 | 
						|
    if !empty(bundle.depends)
 | 
						|
      let _ += neobundle#config#check_not_exists(
 | 
						|
            \ map(copy(bundle.depends), 'v:val.name'), self)
 | 
						|
    endif
 | 
						|
  endfor
 | 
						|
 | 
						|
  if len(_) > 1
 | 
						|
    let _ = neobundle#util#uniq(_)
 | 
						|
  endif
 | 
						|
 | 
						|
  return _
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#source(names, ...) abort "{{{
 | 
						|
  let is_force = get(a:000, 0, 1)
 | 
						|
 | 
						|
  let bundles = neobundle#config#search(
 | 
						|
        \ neobundle#util#convert2list(a:names))
 | 
						|
 | 
						|
  let bundles = filter(bundles, "!v:val.disabled && !v:val.sourced")
 | 
						|
  if empty(bundles)
 | 
						|
    return
 | 
						|
  endif
 | 
						|
 | 
						|
  let filetype_before = neobundle#util#redir("autocmd FileType")
 | 
						|
 | 
						|
  let reset_ftplugin = 0
 | 
						|
  for bundle in bundles
 | 
						|
    let bundle.sourced = 1
 | 
						|
    let bundle.disabled = 0
 | 
						|
 | 
						|
    if !empty(bundle.dummy_commands)
 | 
						|
      for command in bundle.dummy_commands
 | 
						|
        silent! execute 'delcommand' command
 | 
						|
      endfor
 | 
						|
      let bundle.dummy_commands = []
 | 
						|
    endif
 | 
						|
 | 
						|
    if !empty(bundle.dummy_mappings)
 | 
						|
      for [mode, mapping] in bundle.dummy_mappings
 | 
						|
        silent! execute mode.'unmap' mapping
 | 
						|
      endfor
 | 
						|
      let bundle.dummy_mappings = []
 | 
						|
    endif
 | 
						|
 | 
						|
    call neobundle#config#rtp_add(bundle)
 | 
						|
 | 
						|
    if exists('g:loaded_neobundle') || is_force
 | 
						|
      try
 | 
						|
        call s:on_source(bundle)
 | 
						|
      catch
 | 
						|
        call neobundle#util#print_error(
 | 
						|
              \ 'Uncaught error while sourcing "' . bundle.name .
 | 
						|
              \ '": '.v:exception . ' in ' . v:throwpoint)
 | 
						|
      endtry
 | 
						|
    endif
 | 
						|
 | 
						|
    call neobundle#autoload#_source(bundle.name)
 | 
						|
 | 
						|
    if !reset_ftplugin
 | 
						|
      let reset_ftplugin = s:is_reset_ftplugin(&filetype, bundle.rtp)
 | 
						|
    endif
 | 
						|
  endfor
 | 
						|
 | 
						|
  let filetype_after = neobundle#util#redir('autocmd FileType')
 | 
						|
 | 
						|
  if reset_ftplugin && &filetype != ''
 | 
						|
    if &verbose
 | 
						|
      call neobundle#util#print_error(
 | 
						|
            \ "Neobundle: resetting ftplugin, after loading bundles:"
 | 
						|
            \ .join(map(copy(bundles), 'v:val.name'), ", "))
 | 
						|
    endif
 | 
						|
    call s:reset_ftplugin()
 | 
						|
  elseif filetype_before !=# filetype_after
 | 
						|
    if &verbose
 | 
						|
      call neobundle#util#print_error(
 | 
						|
            \ "Neobundle: FileType autocommand triggered by:"
 | 
						|
            \ .join(map(copy(bundles), 'v:val.name'), ", "))
 | 
						|
    endif
 | 
						|
    execute 'doautocmd FileType' &filetype
 | 
						|
  endif
 | 
						|
 | 
						|
  if exists('g:loaded_neobundle')
 | 
						|
    call neobundle#call_hook('on_post_source', bundles)
 | 
						|
  endif
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#disable(...) abort "{{{
 | 
						|
  let bundle_names = neobundle#config#search(a:000)
 | 
						|
  " do not print errors, same as dein
 | 
						|
  for bundle in bundle_names
 | 
						|
    call neobundle#config#rtp_rm(bundle)
 | 
						|
    let bundle.refcnt -= 1
 | 
						|
 | 
						|
    if bundle.refcnt <= 0
 | 
						|
      if bundle.sourced
 | 
						|
        call neobundle#util#print_error(
 | 
						|
              \ bundle.name . ' is already sourced.  Cannot be disabled.')
 | 
						|
        continue
 | 
						|
      endif
 | 
						|
 | 
						|
      let bundle.disabled = 1
 | 
						|
    endif
 | 
						|
  endfor
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#is_disabled(name) abort "{{{
 | 
						|
  return get(neobundle#config#get(a:name), 'disabled', 1)
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#is_sourced(name) abort "{{{
 | 
						|
  return get(neobundle#config#get(a:name), 'sourced', 0)
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#is_installed(name) abort "{{{
 | 
						|
  return isdirectory(get(neobundle#config#get(a:name), 'path', ''))
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#rm(bundle) abort "{{{
 | 
						|
  call neobundle#config#rtp_rm(a:bundle)
 | 
						|
  call remove(s:neobundles, a:bundle.name)
 | 
						|
endfunction"}}}
 | 
						|
function! neobundle#config#rmdir(path) abort "{{{
 | 
						|
  for bundle in filter(neobundle#config#get_neobundles(),
 | 
						|
        \ 'v:val.path ==# a:path')
 | 
						|
    call neobundle#config#rm(bundle)
 | 
						|
  endfor
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#get_types(...) abort "{{{
 | 
						|
  let type = get(a:000, 0, '')
 | 
						|
 | 
						|
  if type ==# 'git'
 | 
						|
    if !exists('s:neobundle_type_git')
 | 
						|
      let s:neobundle_type_git = neobundle#types#git#define()
 | 
						|
    endif
 | 
						|
 | 
						|
    return s:neobundle_type_git
 | 
						|
  endif
 | 
						|
 | 
						|
  if !exists('s:neobundle_types')
 | 
						|
    " Load neobundle types.
 | 
						|
    let s:neobundle_types = []
 | 
						|
    for list in map(split(globpath(&runtimepath,
 | 
						|
          \ 'autoload/neobundle/types/*.vim', 1), '\n'),
 | 
						|
          \ "neobundle#util#convert2list(
 | 
						|
          \    neobundle#types#{fnamemodify(v:val, ':t:r')}#define())")
 | 
						|
      let s:neobundle_types += list
 | 
						|
    endfor
 | 
						|
 | 
						|
    let s:neobundle_types = neobundle#util#uniq(
 | 
						|
          \ s:neobundle_types, 'v:val.name')
 | 
						|
  endif
 | 
						|
 | 
						|
  return (type == '') ? s:neobundle_types :
 | 
						|
        \ get(filter(copy(s:neobundle_types), 'v:val.name ==# type'), 0, {})
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#rtp_rm_all_bundles() abort "{{{
 | 
						|
  call filter(values(s:neobundles), 'neobundle#config#rtp_rm(v:val)')
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#rtp_rm(bundle) abort "{{{
 | 
						|
  execute 'set rtp-='.fnameescape(a:bundle.rtp)
 | 
						|
  if isdirectory(a:bundle.rtp.'/after')
 | 
						|
    execute 'set rtp-='.s:get_rtp_after(a:bundle)
 | 
						|
  endif
 | 
						|
 | 
						|
  " Remove from lazy runtimepath
 | 
						|
  call filter(s:lazy_rtp_bundles, "v:val.name !=# a:bundle.name")
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#rtp_add(bundle) abort "{{{
 | 
						|
  if has_key(s:neobundles, a:bundle.name)
 | 
						|
    call neobundle#config#rtp_rm(s:neobundles[a:bundle.name])
 | 
						|
  endif
 | 
						|
 | 
						|
  if s:within_block && !a:bundle.force
 | 
						|
    " Add rtp lazily.
 | 
						|
    call add(s:lazy_rtp_bundles, a:bundle)
 | 
						|
    return
 | 
						|
  endif
 | 
						|
 | 
						|
  let rtp = a:bundle.rtp
 | 
						|
  if isdirectory(rtp)
 | 
						|
    " Join to the tail in runtimepath.
 | 
						|
    let rtps = neobundle#util#split_rtp(&runtimepath)
 | 
						|
    let &runtimepath = neobundle#util#join_rtp(
 | 
						|
          \ insert(rtps, rtp, index(rtps, neobundle#get_rtp_dir())),
 | 
						|
          \ &runtimepath, rtp)
 | 
						|
  endif
 | 
						|
  if isdirectory(rtp.'/after')
 | 
						|
    execute 'set rtp+='.s:get_rtp_after(a:bundle)
 | 
						|
  endif
 | 
						|
  let a:bundle.sourced = 1
 | 
						|
 | 
						|
  call neobundle#call_hook('on_source', a:bundle)
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#search(bundle_names, ...) abort "{{{
 | 
						|
  " For infinite loop.
 | 
						|
  let self = get(a:000, 0, [])
 | 
						|
 | 
						|
  let bundle_names = filter(copy(a:bundle_names), 'index(self, v:val) < 0')
 | 
						|
  if empty(bundle_names)
 | 
						|
    return []
 | 
						|
  endif
 | 
						|
 | 
						|
  let _ = []
 | 
						|
  let bundles = len(bundle_names) != 1 ?
 | 
						|
        \ filter(neobundle#config#get_neobundles(),
 | 
						|
        \ 'index(a:bundle_names, v:val.name) >= 0') :
 | 
						|
        \ has_key(s:neobundles, bundle_names[0]) ?
 | 
						|
        \     [s:neobundles[bundle_names[0]]] : []
 | 
						|
  for bundle in bundles
 | 
						|
    call add(self, bundle.name)
 | 
						|
 | 
						|
    if !empty(bundle.depends)
 | 
						|
      let _ += neobundle#config#search(
 | 
						|
            \ map(copy(bundle.depends), 'v:val.name'), self)
 | 
						|
    endif
 | 
						|
    call add(_, bundle)
 | 
						|
  endfor
 | 
						|
 | 
						|
  if len(_) > 1
 | 
						|
    let _ = neobundle#util#uniq(_)
 | 
						|
  endif
 | 
						|
 | 
						|
  return _
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#search_simple(bundle_names) abort "{{{
 | 
						|
  return filter(neobundle#config#get_neobundles(),
 | 
						|
        \ 'index(a:bundle_names, v:val.name) >= 0')
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#fuzzy_search(bundle_names) abort "{{{
 | 
						|
  let bundles = []
 | 
						|
  for name in a:bundle_names
 | 
						|
    let bundles += filter(neobundle#config#get_neobundles(),
 | 
						|
          \ 'stridx(v:val.name, name) >= 0')
 | 
						|
  endfor
 | 
						|
 | 
						|
  let _ = []
 | 
						|
  for bundle in bundles
 | 
						|
    if !empty(bundle.depends)
 | 
						|
      let _ += neobundle#config#search(
 | 
						|
            \ map(copy(bundle.depends), 'v:val.name'))
 | 
						|
    endif
 | 
						|
    call add(_, bundle)
 | 
						|
  endfor
 | 
						|
 | 
						|
  if len(_) > 1
 | 
						|
    let _ = neobundle#util#uniq(_)
 | 
						|
  endif
 | 
						|
 | 
						|
  return _
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#load_extra_bundles() abort "{{{
 | 
						|
  let path = neobundle#get_neobundle_dir() . '/extra_bundles.vim'
 | 
						|
 | 
						|
  if filereadable(path)
 | 
						|
    execute 'source' fnameescape(path)
 | 
						|
  endif
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#save_direct(arg) abort "{{{
 | 
						|
  if neobundle#util#is_sudo()
 | 
						|
    call neobundle#util#print_error(
 | 
						|
          \ '"sudo vim" is detected. This feature is disabled.')
 | 
						|
    return
 | 
						|
  endif
 | 
						|
 | 
						|
  let path = neobundle#get_neobundle_dir() . '/extra_bundles.vim'
 | 
						|
  let bundles = filereadable(path) ? readfile(path) : []
 | 
						|
  call writefile(add(bundles, 'NeoBundle ' . a:arg), path)
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#set(name, dict) abort "{{{
 | 
						|
  let bundle = neobundle#config#get(a:name)
 | 
						|
  if empty(bundle)
 | 
						|
    call neobundle#util#print_error(
 | 
						|
          \ 'Plugin name "' . a:name . '" is not defined.')
 | 
						|
    return
 | 
						|
  endif
 | 
						|
  if bundle.sourced
 | 
						|
    return
 | 
						|
  endif
 | 
						|
  if !neobundle#config#within_block()
 | 
						|
    call neobundle#util#print_error(
 | 
						|
          \ 'You must call neobundle#config() '
 | 
						|
          \ .'within neobundle#begin()/neobundle#end() block.')
 | 
						|
    return
 | 
						|
  endif
 | 
						|
 | 
						|
  call neobundle#config#add(
 | 
						|
        \ neobundle#init#_bundle(extend(bundle, a:dict)))
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#add(bundle) abort "{{{
 | 
						|
  if empty(a:bundle)
 | 
						|
    return
 | 
						|
  endif
 | 
						|
 | 
						|
  let bundle = a:bundle
 | 
						|
 | 
						|
  let prev_bundle = get(s:neobundles, bundle.name, {})
 | 
						|
  if !empty(prev_bundle) && prev_bundle.lazy != bundle.lazy
 | 
						|
    let bundle.lazy = 0
 | 
						|
  endif
 | 
						|
 | 
						|
  if !empty(bundle.depends)
 | 
						|
    call s:add_depends(bundle)
 | 
						|
  endif
 | 
						|
 | 
						|
  if !empty(prev_bundle)
 | 
						|
    if prev_bundle.sourced
 | 
						|
      return
 | 
						|
    endif
 | 
						|
 | 
						|
    call neobundle#config#rtp_rm(prev_bundle)
 | 
						|
  endif
 | 
						|
  let s:neobundles[bundle.name] = bundle
 | 
						|
 | 
						|
  if bundle.disabled
 | 
						|
    " Ignore load.
 | 
						|
    return
 | 
						|
  endif
 | 
						|
 | 
						|
  if !bundle.lazy && bundle.rtp != ''
 | 
						|
    if !has('vim_starting')
 | 
						|
      " Load automatically.
 | 
						|
      call neobundle#config#source(bundle.name, bundle.force)
 | 
						|
    else
 | 
						|
      call neobundle#config#rtp_add(bundle)
 | 
						|
 | 
						|
      if bundle.force
 | 
						|
        execute 'runtime!' bundle.rtp . '/plugin/**/*.vim'
 | 
						|
      endif
 | 
						|
    endif
 | 
						|
  elseif bundle.lazy && !bundle.sourced
 | 
						|
    if !empty(bundle.on_cmd)
 | 
						|
      call s:add_dummy_commands(bundle)
 | 
						|
    endif
 | 
						|
 | 
						|
    if !empty(bundle.on_map)
 | 
						|
      call s:add_dummy_mappings(bundle)
 | 
						|
    endif
 | 
						|
  endif
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#tsort(bundles) abort "{{{
 | 
						|
  let sorted = []
 | 
						|
  let mark = {}
 | 
						|
  for target in a:bundles
 | 
						|
    call s:tsort_impl(target, a:bundles, mark, sorted)
 | 
						|
  endfor
 | 
						|
 | 
						|
  return sorted
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#get_lazy_rtp_bundles() abort "{{{
 | 
						|
  return s:lazy_rtp_bundles
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! neobundle#config#check_commands(commands) abort "{{{
 | 
						|
  " Environment check.
 | 
						|
  if type(a:commands) == type([])
 | 
						|
        \ || type(a:commands) == type('')
 | 
						|
    let commands = a:commands
 | 
						|
  elseif neobundle#util#is_windows() && has_key(a:commands, 'windows')
 | 
						|
    let commands = a:commands.windows
 | 
						|
  elseif neobundle#util#is_mac() && has_key(a:commands, 'mac')
 | 
						|
    let commands = a:commands.mac
 | 
						|
  elseif neobundle#util#is_cygwin() && has_key(a:commands, 'cygwin')
 | 
						|
    let commands = a:commands.cygwin
 | 
						|
  elseif !neobundle#util#is_windows() && has_key(a:commands, 'unix')
 | 
						|
    let commands = a:commands.unix
 | 
						|
  elseif has_key(a:commands, 'others')
 | 
						|
    let commands = a:commands.others
 | 
						|
  else
 | 
						|
    " Invalid.
 | 
						|
    return 0
 | 
						|
  endif
 | 
						|
 | 
						|
  for command in neobundle#util#convert2list(commands)
 | 
						|
    if !executable(command)
 | 
						|
      return 1
 | 
						|
    endif
 | 
						|
  endfor
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! s:tsort_impl(target, bundles, mark, sorted) abort "{{{
 | 
						|
  if has_key(a:mark, a:target.name)
 | 
						|
    return
 | 
						|
  endif
 | 
						|
 | 
						|
  let a:mark[a:target.name] = 1
 | 
						|
  for depend in get(a:target, 'depends', [])
 | 
						|
    call s:tsort_impl(get(s:neobundles, depend.name, depend),
 | 
						|
          \ a:bundles, a:mark, a:sorted)
 | 
						|
  endfor
 | 
						|
 | 
						|
  call add(a:sorted, a:target)
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! s:on_vim_enter() abort "{{{
 | 
						|
  if !empty(s:lazy_rtp_bundles)
 | 
						|
    call neobundle#util#print_error(
 | 
						|
          \ 'neobundle#begin() was called without calling ' .
 | 
						|
          \ 'neobundle#end() in .vimrc.')
 | 
						|
    " We're past the point of plugins being sourced, so don't bother
 | 
						|
    " trying to recover.
 | 
						|
    return
 | 
						|
  endif
 | 
						|
 | 
						|
  call neobundle#call_hook('on_post_source')
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! s:add_depends(bundle) abort "{{{
 | 
						|
  " Add depends.
 | 
						|
  for depend in a:bundle.depends
 | 
						|
    let depend.lazy = a:bundle.lazy
 | 
						|
 | 
						|
    if !has_key(s:neobundles, depend.name)
 | 
						|
      call neobundle#config#add(depend)
 | 
						|
    else
 | 
						|
      let depend_bundle = s:neobundles[depend.name]
 | 
						|
      " Add reference count
 | 
						|
      let depend_bundle.refcnt += 1
 | 
						|
 | 
						|
      if (a:bundle.sourced && !depend_bundle.sourced) || !a:bundle.lazy
 | 
						|
        " Load automatically.
 | 
						|
        call neobundle#config#source(depend.name, depend.force)
 | 
						|
      endif
 | 
						|
    endif
 | 
						|
  endfor
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! s:add_dummy_commands(bundle) abort "{{{
 | 
						|
  let a:bundle.dummy_commands = []
 | 
						|
  for command in map(copy(a:bundle.on_cmd), "
 | 
						|
        \ type(v:val) == type('') ?
 | 
						|
          \ { 'name' : v:val } : v:val
 | 
						|
          \")
 | 
						|
 | 
						|
    for name in neobundle#util#convert2list(command.name)
 | 
						|
      " Define dummy commands.
 | 
						|
      silent! execute 'command '
 | 
						|
            \ . '-complete=customlist,neobundle#autoload#_command_dummy_complete'
 | 
						|
            \ . ' -bang -bar -range -nargs=*' name printf(
 | 
						|
            \ "call neobundle#autoload#_command(%s, %s, <q-args>,
 | 
						|
            \  expand('<bang>'), expand('<line1>'), expand('<line2>'))",
 | 
						|
            \   string(name), string(a:bundle.name))
 | 
						|
 | 
						|
      call add(a:bundle.dummy_commands, name)
 | 
						|
    endfor
 | 
						|
  endfor
 | 
						|
endfunction"}}}
 | 
						|
function! s:add_dummy_mappings(bundle) abort "{{{
 | 
						|
  let a:bundle.dummy_mappings = []
 | 
						|
  for [modes, mappings] in map(copy(a:bundle.on_map), "
 | 
						|
        \   type(v:val) == type([]) ?
 | 
						|
        \     [v:val[0], v:val[1:]] : ['nxo', [v:val]]
 | 
						|
        \ ")
 | 
						|
    if mappings ==# ['<Plug>']
 | 
						|
      " Use plugin name.
 | 
						|
      let mappings = ['<Plug>(' . a:bundle.normalized_name]
 | 
						|
      if stridx(a:bundle.normalized_name, '-') >= 0
 | 
						|
        " The plugin mappings may use "_" instead of "-".
 | 
						|
        call add(mappings, '<Plug>(' .
 | 
						|
              \ substitute(a:bundle.normalized_name, '-', '_', 'g'))
 | 
						|
      endif
 | 
						|
    endif
 | 
						|
 | 
						|
    for mapping in mappings
 | 
						|
      " Define dummy mappings.
 | 
						|
      for mode in filter(split(modes, '\zs'),
 | 
						|
            \ "index(['n', 'v', 'x', 'o', 'i', 'c'], v:val) >= 0")
 | 
						|
        let mapping_str = substitute(mapping, '<', '<lt>', 'g')
 | 
						|
        silent! execute mode.'noremap <unique><silent>' mapping printf(
 | 
						|
              \ (mode ==# 'c' ? "\<C-r>=" :
 | 
						|
              \  (mode ==# 'i' ? "\<C-o>:" : ":\<C-u>")."call ").
 | 
						|
              \   "neobundle#autoload#_mapping(%s, %s, %s)<CR>",
 | 
						|
              \   string(mapping_str), string(a:bundle.name), string(mode))
 | 
						|
 | 
						|
        call add(a:bundle.dummy_mappings, [mode, mapping])
 | 
						|
      endfor
 | 
						|
    endfor
 | 
						|
  endfor
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! s:on_source(bundle) abort "{{{
 | 
						|
  if a:bundle.verbose && a:bundle.lazy
 | 
						|
    redraw
 | 
						|
    echo 'source:' a:bundle.name
 | 
						|
  endif
 | 
						|
 | 
						|
  " Reload script files.
 | 
						|
  for directory in filter(['plugin', 'after/plugin'],
 | 
						|
        \ "isdirectory(a:bundle.rtp.'/'.v:val)")
 | 
						|
    for file in split(glob(a:bundle.rtp.'/'.directory.'/**/*.vim'), '\n')
 | 
						|
      " Note: "silent!" is required to ignore E122, E174 and E227.
 | 
						|
      "       try/catching them aborts sourcing of the file.
 | 
						|
      "       "unsilent" then displays any messages while sourcing.
 | 
						|
      execute 'silent! unsilent source' fnameescape(file)
 | 
						|
    endfor
 | 
						|
  endfor
 | 
						|
 | 
						|
  if !has('vim_starting')
 | 
						|
    if exists('#'.a:bundle.augroup.'#VimEnter')
 | 
						|
      execute 'doautocmd' a:bundle.augroup 'VimEnter'
 | 
						|
    endif
 | 
						|
 | 
						|
    if has('gui_running') && &term ==# 'builtin_gui'
 | 
						|
          \ && exists('#'.a:bundle.augroup.'#GUIEnter')
 | 
						|
      execute 'doautocmd' a:bundle.augroup 'GUIEnter'
 | 
						|
    endif
 | 
						|
  endif
 | 
						|
 | 
						|
  if a:bundle.verbose && a:bundle.lazy
 | 
						|
    redraw
 | 
						|
    echo 'sourced:' a:bundle.name
 | 
						|
  endif
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! s:clear_dummy(bundle) abort "{{{
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! s:is_reset_ftplugin(filetype, rtp) abort "{{{
 | 
						|
  for filetype in split(a:filetype, '\.')
 | 
						|
    for directory in ['ftplugin', 'indent',
 | 
						|
          \ 'after/ftplugin', 'after/indent']
 | 
						|
      let base = a:rtp . '/' . directory
 | 
						|
      if filereadable(base.'/'.filetype.'.vim') ||
 | 
						|
            \ (directory =~# 'ftplugin$' &&
 | 
						|
            \   isdirectory(base . '/' . filetype) ||
 | 
						|
            \   glob(base.'/'.filetype.'_*.vim') != '')
 | 
						|
        return 1
 | 
						|
      endif
 | 
						|
    endfor
 | 
						|
  endfor
 | 
						|
 | 
						|
  return 0
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! s:reset_ftplugin() abort "{{{
 | 
						|
  let filetype_out = s:filetype_off()
 | 
						|
 | 
						|
  if filetype_out =~# 'detection:ON'
 | 
						|
        \ && filetype_out =~# 'plugin:ON'
 | 
						|
        \ && filetype_out =~# 'indent:ON'
 | 
						|
    silent! filetype plugin indent on
 | 
						|
  else
 | 
						|
    if filetype_out =~# 'detection:ON'
 | 
						|
      silent! filetype on
 | 
						|
    endif
 | 
						|
 | 
						|
    if filetype_out =~# 'plugin:ON'
 | 
						|
      silent! filetype plugin on
 | 
						|
    endif
 | 
						|
 | 
						|
    if filetype_out =~# 'indent:ON'
 | 
						|
      silent! filetype indent on
 | 
						|
    endif
 | 
						|
  endif
 | 
						|
 | 
						|
  if filetype_out =~# 'detection:ON'
 | 
						|
    filetype detect
 | 
						|
  endif
 | 
						|
 | 
						|
  " Reload filetype plugins.
 | 
						|
  let &l:filetype = &l:filetype
 | 
						|
 | 
						|
  " Recall FileType autocmd
 | 
						|
  execute 'doautocmd FileType' &filetype
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! s:filetype_off() abort "{{{
 | 
						|
  let filetype_out = neobundle#util#redir('filetype')
 | 
						|
 | 
						|
  if filetype_out =~# 'plugin:ON'
 | 
						|
        \ || filetype_out =~# 'indent:ON'
 | 
						|
    filetype plugin indent off
 | 
						|
  endif
 | 
						|
 | 
						|
  if filetype_out =~# 'detection:ON'
 | 
						|
    filetype off
 | 
						|
  endif
 | 
						|
 | 
						|
  return filetype_out
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
function! s:get_rtp_after(bundle) abort "{{{
 | 
						|
  return substitute(
 | 
						|
          \ fnameescape(a:bundle.rtp . '/after'), '//', '/', 'g')
 | 
						|
endfunction"}}}
 | 
						|
 | 
						|
let &cpo = s:save_cpo
 | 
						|
unlet s:save_cpo
 |