Complete function documentation
- Complete the code documentation effort started by @lucc - Remove some judgemental comments ✨ - Remove comments pertaining to things that should be opened as issues - Boxed ❗
This commit is contained in:
parent
b3b5f529b3
commit
87e5a19520
@ -1,8 +1,10 @@
|
|||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Add a plugin to the runtimepath.
|
" Add a plugin to the runtimepath.
|
||||||
"
|
"
|
||||||
" arg -- a string specifying the plugin
|
" arg -- a string specifying the plugin
|
||||||
" ... -- a dictionary of options for the plugin
|
" ... -- a dictionary of options for the plugin
|
||||||
" return -- the return value from vundle#config#init_bundle()
|
" return -- the return value from vundle#config#init_bundle()
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! vundle#config#bundle(arg, ...)
|
func! vundle#config#bundle(arg, ...)
|
||||||
let bundle = vundle#config#init_bundle(a:arg, a:000)
|
let bundle = vundle#config#init_bundle(a:arg, a:000)
|
||||||
if exists('g:vundle_lazy_load') && g:vundle_lazy_load
|
if exists('g:vundle_lazy_load') && g:vundle_lazy_load
|
||||||
@ -16,24 +18,36 @@ func! vundle#config#bundle(arg, ...)
|
|||||||
return bundle
|
return bundle
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
|
" When lazy bundle load is used (begin/end functions), add all configured
|
||||||
|
" bundles to runtimepath and reorder appropriately.
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! vundle#config#activate_bundles()
|
func! vundle#config#activate_bundles()
|
||||||
call s:rtp_add_a()
|
call s:rtp_add_a()
|
||||||
call s:rtp_add_defaults()
|
call s:rtp_add_defaults()
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Initialize Vundle.
|
" Initialize Vundle.
|
||||||
"
|
"
|
||||||
" return -- 0 (unconditionally)
|
" Start a new bundles list and make sure the runtimepath does not contain
|
||||||
|
" directories from a previous call. In theory, this should only be called
|
||||||
|
" once.
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! vundle#config#init()
|
func! vundle#config#init()
|
||||||
if !exists('g:bundles') | let g:bundles = [] | endif
|
if !exists('g:bundles') | let g:bundles = [] | endif
|
||||||
call s:rtp_rm_a()
|
call s:rtp_rm_a()
|
||||||
let g:bundles = []
|
let g:bundles = []
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Add a list of bundles to the runtimepath and source them.
|
" Add a list of bundles to the runtimepath and source them.
|
||||||
"
|
"
|
||||||
" bundles -- a list of bundle objects
|
" bundles -- a list of bundle objects
|
||||||
" return -- 0 (unconditionally)
|
" ---------------------------------------------------------------------------
|
||||||
func! vundle#config#require(bundles) abort
|
func! vundle#config#require(bundles) abort
|
||||||
for b in a:bundles
|
for b in a:bundles
|
||||||
call s:rtp_add(b.rtpath)
|
call s:rtp_add(b.rtpath)
|
||||||
@ -46,11 +60,14 @@ func! vundle#config#require(bundles) abort
|
|||||||
call s:rtp_add_defaults()
|
call s:rtp_add_defaults()
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Create a bundle object from a bundle specification.
|
" Create a bundle object from a bundle specification.
|
||||||
"
|
"
|
||||||
" name -- the bundle specification as a string
|
" name -- the bundle specification as a string
|
||||||
" opts -- the options dictionary from then bundle definition
|
" opts -- the options dictionary from then bundle definition
|
||||||
" return -- an initialized bundle object
|
" return -- an initialized bundle object
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! vundle#config#init_bundle(name, opts)
|
func! vundle#config#init_bundle(name, opts)
|
||||||
if a:name != substitute(a:name, '^\s*\(.\{-}\)\s*$', '\1', '')
|
if a:name != substitute(a:name, '^\s*\(.\{-}\)\s*$', '\1', '')
|
||||||
echo "Spurious leading and/or trailing whitespace found in plugin spec '" . a:name . "'"
|
echo "Spurious leading and/or trailing whitespace found in plugin spec '" . a:name . "'"
|
||||||
@ -61,12 +78,15 @@ func! vundle#config#init_bundle(name, opts)
|
|||||||
return b
|
return b
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Parse the options which can be supplied with the bundle specification.
|
" Parse the options which can be supplied with the bundle specification.
|
||||||
" Corresponding documentation: vundle-plugins-configure
|
" Corresponding documentation: vundle-plugins-configure
|
||||||
"
|
"
|
||||||
" opts -- a dictionary with the user supplied options for the bundle
|
" opts -- a dictionary with the user supplied options for the bundle
|
||||||
" return -- a dictionary with the user supplied options for the bundle, this
|
" return -- a dictionary with the user supplied options for the bundle, this
|
||||||
" will be merged with a s:bundle object into one dictionary.
|
" will be merged with a s:bundle object into one dictionary.
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! s:parse_options(opts)
|
func! s:parse_options(opts)
|
||||||
" TODO: improve this
|
" TODO: improve this
|
||||||
if len(a:opts) != 1 | return {} | endif
|
if len(a:opts) != 1 | return {} | endif
|
||||||
@ -78,6 +98,8 @@ func! s:parse_options(opts)
|
|||||||
endif
|
endif
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Parse the plugin specification. Corresponding documentation:
|
" Parse the plugin specification. Corresponding documentation:
|
||||||
" vundle-plugins-uris
|
" vundle-plugins-uris
|
||||||
"
|
"
|
||||||
@ -85,6 +107,7 @@ endf
|
|||||||
" return -- a dictionary with the folder name (key 'name') and the uri (key
|
" return -- a dictionary with the folder name (key 'name') and the uri (key
|
||||||
" 'uri') for cloning the plugin and the original argument (key
|
" 'uri') for cloning the plugin and the original argument (key
|
||||||
" 'name_spec')
|
" 'name_spec')
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! s:parse_name(arg)
|
func! s:parse_name(arg)
|
||||||
let arg = a:arg
|
let arg = a:arg
|
||||||
let git_proto = exists('g:vundle_default_git_proto') ? g:vundle_default_git_proto : 'https'
|
let git_proto = exists('g:vundle_default_git_proto') ? g:vundle_default_git_proto : 'https'
|
||||||
@ -108,6 +131,12 @@ func! s:parse_name(arg)
|
|||||||
return {'name': name, 'uri': uri, 'name_spec': arg }
|
return {'name': name, 'uri': uri, 'name_spec': arg }
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
|
" Modify the runtimepath, after all bundles have been added, so that the
|
||||||
|
" directories that were in the default runtimepath appear first in the list
|
||||||
|
" (with their 'after' directories last).
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! s:rtp_add_defaults()
|
func! s:rtp_add_defaults()
|
||||||
let current = &rtp
|
let current = &rtp
|
||||||
set rtp&vim
|
set rtp&vim
|
||||||
@ -124,10 +153,10 @@ func! s:rtp_add_defaults()
|
|||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Remove all paths for the plugins which are managed by Vundle from the
|
" Remove all paths for the plugins which are managed by Vundle from the
|
||||||
" runtimepath.
|
" runtimepath.
|
||||||
"
|
" ---------------------------------------------------------------------------
|
||||||
" return -- 0 (unconditionally)
|
|
||||||
func! s:rtp_rm_a()
|
func! s:rtp_rm_a()
|
||||||
let paths = map(copy(g:bundles), 'v:val.rtpath')
|
let paths = map(copy(g:bundles), 'v:val.rtpath')
|
||||||
let prepends = join(paths, ',')
|
let prepends = join(paths, ',')
|
||||||
@ -136,10 +165,11 @@ func! s:rtp_rm_a()
|
|||||||
exec 'set rtp-='.fnameescape(appends)
|
exec 'set rtp-='.fnameescape(appends)
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Add all paths for the plugins which are managed by Vundle to the
|
" Add all paths for the plugins which are managed by Vundle to the
|
||||||
" runtimepath.
|
" runtimepath.
|
||||||
"
|
" ---------------------------------------------------------------------------
|
||||||
" return -- 0 (unconditionally)
|
|
||||||
func! s:rtp_add_a()
|
func! s:rtp_add_a()
|
||||||
let paths = map(copy(g:bundles), 'v:val.rtpath')
|
let paths = map(copy(g:bundles), 'v:val.rtpath')
|
||||||
let prepends = join(paths, ',')
|
let prepends = join(paths, ',')
|
||||||
@ -148,58 +178,77 @@ func! s:rtp_add_a()
|
|||||||
exec 'set rtp+='.fnameescape(appends)
|
exec 'set rtp+='.fnameescape(appends)
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Remove a directory and the corresponding 'after' directory from runtimepath.
|
" Remove a directory and the corresponding 'after' directory from runtimepath.
|
||||||
"
|
"
|
||||||
" dir -- the directory name to be removed as a string. The corresponding
|
" dir -- the directory name to be removed as a string. The corresponding
|
||||||
" 'after' directory will also be removed.
|
" 'after' directory will also be removed.
|
||||||
" return -- 0 (unconditionally)
|
" ---------------------------------------------------------------------------
|
||||||
func! s:rtp_rm(dir) abort
|
func! s:rtp_rm(dir) abort
|
||||||
exec 'set rtp-='.fnameescape(expand(a:dir, 1))
|
exec 'set rtp-='.fnameescape(expand(a:dir, 1))
|
||||||
exec 'set rtp-='.fnameescape(expand(a:dir.'/after', 1))
|
exec 'set rtp-='.fnameescape(expand(a:dir.'/after', 1))
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Add a directory and the corresponding 'after' directory to runtimepath.
|
" Add a directory and the corresponding 'after' directory to runtimepath.
|
||||||
"
|
"
|
||||||
" dir -- the directory name to be added as a string. The corresponding
|
" dir -- the directory name to be added as a string. The corresponding
|
||||||
" 'after' directory will also be added.
|
" 'after' directory will also be added.
|
||||||
" return -- 0 (unconditionally)
|
" ---------------------------------------------------------------------------
|
||||||
func! s:rtp_add(dir) abort
|
func! s:rtp_add(dir) abort
|
||||||
exec 'set rtp^='.fnameescape(expand(a:dir, 1))
|
exec 'set rtp^='.fnameescape(expand(a:dir, 1))
|
||||||
exec 'set rtp+='.fnameescape(expand(a:dir.'/after', 1))
|
exec 'set rtp+='.fnameescape(expand(a:dir.'/after', 1))
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Expand and simplify a path.
|
" Expand and simplify a path.
|
||||||
"
|
"
|
||||||
" path -- the path to expand as a string
|
" path -- the path to expand as a string
|
||||||
" return -- the expanded and simplified path
|
" return -- the expanded and simplified path
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! s:expand_path(path) abort
|
func! s:expand_path(path) abort
|
||||||
return simplify(expand(a:path, 1))
|
return simplify(expand(a:path, 1))
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Find the actual path inside a bundle directory to be added to the
|
" Find the actual path inside a bundle directory to be added to the
|
||||||
" runtimepath. It might be provided by the user with the 'rtp' option.
|
" runtimepath. It might be provided by the user with the 'rtp' option.
|
||||||
" Corresponding documentation: vundle-plugins-configure
|
" Corresponding documentation: vundle-plugins-configure
|
||||||
"
|
"
|
||||||
" opts -- a bundle dict
|
" opts -- a bundle dict
|
||||||
" return -- expanded path to the corresponding plugin directory
|
" return -- expanded path to the corresponding plugin directory
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! s:rtpath(opts)
|
func! s:rtpath(opts)
|
||||||
return has_key(a:opts, 'rtp') ? s:expand_path(a:opts.path().'/'.a:opts.rtp) : a:opts.path()
|
return has_key(a:opts, 'rtp') ? s:expand_path(a:opts.path().'/'.a:opts.rtp) : a:opts.path()
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" a bundle 'object'
|
" a bundle 'object'
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
let s:bundle = {}
|
let s:bundle = {}
|
||||||
|
|
||||||
" FIXME: This function is only called once and in most cases the return value
|
|
||||||
" is stored in the bundle object as obj.rtpath unmodfied. Is this necessary?
|
" ---------------------------------------------------------------------------
|
||||||
"
|
|
||||||
" Return the absolute path to the directory inside the bundle directory
|
" Return the absolute path to the directory inside the bundle directory
|
||||||
" (prefix) where thr bundle will be cloned.
|
" (prefix) where thr bundle will be cloned.
|
||||||
"
|
"
|
||||||
" return -- the target location to clone this bundle to
|
" return -- the target location to clone this bundle to
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! s:bundle.path()
|
func! s:bundle.path()
|
||||||
return s:expand_path(g:bundle_dir.'/'.self.name)
|
return s:expand_path(g:bundle_dir.'/'.self.name)
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
|
" Determine if the bundle has the pinned attribute set in the config
|
||||||
|
"
|
||||||
|
" return -- 1 if the bundle is pinned, 0 otherwise
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! s:bundle.is_pinned()
|
func! s:bundle.is_pinned()
|
||||||
return get(self, 'pinned')
|
return get(self, 'pinned')
|
||||||
endf
|
endf
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Try to clone all new bundles given (or all bundles in g:bundles by default)
|
" Try to clone all new bundles given (or all bundles in g:bundles by default)
|
||||||
" to g:bundle_dir. If a:bang is 1 it will also update all plugins (git pull).
|
" to g:bundle_dir. If a:bang is 1 it will also update all plugins (git pull).
|
||||||
"
|
"
|
||||||
" bang -- 1 or 0
|
" bang -- 1 or 0
|
||||||
" ... -- any number of bundle specifications (seperate arguments)
|
" ... -- any number of bundle specifications (seperate arguments)
|
||||||
" return -- 0 (unconditionally)
|
" ---------------------------------------------------------------------------
|
||||||
func! vundle#installer#new(bang, ...) abort
|
func! vundle#installer#new(bang, ...) abort
|
||||||
let bundles = (a:1 == '') ?
|
let bundles = (a:1 == '') ?
|
||||||
\ g:bundles :
|
\ g:bundles :
|
||||||
@ -12,22 +13,23 @@ func! vundle#installer#new(bang, ...) abort
|
|||||||
let names = vundle#scripts#bundle_names(map(copy(bundles), 'v:val.name_spec'))
|
let names = vundle#scripts#bundle_names(map(copy(bundles), 'v:val.name_spec'))
|
||||||
call vundle#scripts#view('Installer',['" Installing plugins to '.expand(g:bundle_dir, 1)], names + ['Helptags'])
|
call vundle#scripts#view('Installer',['" Installing plugins to '.expand(g:bundle_dir, 1)], names + ['Helptags'])
|
||||||
|
|
||||||
" FIXME this tries to call 'add' as a normal mode command. This is a buffer
|
" This calls 'add' as a normal mode command. This is a buffer local mapping
|
||||||
" local mapping defined in vundle#scripts#view(). The mapping will call a
|
" defined in vundle#scripts#view(). The mapping will call a buffer local
|
||||||
" buffer local command InstallPlugin which in turn will call
|
" command InstallPlugin which in turn will call vundle#installer#run() with
|
||||||
" vundle#installer#run() with vundle#installer#install(). This is very
|
" vundle#installer#install().
|
||||||
" confusing and unclear.
|
|
||||||
call s:process(a:bang, (a:bang ? 'add!' : 'add'))
|
call s:process(a:bang, (a:bang ? 'add!' : 'add'))
|
||||||
|
|
||||||
call vundle#config#require(bundles)
|
call vundle#config#require(bundles)
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Iterate over all lines in a Vundle window and execute the given command for
|
" Iterate over all lines in a Vundle window and execute the given command for
|
||||||
" every line. Used by the installation and cleaning functions.
|
" every line. Used by the installation and cleaning functions.
|
||||||
"
|
"
|
||||||
" bang -- not used (FIXME)
|
" bang -- not used (FIXME)
|
||||||
" cmd -- the (normal mode) command to execute for every line as a string
|
" cmd -- the (normal mode) command to execute for every line as a string
|
||||||
" return -- 0 (unconditionally)
|
" ---------------------------------------------------------------------------
|
||||||
func! s:process(bang, cmd)
|
func! s:process(bang, cmd)
|
||||||
let msg = ''
|
let msg = ''
|
||||||
|
|
||||||
@ -59,6 +61,8 @@ func! s:process(bang, cmd)
|
|||||||
echo 'Done! '.msg
|
echo 'Done! '.msg
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Call another function in the different Vundle windows.
|
" Call another function in the different Vundle windows.
|
||||||
"
|
"
|
||||||
" func_name -- the function to call
|
" func_name -- the function to call
|
||||||
@ -66,6 +70,7 @@ endf
|
|||||||
" ... -- the argument to be used when calling func_name (only the first
|
" ... -- the argument to be used when calling func_name (only the first
|
||||||
" optional argument will be used)
|
" optional argument will be used)
|
||||||
" return -- the status returned by the call to func_name
|
" return -- the status returned by the call to func_name
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! vundle#installer#run(func_name, name, ...) abort
|
func! vundle#installer#run(func_name, name, ...) abort
|
||||||
let n = a:name
|
let n = a:name
|
||||||
|
|
||||||
@ -106,11 +111,13 @@ func! vundle#installer#run(func_name, name, ...) abort
|
|||||||
return status
|
return status
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Put a sign on the current line, indicating the status of the installation
|
" Put a sign on the current line, indicating the status of the installation
|
||||||
" step.
|
" step.
|
||||||
"
|
"
|
||||||
" status -- string describing the status
|
" status -- string describing the status
|
||||||
" return -- 0 (unconditionally)
|
" ---------------------------------------------------------------------------
|
||||||
func! s:sign(status)
|
func! s:sign(status)
|
||||||
if (!has('signs'))
|
if (!has('signs'))
|
||||||
return
|
return
|
||||||
@ -119,11 +126,14 @@ func! s:sign(status)
|
|||||||
exe ":sign place ".line('.')." line=".line('.')." name=Vu_". a:status ." buffer=" . bufnr("%")
|
exe ":sign place ".line('.')." line=".line('.')." name=Vu_". a:status ." buffer=" . bufnr("%")
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Install a plugin, then add it to the runtimepath and source it.
|
" Install a plugin, then add it to the runtimepath and source it.
|
||||||
"
|
"
|
||||||
" bang -- 1 or 0, passed directly to vundle#installer#install()
|
" bang -- 1 or 0, passed directly to vundle#installer#install()
|
||||||
" name -- the name of a bundle (string)
|
" name -- the name of a bundle (string)
|
||||||
" return -- the return value from vundle#installer#install()
|
" return -- the return value from vundle#installer#install()
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! vundle#installer#install_and_require(bang, name) abort
|
func! vundle#installer#install_and_require(bang, name) abort
|
||||||
let result = vundle#installer#install(a:bang, a:name)
|
let result = vundle#installer#install(a:bang, a:name)
|
||||||
let b = vundle#config#bundle(a:name, {})
|
let b = vundle#config#bundle(a:name, {})
|
||||||
@ -132,11 +142,14 @@ func! vundle#installer#install_and_require(bang, name) abort
|
|||||||
return result
|
return result
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Install or update a bundle given by its name.
|
" Install or update a bundle given by its name.
|
||||||
"
|
"
|
||||||
" bang -- 1 or 0, passed directly to s:sync()
|
" bang -- 1 or 0, passed directly to s:sync()
|
||||||
" name -- the name of a bundle (string)
|
" name -- the name of a bundle (string)
|
||||||
" return -- the return value from s:sync()
|
" return -- the return value from s:sync()
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! vundle#installer#install(bang, name) abort
|
func! vundle#installer#install(bang, name) abort
|
||||||
if !isdirectory(g:bundle_dir) | call mkdir(g:bundle_dir, 'p') | endif
|
if !isdirectory(g:bundle_dir) | call mkdir(g:bundle_dir, 'p') | endif
|
||||||
|
|
||||||
@ -152,9 +165,12 @@ func! vundle#installer#install(bang, name) abort
|
|||||||
return s:sync(a:bang, b)
|
return s:sync(a:bang, b)
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Call :helptags for all bundles in g:bundles.
|
" Call :helptags for all bundles in g:bundles.
|
||||||
"
|
"
|
||||||
" return -- 'error' if an error occurred, else return 'helptags'
|
" return -- 'error' if an error occurred, else return 'helptags'
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! vundle#installer#docs() abort
|
func! vundle#installer#docs() abort
|
||||||
let error_count = vundle#installer#helptags(g:bundles)
|
let error_count = vundle#installer#helptags(g:bundles)
|
||||||
if error_count > 0
|
if error_count > 0
|
||||||
@ -163,11 +179,14 @@ func! vundle#installer#docs() abort
|
|||||||
return 'helptags'
|
return 'helptags'
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Call :helptags for a list of bundles.
|
" Call :helptags for a list of bundles.
|
||||||
"
|
"
|
||||||
" bundles -- a list of bundle dictionaries for which :helptags should be
|
" bundles -- a list of bundle dictionaries for which :helptags should be
|
||||||
" called.
|
" called.
|
||||||
" return -- the number of directories where :helptags failed
|
" return -- the number of directories where :helptags failed
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! vundle#installer#helptags(bundles) abort
|
func! vundle#installer#helptags(bundles) abort
|
||||||
let bundle_dirs = map(copy(a:bundles),'v:val.rtpath')
|
let bundle_dirs = map(copy(a:bundles),'v:val.rtpath')
|
||||||
let help_dirs = filter(bundle_dirs, 's:has_doc(v:val)')
|
let help_dirs = filter(bundle_dirs, 's:has_doc(v:val)')
|
||||||
@ -183,11 +202,13 @@ func! vundle#installer#helptags(bundles) abort
|
|||||||
return len(errors)
|
return len(errors)
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" List all installed plugins.
|
" List all installed plugins.
|
||||||
" Corresponding documentation: vundle-plugins-list
|
" Corresponding documentation: vundle-plugins-list
|
||||||
"
|
"
|
||||||
" bang -- not used
|
" bang -- not used
|
||||||
" return -- 0 (unconditionally)
|
" ---------------------------------------------------------------------------
|
||||||
func! vundle#installer#list(bang) abort
|
func! vundle#installer#list(bang) abort
|
||||||
let bundles = vundle#scripts#bundle_names(map(copy(g:bundles), 'v:val.name_spec'))
|
let bundles = vundle#scripts#bundle_names(map(copy(g:bundles), 'v:val.name_spec'))
|
||||||
call vundle#scripts#view('list', ['" My Plugins'], bundles)
|
call vundle#scripts#view('list', ['" My Plugins'], bundles)
|
||||||
@ -195,12 +216,14 @@ func! vundle#installer#list(bang) abort
|
|||||||
echo len(g:bundles).' plugins configured'
|
echo len(g:bundles).' plugins configured'
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" List and remove all directories in the bundle directory which are not
|
" List and remove all directories in the bundle directory which are not
|
||||||
" activated (added to the bundle list).
|
" activated (added to the bundle list).
|
||||||
"
|
"
|
||||||
" bang -- 0 if the user should be asked to confirm every deletion, 1 if they
|
" bang -- 0 if the user should be asked to confirm every deletion, 1 if they
|
||||||
" should be removed unconditionally
|
" should be removed unconditionally
|
||||||
" return -- 0 (unconditionally)
|
" ---------------------------------------------------------------------------
|
||||||
func! vundle#installer#clean(bang) abort
|
func! vundle#installer#clean(bang) abort
|
||||||
let bundle_dirs = map(copy(g:bundles), 'v:val.path()')
|
let bundle_dirs = map(copy(g:bundles), 'v:val.path()')
|
||||||
let all_dirs = (v:version > 702 || (v:version == 702 && has("patch51")))
|
let all_dirs = (v:version > 702 || (v:version == 702 && has("patch51")))
|
||||||
@ -231,12 +254,15 @@ func! vundle#installer#clean(bang) abort
|
|||||||
endif
|
endif
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Delete to directory for a plugin.
|
" Delete to directory for a plugin.
|
||||||
"
|
"
|
||||||
" bang -- not used
|
" bang -- not used
|
||||||
" dir_name -- the bundle directory to be deleted (as a string)
|
" dir_name -- the bundle directory to be deleted (as a string)
|
||||||
" return -- 'error' if an error occurred, 'deleted' if the plugin folder was
|
" return -- 'error' if an error occurred, 'deleted' if the plugin folder was
|
||||||
" successfully deleted
|
" successfully deleted
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! vundle#installer#delete(bang, dir_name) abort
|
func! vundle#installer#delete(bang, dir_name) abort
|
||||||
|
|
||||||
let cmd = ((has('win32') || has('win64')) && empty(matchstr(&shell, 'sh'))) ?
|
let cmd = ((has('win32') || has('win64')) && empty(matchstr(&shell, 'sh'))) ?
|
||||||
@ -260,10 +286,13 @@ func! vundle#installer#delete(bang, dir_name) abort
|
|||||||
endif
|
endif
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Check if a bundled plugin has any documentation.
|
" Check if a bundled plugin has any documentation.
|
||||||
"
|
"
|
||||||
" rtp -- a path (string) where the plugin is installed
|
" rtp -- a path (string) where the plugin is installed
|
||||||
" return -- 1 if some documentation was found, 0 otherwise
|
" return -- 1 if some documentation was found, 0 otherwise
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! s:has_doc(rtp) abort
|
func! s:has_doc(rtp) abort
|
||||||
return isdirectory(a:rtp.'/doc')
|
return isdirectory(a:rtp.'/doc')
|
||||||
\ && (!filereadable(a:rtp.'/doc/tags') || filewritable(a:rtp.'/doc/tags'))
|
\ && (!filereadable(a:rtp.'/doc/tags') || filewritable(a:rtp.'/doc/tags'))
|
||||||
@ -272,10 +301,13 @@ func! s:has_doc(rtp) abort
|
|||||||
\ : !(empty(glob(a:rtp.'/doc/*.txt')) && empty(glob(a:rtp.'/doc/*.??x')))
|
\ : !(empty(glob(a:rtp.'/doc/*.txt')) && empty(glob(a:rtp.'/doc/*.??x')))
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Update the helptags for a plugin.
|
" Update the helptags for a plugin.
|
||||||
"
|
"
|
||||||
" rtp -- the path to the plugin's root directory (string)
|
" rtp -- the path to the plugin's root directory (string)
|
||||||
" return -- 1 if :helptags succeeded, 0 otherwise
|
" return -- 1 if :helptags succeeded, 0 otherwise
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! s:helptags(rtp) abort
|
func! s:helptags(rtp) abort
|
||||||
" it is important to keep trailing slash here
|
" it is important to keep trailing slash here
|
||||||
let doc_path = resolve(a:rtp . '/doc/')
|
let doc_path = resolve(a:rtp . '/doc/')
|
||||||
@ -289,6 +321,8 @@ func! s:helptags(rtp) abort
|
|||||||
return 1
|
return 1
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Install or update a given bundle object with git.
|
" Install or update a given bundle object with git.
|
||||||
"
|
"
|
||||||
" bang -- 0 if only new plugins should be installed, 1 if existing plugins
|
" bang -- 0 if only new plugins should be installed, 1 if existing plugins
|
||||||
@ -298,6 +332,7 @@ endf
|
|||||||
" 'new' when the plugin was newly installed, 'updated' if some
|
" 'new' when the plugin was newly installed, 'updated' if some
|
||||||
" changes where pulled via git, 'error' if an error occurred in the
|
" changes where pulled via git, 'error' if an error occurred in the
|
||||||
" shell command
|
" shell command
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! s:sync(bang, bundle) abort
|
func! s:sync(bang, bundle) abort
|
||||||
" Do not sync if this bundle is pinned
|
" Do not sync if this bundle is pinned
|
||||||
if a:bundle.is_pinned()
|
if a:bundle.is_pinned()
|
||||||
@ -343,11 +378,14 @@ func! s:sync(bang, bundle) abort
|
|||||||
return 'updated'
|
return 'updated'
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Escape special characters in a string to be able to use it as a shell
|
" Escape special characters in a string to be able to use it as a shell
|
||||||
" command with system().
|
" command with system().
|
||||||
"
|
"
|
||||||
" cmd -- the string holding the shell command
|
" cmd -- the string holding the shell command
|
||||||
" return -- a string with the relevant characters escaped
|
" return -- a string with the relevant characters escaped
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! vundle#installer#shellesc(cmd) abort
|
func! vundle#installer#shellesc(cmd) abort
|
||||||
if ((has('win32') || has('win64')) && empty(matchstr(&shell, 'sh')))
|
if ((has('win32') || has('win64')) && empty(matchstr(&shell, 'sh')))
|
||||||
return '"' . substitute(a:cmd, '"', '\\"', 'g') . '"'
|
return '"' . substitute(a:cmd, '"', '\\"', 'g') . '"'
|
||||||
@ -355,10 +393,13 @@ func! vundle#installer#shellesc(cmd) abort
|
|||||||
return shellescape(a:cmd)
|
return shellescape(a:cmd)
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Fix a cd shell command to be used on Windows.
|
" Fix a cd shell command to be used on Windows.
|
||||||
"
|
"
|
||||||
" cmd -- the command to be fixed (string)
|
" cmd -- the command to be fixed (string)
|
||||||
" return -- the fixed command (string)
|
" return -- the fixed command (string)
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! g:shellesc_cd(cmd) abort
|
func! g:shellesc_cd(cmd) abort
|
||||||
if ((has('win32') || has('win64')) && empty(matchstr(&shell, 'sh')))
|
if ((has('win32') || has('win64')) && empty(matchstr(&shell, 'sh')))
|
||||||
let cmd = substitute(a:cmd, '^cd ','cd /d ','') " add /d switch to change drives
|
let cmd = substitute(a:cmd, '^cd ','cd /d ','') " add /d switch to change drives
|
||||||
@ -368,21 +409,27 @@ func! g:shellesc_cd(cmd) abort
|
|||||||
endif
|
endif
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Make a system call. This can be used to change the way system calls
|
" Make a system call. This can be used to change the way system calls
|
||||||
" are made during developing, without searching the whole code base for
|
" are made during developing, without searching the whole code base for
|
||||||
" actual system() calls.
|
" actual system() calls.
|
||||||
"
|
"
|
||||||
" cmd -- the command passed to system() (string)
|
" cmd -- the command passed to system() (string)
|
||||||
" return -- the return value from system()
|
" return -- the return value from system()
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! s:system(cmd) abort
|
func! s:system(cmd) abort
|
||||||
return system(a:cmd)
|
return system(a:cmd)
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Add a log message to Vundle's internal logging variable.
|
" Add a log message to Vundle's internal logging variable.
|
||||||
"
|
"
|
||||||
" str -- the log message (string)
|
" str -- the log message (string)
|
||||||
" prefix -- optional prefix for multiline entries (string)
|
" prefix -- optional prefix for multiline entries (string)
|
||||||
" return -- a:str
|
" return -- a:str
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! s:log(str, ...) abort
|
func! s:log(str, ...) abort
|
||||||
let prefix = a:0 > 0 ? a:1 : ''
|
let prefix = a:0 > 0 ? a:1 : ''
|
||||||
let fmt = '%Y-%m-%d %H:%M:%S'
|
let fmt = '%Y-%m-%d %H:%M:%S'
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
" Searches the database from vim-script.org for a matching plugin. If no
|
" ---------------------------------------------------------------------------
|
||||||
" argument is given all plugins are listed. This function is used by the
|
" Search the database from vim-script.org for a matching plugin. If no
|
||||||
" :Plugins and :PluginSearch commands.
|
" argument is given, list all plugins. This function is used by the :Plugins
|
||||||
|
" and :PluginSearch commands.
|
||||||
"
|
"
|
||||||
" bang -- if 1 refresh the script name cache, if 0 don't
|
" bang -- if 1 refresh the script name cache, if 0 don't
|
||||||
" ... -- a plugin name to search for (FIXME what about multible arguments, it
|
" ... -- a plugin name to search for
|
||||||
" doesn't seem to work.)
|
" ---------------------------------------------------------------------------
|
||||||
func! vundle#scripts#all(bang, ...)
|
func! vundle#scripts#all(bang, ...)
|
||||||
let b:match = ''
|
let b:match = ''
|
||||||
let info = ['"Keymap: i - Install plugin; c - Cleanup; s - Search; R - Reload list']
|
let info = ['"Keymap: i - Install plugin; c - Cleanup; s - Search; R - Reload list']
|
||||||
@ -20,22 +21,31 @@ func! vundle#scripts#all(bang, ...)
|
|||||||
echo len(matches).' plugins found'
|
echo len(matches).' plugins found'
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Repeat the search for bundles.
|
" Repeat the search for bundles.
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! vundle#scripts#reload() abort
|
func! vundle#scripts#reload() abort
|
||||||
silent exec ':PluginSearch! '.(exists('b:match') ? b:match : '')
|
silent exec ':PluginSearch! '.(exists('b:match') ? b:match : '')
|
||||||
redraw
|
redraw
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Complete names for bundles in the command line.
|
" Complete names for bundles in the command line.
|
||||||
"
|
"
|
||||||
" a, c, d -- see :h command-completion-custom
|
" a, c, d -- see :h command-completion-custom
|
||||||
" return -- all valid plugin names from vim-scripts.org as completion
|
" return -- all valid plugin names from vim-scripts.org as completion
|
||||||
" candidates, see also :h command-completion-custom
|
" candidates, see also :h command-completion-custom
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! vundle#scripts#complete(a,c,d)
|
func! vundle#scripts#complete(a,c,d)
|
||||||
return join(s:load_scripts(0),"\n")
|
return join(s:load_scripts(0),"\n")
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" View the logfile after an update or installation.
|
" View the logfile after an update or installation.
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! s:view_log()
|
func! s:view_log()
|
||||||
if !exists('g:vundle_log_file')
|
if !exists('g:vundle_log_file')
|
||||||
let g:vundle_log_file = tempname()
|
let g:vundle_log_file = tempname()
|
||||||
@ -47,10 +57,11 @@ func! s:view_log()
|
|||||||
wincmd P | wincmd H
|
wincmd P | wincmd H
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Parse the output from git log after an update to create a change log for the
|
" Parse the output from git log after an update to create a change log for the
|
||||||
" tuser.
|
" user.
|
||||||
"
|
" ---------------------------------------------------------------------------
|
||||||
" return -- 0 (unconditionally)
|
|
||||||
func! s:create_changelog() abort
|
func! s:create_changelog() abort
|
||||||
for bundle_data in g:updated_bundles
|
for bundle_data in g:updated_bundles
|
||||||
let initial_sha = bundle_data[0]
|
let initial_sha = bundle_data[0]
|
||||||
@ -79,7 +90,10 @@ func! s:create_changelog() abort
|
|||||||
endfor
|
endfor
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" View the change log after an update or installation.
|
" View the change log after an update or installation.
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! s:view_changelog()
|
func! s:view_changelog()
|
||||||
call s:create_changelog()
|
call s:create_changelog()
|
||||||
|
|
||||||
@ -93,14 +107,19 @@ func! s:view_changelog()
|
|||||||
wincmd P | wincmd H
|
wincmd P | wincmd H
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Create a list of 'Plugin ...' lines from a list of bundle names.
|
" Create a list of 'Plugin ...' lines from a list of bundle names.
|
||||||
"
|
"
|
||||||
" names -- a list of names (strings) of plugins
|
" names -- a list of names (strings) of plugins
|
||||||
" return -- a list of 'Plugin ...' lines suitable to be written to a buffer
|
" return -- a list of 'Plugin ...' lines suitable to be written to a buffer
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! vundle#scripts#bundle_names(names)
|
func! vundle#scripts#bundle_names(names)
|
||||||
return map(copy(a:names), ' printf("Plugin ' ."'%s'".'", v:val) ')
|
return map(copy(a:names), ' printf("Plugin ' ."'%s'".'", v:val) ')
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Open a buffer to display information to the user. Several special commands
|
" Open a buffer to display information to the user. Several special commands
|
||||||
" are defined in the new buffer.
|
" are defined in the new buffer.
|
||||||
"
|
"
|
||||||
@ -108,6 +127,7 @@ endf
|
|||||||
" headers -- a list of header lines to be displayed at the top of the buffer
|
" headers -- a list of header lines to be displayed at the top of the buffer
|
||||||
" results -- the main information to be displayed in the buffer (list of
|
" results -- the main information to be displayed in the buffer (list of
|
||||||
" strings)
|
" strings)
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! vundle#scripts#view(title, headers, results)
|
func! vundle#scripts#view(title, headers, results)
|
||||||
if exists('g:vundle_view') && bufloaded(g:vundle_view)
|
if exists('g:vundle_view') && bufloaded(g:vundle_view)
|
||||||
exec g:vundle_view.'bd!'
|
exec g:vundle_view.'bd!'
|
||||||
@ -178,10 +198,13 @@ func! vundle#scripts#view(title, headers, results)
|
|||||||
exec ':'.(len(a:headers) + 1)
|
exec ':'.(len(a:headers) + 1)
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Load the plugin database from vim-scripts.org .
|
" Load the plugin database from vim-scripts.org .
|
||||||
"
|
"
|
||||||
" to -- the filename (string) to save the database to
|
" to -- the filename (string) to save the database to
|
||||||
" return -- 0 on success, 1 if an error occurred
|
" return -- 0 on success, 1 if an error occurred
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! s:fetch_scripts(to)
|
func! s:fetch_scripts(to)
|
||||||
let scripts_dir = fnamemodify(expand(a:to, 1), ":h")
|
let scripts_dir = fnamemodify(expand(a:to, 1), ":h")
|
||||||
if !isdirectory(scripts_dir)
|
if !isdirectory(scripts_dir)
|
||||||
@ -212,12 +235,15 @@ func! s:fetch_scripts(to)
|
|||||||
return 0
|
return 0
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
" Load the plugin database and return a list of all plugins.
|
" Load the plugin database and return a list of all plugins.
|
||||||
"
|
"
|
||||||
" bang -- if 1 download the redatabase, else only download if it is not
|
" bang -- if 1 download the redatabase, else only download if it is not
|
||||||
" readable on disk (i.e. does not exist)
|
" readable on disk (i.e. does not exist)
|
||||||
" return -- a list of strings, these are the names (valid bundle
|
" return -- a list of strings, these are the names (valid bundle
|
||||||
" specifications) of all plugins from vim-scripts.org
|
" specifications) of all plugins from vim-scripts.org
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
func! s:load_scripts(bang)
|
func! s:load_scripts(bang)
|
||||||
let f = expand(g:bundle_dir.'/.vundle/script-names.vim-scripts.org.json', 1)
|
let f = expand(g:bundle_dir.'/.vundle/script-names.vim-scripts.org.json', 1)
|
||||||
if a:bang || !filereadable(f)
|
if a:bang || !filereadable(f)
|
||||||
|
Loading…
Reference in New Issue
Block a user