[vim] vundle as git submodule
This commit is contained in:
parent
61a71b7051
commit
0e0ee32b28
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
[submodule ".vim/bundle/Vundle.vim"]
|
||||
path = .vim/bundle/Vundle.vim
|
||||
url = https://github.com/gmarik/Vundle.vim.git
|
1
.vim/bundle/Vundle.vim
Submodule
1
.vim/bundle/Vundle.vim
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 8db3bcb5921103f0eb6de361c8b25cc03cb350b5
|
@ -1,66 +0,0 @@
|
||||
" Vundle is a shortcut for Vim Bundle and Is a simple plugin manager for Vim
|
||||
" Author: gmarik
|
||||
" HomePage: http://github.com/gmarik/vundle
|
||||
" Readme: http://github.com/gmarik/vundle/blob/master/README.md
|
||||
" Version: 0.9
|
||||
|
||||
" Plugin Commands
|
||||
com! -nargs=+ -bar Plugin
|
||||
\ call vundle#config#bundle(<args>)
|
||||
|
||||
com! -nargs=? -bang -complete=custom,vundle#scripts#complete PluginInstall
|
||||
\ call vundle#installer#new('!' == '<bang>', <q-args>)
|
||||
|
||||
com! -nargs=? -bang -complete=custom,vundle#scripts#complete PluginSearch
|
||||
\ call vundle#scripts#all('!' == '<bang>', <q-args>)
|
||||
|
||||
com! -nargs=? -bang -complete=custom,vundle#scripts#complete Plugins
|
||||
\ call vundle#scripts#all('!' == '<bang>', <q-args>)
|
||||
|
||||
com! -nargs=0 -bang PluginList
|
||||
\ call vundle#installer#list('!' == '<bang>')
|
||||
|
||||
com! -nargs=? -bang PluginClean
|
||||
\ call vundle#installer#clean('!' == '<bang>')
|
||||
|
||||
com! -nargs=0 PluginDocs
|
||||
\ call vundle#installer#helptags(g:bundles)
|
||||
|
||||
" Aliases
|
||||
com! PluginUpdate PluginInstall!
|
||||
|
||||
" Vundle Aliases
|
||||
com! -nargs=? -bang -complete=custom,vundle#scripts#complete VundleInstall PluginInstall<bang> <args>
|
||||
com! -nargs=? -bang -complete=custom,vundle#scripts#complete VundleSearch PluginSearch<bang> <args>
|
||||
com! -nargs=? -bang VundleClean PluginClean<bang>
|
||||
com! -nargs=0 VundleDocs PluginDocs
|
||||
com! VundleUpdate PluginInstall!
|
||||
|
||||
" deprecated
|
||||
com! -nargs=+ Bundle call vundle#config#bundle(<args>)
|
||||
com! -nargs=? -bang -complete=custom,vundle#scripts#complete BundleInstall PluginInstall<bang> <args>
|
||||
com! -nargs=? -bang -complete=custom,vundle#scripts#complete BundleSearch PluginSearch<bang> <args>
|
||||
com! -nargs=? -bang -complete=custom,vundle#scripts#complete Bundles Plugins<bang> <args>
|
||||
com! -nargs=0 -bang BundleList PluginList<bang>
|
||||
com! -nargs=? -bang BundleClean PluginClean<bang>
|
||||
com! -nargs=0 BundleDocs PluginDocs
|
||||
com! BundleUpdate PluginInstall!
|
||||
|
||||
if (has('signs'))
|
||||
sign define Vu_error text=! texthl=Error
|
||||
sign define Vu_active text=> texthl=Comment
|
||||
sign define Vu_todate text=. texthl=Comment
|
||||
sign define Vu_new text=+ texthl=Comment
|
||||
sign define Vu_updated text=* texthl=Comment
|
||||
sign define Vu_deleted text=- texthl=Comment
|
||||
sign define Vu_helptags text=* texthl=Comment
|
||||
endif
|
||||
|
||||
|
||||
func! vundle#rc(...) abort
|
||||
let g:bundle_dir = len(a:000) > 0 ? expand(a:1, 1) : expand('$HOME/.vim/bundle', 1)
|
||||
let g:updated_bundles = []
|
||||
let g:vundle_log = []
|
||||
let g:vundle_changelog = ['Updated Plugins:']
|
||||
call vundle#config#init()
|
||||
endf
|
@ -1,109 +0,0 @@
|
||||
func! vundle#config#bundle(arg, ...)
|
||||
let bundle = vundle#config#init_bundle(a:arg, a:000)
|
||||
call s:rtp_rm_a()
|
||||
call add(g:bundles, bundle)
|
||||
call s:rtp_add_a()
|
||||
return bundle
|
||||
endf
|
||||
|
||||
func! vundle#config#init()
|
||||
if !exists('g:bundles') | let g:bundles = [] | endif
|
||||
call s:rtp_rm_a()
|
||||
let g:bundles = []
|
||||
endf
|
||||
|
||||
func! vundle#config#require(bundles) abort
|
||||
for b in a:bundles
|
||||
call s:rtp_add(b.rtpath)
|
||||
call s:rtp_add(g:bundle_dir)
|
||||
" TODO: it has to be relative rtpath, not bundle.name
|
||||
exec 'runtime! '.b.name.'/plugin/*.vim'
|
||||
exec 'runtime! '.b.name.'/after/*.vim'
|
||||
call s:rtp_rm(g:bundle_dir)
|
||||
endfor
|
||||
endf
|
||||
|
||||
func! vundle#config#init_bundle(name, opts)
|
||||
if a:name != substitute(a:name, '^\s*\(.\{-}\)\s*$', '\1', '')
|
||||
echo "Spurious leading and/or trailing whitespace found in plugin spec '" . a:name . "'"
|
||||
endif
|
||||
let opts = extend(s:parse_options(a:opts), s:parse_name(substitute(a:name,"['".'"]\+','','g')), 'keep')
|
||||
let b = extend(opts, copy(s:bundle))
|
||||
let b.rtpath = s:rtpath(opts)
|
||||
return b
|
||||
endf
|
||||
|
||||
func! s:parse_options(opts)
|
||||
" TODO: improve this
|
||||
if len(a:opts) != 1 | return {} | endif
|
||||
|
||||
if type(a:opts[0]) == type({})
|
||||
return a:opts[0]
|
||||
else
|
||||
return {'rev': a:opts[0]}
|
||||
endif
|
||||
endf
|
||||
|
||||
func! s:parse_name(arg)
|
||||
let arg = a:arg
|
||||
let git_proto = exists('g:vundle_default_git_proto') ? g:vundle_default_git_proto : 'https'
|
||||
|
||||
if arg =~? '^\s*\(gh\|github\):\S\+'
|
||||
\ || arg =~? '^[a-z0-9][a-z0-9-]*/[^/]\+$'
|
||||
let uri = git_proto.'://github.com/'.split(arg, ':')[-1]
|
||||
if uri !~? '\.git$'
|
||||
let uri .= '.git'
|
||||
endif
|
||||
let name = substitute(split(uri,'\/')[-1], '\.git\s*$','','i')
|
||||
elseif arg =~? '^\s*\(git@\|git://\)\S\+'
|
||||
\ || arg =~? '\(file\|https\?\)://'
|
||||
\ || arg =~? '\.git\s*$'
|
||||
let uri = arg
|
||||
let name = split( substitute(uri,'/\?\.git\s*$','','i') ,'\/')[-1]
|
||||
else
|
||||
let name = arg
|
||||
let uri = git_proto.'://github.com/vim-scripts/'.name.'.git'
|
||||
endif
|
||||
return {'name': name, 'uri': uri, 'name_spec': arg }
|
||||
endf
|
||||
|
||||
func! s:rtp_rm_a()
|
||||
let paths = map(copy(g:bundles), 'v:val.rtpath')
|
||||
let prepends = join(paths, ',')
|
||||
let appends = join(paths, '/after,').'/after'
|
||||
exec 'set rtp-='.fnameescape(prepends)
|
||||
exec 'set rtp-='.fnameescape(appends)
|
||||
endf
|
||||
|
||||
func! s:rtp_add_a()
|
||||
let paths = map(copy(g:bundles), 'v:val.rtpath')
|
||||
let prepends = join(paths, ',')
|
||||
let appends = join(paths, '/after,').'/after'
|
||||
exec 'set rtp^='.fnameescape(prepends)
|
||||
exec 'set rtp+='.fnameescape(appends)
|
||||
endf
|
||||
|
||||
func! s:rtp_rm(dir) abort
|
||||
exec 'set rtp-='.fnameescape(expand(a:dir, 1))
|
||||
exec 'set rtp-='.fnameescape(expand(a:dir.'/after', 1))
|
||||
endf
|
||||
|
||||
func! s:rtp_add(dir) abort
|
||||
exec 'set rtp^='.fnameescape(expand(a:dir, 1))
|
||||
exec 'set rtp+='.fnameescape(expand(a:dir.'/after', 1))
|
||||
endf
|
||||
|
||||
func! s:expand_path(path) abort
|
||||
return simplify(expand(a:path, 1))
|
||||
endf
|
||||
|
||||
func! s:rtpath(opts)
|
||||
return has_key(a:opts, 'rtp') ? s:expand_path(a:opts.path().'/'.a:opts.rtp) : a:opts.path()
|
||||
endf
|
||||
|
||||
let s:bundle = {}
|
||||
|
||||
func! s:bundle.path()
|
||||
return s:expand_path(g:bundle_dir.'/'.self.name)
|
||||
endf
|
||||
|
@ -1,285 +0,0 @@
|
||||
func! vundle#installer#new(bang, ...) abort
|
||||
let bundles = (a:1 == '') ?
|
||||
\ g:bundles :
|
||||
\ map(copy(a:000), 'vundle#config#bundle(v:val, {})')
|
||||
|
||||
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 s:process(a:bang, (a:bang ? 'add!' : 'add'))
|
||||
|
||||
call vundle#config#require(bundles)
|
||||
endf
|
||||
|
||||
|
||||
func! s:process(bang, cmd)
|
||||
let msg = ''
|
||||
|
||||
redraw
|
||||
sleep 1m
|
||||
|
||||
let lines = (getline('.','$')[0:-2])
|
||||
|
||||
for line in lines
|
||||
redraw
|
||||
|
||||
exec ':norm '.a:cmd
|
||||
|
||||
if 'error' == g:vundle_last_status
|
||||
let msg = 'With errors; press l to view log'
|
||||
endif
|
||||
|
||||
if 'updated' == g:vundle_last_status && empty(msg)
|
||||
let msg = 'Plugins updated; press u to view changelog'
|
||||
endif
|
||||
|
||||
" goto next one
|
||||
exec ':+1'
|
||||
|
||||
setl nomodified
|
||||
endfor
|
||||
|
||||
redraw
|
||||
echo 'Done! '.msg
|
||||
endf
|
||||
|
||||
func! vundle#installer#run(func_name, name, ...) abort
|
||||
let n = a:name
|
||||
|
||||
echo 'Processing '.n
|
||||
call s:sign('active')
|
||||
|
||||
sleep 1m
|
||||
|
||||
let status = call(a:func_name, a:1)
|
||||
|
||||
call s:sign(status)
|
||||
|
||||
redraw
|
||||
|
||||
if 'new' == status
|
||||
echo n.' installed'
|
||||
elseif 'updated' == status
|
||||
echo n.' updated'
|
||||
elseif 'todate' == status
|
||||
echo n.' already installed'
|
||||
elseif 'deleted' == status
|
||||
echo n.' deleted'
|
||||
elseif 'helptags' == status
|
||||
echo n.' regenerated'
|
||||
elseif 'error' == status
|
||||
echohl Error
|
||||
echo 'Error processing '.n
|
||||
echohl None
|
||||
sleep 1
|
||||
else
|
||||
throw 'whoops, unknown status:'.status
|
||||
endif
|
||||
|
||||
let g:vundle_last_status = status
|
||||
|
||||
return status
|
||||
endf
|
||||
|
||||
func! s:sign(status)
|
||||
if (!has('signs'))
|
||||
return
|
||||
endif
|
||||
|
||||
exe ":sign place ".line('.')." line=".line('.')." name=Vu_". a:status ." buffer=" . bufnr("%")
|
||||
endf
|
||||
|
||||
func! vundle#installer#install_and_require(bang, name) abort
|
||||
let result = vundle#installer#install(a:bang, a:name)
|
||||
let b = vundle#config#bundle(a:name, {})
|
||||
call vundle#installer#helptags([b])
|
||||
call vundle#config#require([b])
|
||||
return result
|
||||
endf
|
||||
|
||||
func! vundle#installer#install(bang, name) abort
|
||||
if !isdirectory(g:bundle_dir) | call mkdir(g:bundle_dir, 'p') | endif
|
||||
|
||||
let n = substitute(a:name,"['".'"]\+','','g')
|
||||
let matched = filter(copy(g:bundles), 'v:val.name_spec == n')
|
||||
|
||||
if len(matched) > 0
|
||||
let b = matched[0]
|
||||
else
|
||||
let b = vundle#config#init_bundle(a:name, {})
|
||||
endif
|
||||
|
||||
return s:sync(a:bang, b)
|
||||
endf
|
||||
|
||||
func! vundle#installer#docs() abort
|
||||
let error_count = vundle#installer#helptags(g:bundles)
|
||||
if error_count > 0
|
||||
return 'error'
|
||||
endif
|
||||
return 'helptags'
|
||||
endf
|
||||
|
||||
func! vundle#installer#helptags(bundles) abort
|
||||
let bundle_dirs = map(copy(a:bundles),'v:val.rtpath')
|
||||
let help_dirs = filter(bundle_dirs, 's:has_doc(v:val)')
|
||||
|
||||
call s:log('')
|
||||
call s:log('Helptags:')
|
||||
|
||||
let statuses = map(copy(help_dirs), 's:helptags(v:val)')
|
||||
let errors = filter(statuses, 'v:val == 0')
|
||||
|
||||
call s:log('Helptags: '.len(help_dirs).' plugins processed')
|
||||
|
||||
return len(errors)
|
||||
endf
|
||||
|
||||
func! vundle#installer#list(bang) abort
|
||||
let bundles = vundle#scripts#bundle_names(map(copy(g:bundles), 'v:val.name_spec'))
|
||||
call vundle#scripts#view('list', ['" My Plugins'], bundles)
|
||||
redraw
|
||||
echo len(g:bundles).' plugins configured'
|
||||
endf
|
||||
|
||||
|
||||
func! vundle#installer#clean(bang) abort
|
||||
let bundle_dirs = map(copy(g:bundles), 'v:val.path()')
|
||||
let all_dirs = (v:version > 702 || (v:version == 702 && has("patch51")))
|
||||
\ ? split(globpath(g:bundle_dir, '*', 1), "\n")
|
||||
\ : split(globpath(g:bundle_dir, '*'), "\n")
|
||||
let x_dirs = filter(all_dirs, '0 > index(bundle_dirs, v:val)')
|
||||
|
||||
if empty(x_dirs)
|
||||
let headers = ['" All clean!']
|
||||
let names = []
|
||||
else
|
||||
let headers = ['" Removing Plugins:']
|
||||
let names = vundle#scripts#bundle_names(map(copy(x_dirs), 'fnamemodify(v:val, ":t")'))
|
||||
end
|
||||
|
||||
call vundle#scripts#view('clean', headers, names)
|
||||
redraw
|
||||
|
||||
if (a:bang || empty(names))
|
||||
call s:process(a:bang, 'D')
|
||||
else
|
||||
call inputsave()
|
||||
let response = input('Continue? [Y/n]: ')
|
||||
call inputrestore()
|
||||
if (response =~? 'y' || response == '')
|
||||
call s:process(a:bang, 'D')
|
||||
endif
|
||||
endif
|
||||
endf
|
||||
|
||||
|
||||
func! vundle#installer#delete(bang, dir_name) abort
|
||||
|
||||
let cmd = ((has('win32') || has('win64')) && empty(matchstr(&shell, 'sh'))) ?
|
||||
\ 'rmdir /S /Q' :
|
||||
\ 'rm -rf'
|
||||
|
||||
let bundle = vundle#config#init_bundle(a:dir_name, {})
|
||||
let cmd .= ' '.vundle#installer#shellesc(bundle.path())
|
||||
|
||||
let out = s:system(cmd)
|
||||
|
||||
call s:log('')
|
||||
call s:log('Plugin '.a:dir_name)
|
||||
call s:log('$ '.cmd)
|
||||
call s:log('> '.out)
|
||||
|
||||
if 0 != v:shell_error
|
||||
return 'error'
|
||||
else
|
||||
return 'deleted'
|
||||
endif
|
||||
endf
|
||||
|
||||
func! s:has_doc(rtp) abort
|
||||
return isdirectory(a:rtp.'/doc')
|
||||
\ && (!filereadable(a:rtp.'/doc/tags') || filewritable(a:rtp.'/doc/tags'))
|
||||
\ && (v:version > 702 || (v:version == 702 && has("patch51")))
|
||||
\ ? !(empty(glob(a:rtp.'/doc/*.txt', 1)) && empty(glob(a:rtp.'/doc/*.??x', 1)))
|
||||
\ : !(empty(glob(a:rtp.'/doc/*.txt')) && empty(glob(a:rtp.'/doc/*.??x')))
|
||||
endf
|
||||
|
||||
func! s:helptags(rtp) abort
|
||||
" it is important to keep trailing slash here
|
||||
let doc_path = resolve(a:rtp . '/doc/')
|
||||
call s:log(':helptags '.doc_path)
|
||||
try
|
||||
execute 'helptags ' . doc_path
|
||||
catch
|
||||
call s:log("> Error running :helptags ".doc_path)
|
||||
return 0
|
||||
endtry
|
||||
return 1
|
||||
endf
|
||||
|
||||
func! s:sync(bang, bundle) abort
|
||||
let git_dir = expand(a:bundle.path().'/.git/', 1)
|
||||
if isdirectory(git_dir) || filereadable(expand(a:bundle.path().'/.git', 1))
|
||||
if !(a:bang) | return 'todate' | endif
|
||||
let cmd = 'cd '.vundle#installer#shellesc(a:bundle.path()).' && git pull && git submodule update --init --recursive'
|
||||
|
||||
let cmd = g:shellesc_cd(cmd)
|
||||
|
||||
let get_current_sha = 'cd '.vundle#installer#shellesc(a:bundle.path()).' && git rev-parse HEAD'
|
||||
let get_current_sha = g:shellesc_cd(get_current_sha)
|
||||
let initial_sha = s:system(get_current_sha)[0:15]
|
||||
else
|
||||
let cmd = 'git clone --recursive '.vundle#installer#shellesc(a:bundle.uri).' '.vundle#installer#shellesc(a:bundle.path())
|
||||
let initial_sha = ''
|
||||
endif
|
||||
|
||||
let out = s:system(cmd)
|
||||
call s:log('')
|
||||
call s:log('Plugin '.a:bundle.name_spec)
|
||||
call s:log('$ '.cmd)
|
||||
call s:log('> '.out)
|
||||
|
||||
if 0 != v:shell_error
|
||||
return 'error'
|
||||
end
|
||||
|
||||
if empty(initial_sha)
|
||||
return 'new'
|
||||
endif
|
||||
|
||||
let updated_sha = s:system(get_current_sha)[0:15]
|
||||
|
||||
if initial_sha == updated_sha
|
||||
return 'todate'
|
||||
endif
|
||||
|
||||
call add(g:updated_bundles, [initial_sha, updated_sha, a:bundle])
|
||||
return 'updated'
|
||||
endf
|
||||
|
||||
func! vundle#installer#shellesc(cmd) abort
|
||||
if ((has('win32') || has('win64')) && empty(matchstr(&shell, 'sh')))
|
||||
return '"' . substitute(a:cmd, '"', '\\"', 'g') . '"'
|
||||
endif
|
||||
return shellescape(a:cmd)
|
||||
endf
|
||||
|
||||
func! g:shellesc_cd(cmd) abort
|
||||
if ((has('win32') || has('win64')) && empty(matchstr(&shell, 'sh')))
|
||||
let cmd = substitute(a:cmd, '^cd ','cd /d ','') " add /d switch to change drives
|
||||
return cmd
|
||||
else
|
||||
return a:cmd
|
||||
endif
|
||||
endf
|
||||
|
||||
func! s:system(cmd) abort
|
||||
return system(a:cmd)
|
||||
endf
|
||||
|
||||
func! s:log(str) abort
|
||||
let fmt = '%y%m%d %H:%M:%S'
|
||||
call add(g:vundle_log, '['.strftime(fmt).'] '.a:str)
|
||||
return a:str
|
||||
endf
|
@ -1,189 +0,0 @@
|
||||
func! vundle#scripts#all(bang, ...)
|
||||
let b:match = ''
|
||||
let info = ['"Keymap: i - Install plugin; c - Cleanup; s - Search; R - Reload list']
|
||||
let matches = s:load_scripts(a:bang)
|
||||
if !empty(a:1)
|
||||
let matches = filter(matches, 'v:val =~? "'.escape(a:1,'"').'"')
|
||||
let info += ['"Search results for: '.a:1]
|
||||
" TODO: highlight matches
|
||||
let b:match = a:1
|
||||
endif
|
||||
call vundle#scripts#view('search',info, vundle#scripts#bundle_names(reverse(matches)))
|
||||
redraw
|
||||
echo len(matches).' plugins found'
|
||||
endf
|
||||
|
||||
func! vundle#scripts#reload() abort
|
||||
silent exec ':PluginSearch! '.(exists('b:match') ? b:match : '')
|
||||
redraw
|
||||
endf
|
||||
|
||||
func! vundle#scripts#complete(a,c,d)
|
||||
return join(s:load_scripts(0),"\n")
|
||||
endf
|
||||
|
||||
func! s:view_log()
|
||||
if !exists('g:vundle_log_file')
|
||||
let g:vundle_log_file = tempname()
|
||||
endif
|
||||
|
||||
call writefile(g:vundle_log, g:vundle_log_file)
|
||||
execute 'silent pedit ' . g:vundle_log_file
|
||||
|
||||
wincmd P | wincmd H
|
||||
endf
|
||||
|
||||
func! s:create_changelog() abort
|
||||
for bundle_data in g:updated_bundles
|
||||
let initial_sha = bundle_data[0]
|
||||
let updated_sha = bundle_data[1]
|
||||
let bundle = bundle_data[2]
|
||||
|
||||
let cmd = 'cd '.vundle#installer#shellesc(bundle.path()).
|
||||
\ ' && git log --pretty=format:"%s %an, %ar" --graph '.
|
||||
\ initial_sha.'..'.updated_sha
|
||||
|
||||
let cmd = g:shellesc_cd(cmd)
|
||||
|
||||
let updates = system(cmd)
|
||||
|
||||
call add(g:vundle_changelog, '')
|
||||
call add(g:vundle_changelog, 'Updated Plugin: '.bundle.name)
|
||||
|
||||
if bundle.uri =~ "https://github.com"
|
||||
call add(g:vundle_changelog, 'Compare at: '.bundle.uri[0:-5].'/compare/'.initial_sha.'...'.updated_sha)
|
||||
endif
|
||||
|
||||
for update in split(updates, '\n')
|
||||
let update = substitute(update, '\s\+$', '', '')
|
||||
call add(g:vundle_changelog, ' '.update)
|
||||
endfor
|
||||
endfor
|
||||
endf
|
||||
|
||||
func! s:view_changelog()
|
||||
call s:create_changelog()
|
||||
|
||||
if !exists('g:vundle_changelog_file')
|
||||
let g:vundle_changelog_file = tempname()
|
||||
endif
|
||||
|
||||
call writefile(g:vundle_changelog, g:vundle_changelog_file)
|
||||
execute 'silent pedit ' . g:vundle_changelog_file
|
||||
|
||||
wincmd P | wincmd H
|
||||
endf
|
||||
|
||||
func! vundle#scripts#bundle_names(names)
|
||||
return map(copy(a:names), ' printf("Plugin ' ."'%s'".'", v:val) ')
|
||||
endf
|
||||
|
||||
func! vundle#scripts#view(title, headers, results)
|
||||
if exists('g:vundle_view') && bufloaded(g:vundle_view)
|
||||
exec g:vundle_view.'bd!'
|
||||
endif
|
||||
|
||||
exec 'silent pedit [Vundle] '.a:title
|
||||
|
||||
wincmd P | wincmd H
|
||||
|
||||
let g:vundle_view = bufnr('%')
|
||||
"
|
||||
" make buffer modifiable
|
||||
" to append without errors
|
||||
set modifiable
|
||||
|
||||
call append(0, a:headers + a:results)
|
||||
|
||||
setl buftype=nofile
|
||||
setl noswapfile
|
||||
|
||||
setl cursorline
|
||||
setl nonu ro noma
|
||||
if (exists('&relativenumber')) | setl norelativenumber | endif
|
||||
|
||||
setl ft=vundle
|
||||
setl syntax=vim
|
||||
syn keyword vimCommand Plugin
|
||||
syn keyword vimCommand Bundle
|
||||
syn keyword vimCommand Helptags
|
||||
|
||||
com! -buffer -bang -nargs=1 DeletePlugin
|
||||
\ call vundle#installer#run('vundle#installer#delete', split(<q-args>,',')[0], ['!' == '<bang>', <args>])
|
||||
|
||||
com! -buffer -bang -nargs=? InstallAndRequirePlugin
|
||||
\ call vundle#installer#run('vundle#installer#install_and_require', split(<q-args>,',')[0], ['!' == '<bang>', <q-args>])
|
||||
|
||||
com! -buffer -bang -nargs=? InstallPlugin
|
||||
\ call vundle#installer#run('vundle#installer#install', split(<q-args>,',')[0], ['!' == '<bang>', <q-args>])
|
||||
|
||||
com! -buffer -bang -nargs=0 InstallHelptags
|
||||
\ call vundle#installer#run('vundle#installer#docs', 'helptags', [])
|
||||
|
||||
com! -buffer -nargs=0 VundleLog call s:view_log()
|
||||
|
||||
com! -buffer -nargs=0 VundleChangelog call s:view_changelog()
|
||||
|
||||
nnoremap <buffer> q :silent bd!<CR>
|
||||
nnoremap <buffer> D :exec 'Delete'.getline('.')<CR>
|
||||
|
||||
nnoremap <buffer> add :exec 'Install'.getline('.')<CR>
|
||||
nnoremap <buffer> add! :exec 'Install'.substitute(getline('.'), '^Plugin ', 'Plugin! ', '')<CR>
|
||||
|
||||
nnoremap <buffer> i :exec 'InstallAndRequire'.getline('.')<CR>
|
||||
nnoremap <buffer> I :exec 'InstallAndRequire'.substitute(getline('.'), '^Plugin ', 'Plugin! ', '')<CR>
|
||||
|
||||
nnoremap <buffer> l :VundleLog<CR>
|
||||
nnoremap <buffer> u :VundleChangelog<CR>
|
||||
nnoremap <buffer> h :h vundle<CR>
|
||||
nnoremap <buffer> ? :norm h<CR>
|
||||
|
||||
nnoremap <buffer> c :PluginClean<CR>
|
||||
nnoremap <buffer> C :PluginClean!<CR>
|
||||
|
||||
nnoremap <buffer> s :PluginSearch
|
||||
nnoremap <buffer> R :call vundle#scripts#reload()<CR>
|
||||
|
||||
" goto first line after headers
|
||||
exec ':'.(len(a:headers) + 1)
|
||||
endf
|
||||
|
||||
func! s:fetch_scripts(to)
|
||||
let scripts_dir = fnamemodify(expand(a:to, 1), ":h")
|
||||
if !isdirectory(scripts_dir)
|
||||
call mkdir(scripts_dir, "p")
|
||||
endif
|
||||
|
||||
let l:vim_scripts_json = 'http://vim-scripts.org/api/scripts.json'
|
||||
if executable("curl")
|
||||
let cmd = 'curl --fail -s -o '.vundle#installer#shellesc(a:to).' '.l:vim_scripts_json
|
||||
elseif executable("wget")
|
||||
let temp = vundle#installer#shellesc(tempname())
|
||||
let cmd = 'wget -q -O '.temp.' '.l:vim_scripts_json. ' && mv -f '.temp.' '.vundle#installer#shellesc(a:to)
|
||||
if (has('win32') || has('win64'))
|
||||
let cmd = substitute(cmd, 'mv -f ', 'move /Y ', '') " change force flag
|
||||
let cmd = vundle#installer#shellesc(cmd)
|
||||
end
|
||||
else
|
||||
echoerr 'Error curl or wget is not available!'
|
||||
return 1
|
||||
endif
|
||||
|
||||
call system(cmd)
|
||||
|
||||
if (0 != v:shell_error)
|
||||
echoerr 'Error fetching scripts!'
|
||||
return v:shell_error
|
||||
endif
|
||||
return 0
|
||||
endf
|
||||
|
||||
func! s:load_scripts(bang)
|
||||
let f = expand(g:bundle_dir.'/.vundle/script-names.vim-scripts.org.json', 1)
|
||||
if a:bang || !filereadable(f)
|
||||
if 0 != s:fetch_scripts(f)
|
||||
return []
|
||||
end
|
||||
endif
|
||||
return eval(readfile(f, 'b')[0])
|
||||
endf
|
12
.vimrc
12
.vimrc
@ -426,8 +426,8 @@ map <S-F9> :GitGutterLineHighlightsToggle <CR>
|
||||
"Using vundle
|
||||
"cf. https://github.com/gmarik/Vundle.vim
|
||||
":PluginInstall to install them
|
||||
set rtp+=~/.vim/bundle/vundle/
|
||||
call vundle#rc()
|
||||
set rtp+=~/.vim/bundle/Vundle.vim/
|
||||
call vundle#begin()
|
||||
|
||||
" let Vundle manage Vundle, required
|
||||
Plugin 'gmarik/vundle'
|
||||
@ -438,3 +438,11 @@ Plugin 'tpope/vim-fugitive'
|
||||
" Same as gitgutter but for other cvs
|
||||
"Plugin mhinz/vim-signify
|
||||
|
||||
" Python completion
|
||||
Plugin 'klen/python-mode'
|
||||
|
||||
" VimWiki
|
||||
Plugin 'vimwiki/vimwiki'
|
||||
let g:vimwiki_list=[{'path':'~/.vim/vimwiki'}]
|
||||
|
||||
call vundle#end()
|
||||
|
Loading…
Reference in New Issue
Block a user