Browse Source

Merge d0925613b5 into 6497e37694

pull/793/merge
Harshavardhan Kamarthi 9 years ago
committed by GitHub
parent
commit
8d170b1f18
7 changed files with 145 additions and 59 deletions
  1. +10
    -0
      autoload/vundle.vim
  2. +43
    -21
      autoload/vundle/installer.vim
  3. +8
    -10
      autoload/vundle/scripts.vim
  4. +15
    -0
      ftplugin/vundlechangelog.vim
  5. +1
    -2
      ftplugin/vundlelog.vim
  6. +36
    -0
      syntax/vundlechangelog.vim
  7. +32
    -26
      syntax/vundlelog.vim

+ 10
- 0
autoload/vundle.vim View File

@ -87,4 +87,14 @@ let vundle#lazy_load = 0
let vundle#log = [] let vundle#log = []
let vundle#updated_bundles = [] let vundle#updated_bundles = []
if !exists('g:vundle#git_executable')
let vundle#git_executable = 'git'
endif
if !exists('g:vundle#curl_executable')
let vundle#curl_executable = 'curl'
endif
if !exists('g:vundle#wget_executable')
let vundle#wget_executable = 'wget'
endif
" vim: set expandtab sts=2 ts=2 sw=2 tw=78 norl: " vim: set expandtab sts=2 ts=2 sw=2 tw=78 norl:

+ 43
- 21
autoload/vundle/installer.vim View File

@ -343,8 +343,7 @@ endf
" return -- the URL for the origin remote (string) " return -- the URL for the origin remote (string)
" --------------------------------------------------------------------------- " ---------------------------------------------------------------------------
func! s:get_current_origin_url(bundle) abort func! s:get_current_origin_url(bundle) abort
let cmd = 'cd '.vundle#installer#shellesc(a:bundle.path()).' && git config --get remote.origin.url'
let cmd = vundle#installer#shellesc_cd(cmd)
let cmd = s:make_git_command(a:bundle, ['config', '--get', 'remote.origin.url'])
let out = s:strip(s:system(cmd)) let out = s:strip(s:system(cmd))
return out return out
endf endf
@ -357,12 +356,37 @@ endf
" return -- A 15 character log sha for the current HEAD " return -- A 15 character log sha for the current HEAD
" --------------------------------------------------------------------------- " ---------------------------------------------------------------------------
func! s:get_current_sha(bundle) func! s:get_current_sha(bundle)
let cmd = 'cd '.vundle#installer#shellesc(a:bundle.path()).' && git rev-parse HEAD'
let cmd = vundle#installer#shellesc_cd(cmd)
let cmd = s:make_git_command(a:bundle, ['rev-parse', 'HEAD'])
let out = s:system(cmd)[0:15] let out = s:system(cmd)[0:15]
return out return out
endf endf
" ---------------------------------------------------------------------------
" Build a safe (escaped) git command
"
" bundle -- A bundle object to get the path to the git dir
" args -- A list of arguments to the git executable
" return -- A string containing the escaped shell command
" ---------------------------------------------------------------------------
func! s:make_git_command(bundle, args) abort
let workdir = a:bundle.path()
let gitdir = workdir.'/.git/'
let git = [g:vundle#git_executable, '--git-dir='.gitdir, '--work-tree='.workdir]
return join(map(git + a:args, 'vundle#installer#shellesc(v:val)'))
endf
" ---------------------------------------------------------------------------
" Build a safe (escaped) command from list of git args
"
" bundle -- A bundle object to get the path to the git dir
" argss -- A list of lists of arguments to successive git calls
" return -- A string containing the escaped shell command
" ---------------------------------------------------------------------------
func! s:make_git_commands(bundle, argss) abort
return join(map(a:argss, 's:make_git_command(a:bundle, v:val)'), ' && ')
endf
" --------------------------------------------------------------------------- " ---------------------------------------------------------------------------
" Create the appropriate sync command to run according to the current state of " Create the appropriate sync command to run according to the current state of
@ -388,14 +412,12 @@ func! s:make_sync_command(bang, bundle) abort
call s:log('> Plugin ' . a:bundle.name . ' new URI: ' . a:bundle.uri) call s:log('> Plugin ' . a:bundle.name . ' new URI: ' . a:bundle.uri)
" Directory names match but the origin remotes are not the same " Directory names match but the origin remotes are not the same
let cmd_parts = [ let cmd_parts = [
\ 'cd '.vundle#installer#shellesc(a:bundle.path()) ,
\ 'git remote set-url origin ' . vundle#installer#shellesc(a:bundle.uri),
\ 'git fetch',
\ 'git reset --hard origin/HEAD',
\ 'git submodule update --init --recursive',
\ ]
let cmd = join(cmd_parts, ' && ')
let cmd = vundle#installer#shellesc_cd(cmd)
\ [ 'remote', 'set-url', 'origin', a:bundle.uri ],
\ [ 'fetch' ],
\ [ 'reset', '--hard', 'origin/HEAD' ],
\ [ 'submodule', 'update', '--init', '--recursive' ]
\]
let cmd = s:make_git_commands(a:bundle, cmd_parts)
let initial_sha = '' let initial_sha = ''
return [cmd, initial_sha] return [cmd, initial_sha]
endif endif
@ -406,16 +428,13 @@ func! s:make_sync_command(bang, bundle) abort
endif endif
let cmd_parts = [ let cmd_parts = [
\ 'cd '.vundle#installer#shellesc(a:bundle.path()),
\ 'git pull',
\ 'git submodule update --init --recursive',
\ ]
let cmd = join(cmd_parts, ' && ')
let cmd = vundle#installer#shellesc_cd(cmd)
\ [ 'pull'],
\ [ 'submodule', 'update', '--init', '--recursive']
\]
let cmd = s:make_git_commands(a:bundle, cmd_parts)
let initial_sha = s:get_current_sha(a:bundle) let initial_sha = s:get_current_sha(a:bundle)
else else
let cmd = 'git clone --recursive '.vundle#installer#shellesc(a:bundle.uri).' '.vundle#installer#shellesc(a:bundle.path())
let cmd = s:make_git_command(a:bundle, ['clone', '--recursive', a:bundle.uri, a:bundle.path()])
let initial_sha = '' let initial_sha = ''
endif endif
return [cmd, initial_sha] return [cmd, initial_sha]
@ -527,8 +546,11 @@ func! s:log(str, ...) abort
let fmt = '%Y-%m-%d %H:%M:%S' let fmt = '%Y-%m-%d %H:%M:%S'
let lines = split(a:str, '\n', 1) let lines = split(a:str, '\n', 1)
let time = strftime(fmt) let time = strftime(fmt)
let entry_prefix = '['. time .'] '. prefix
for line in lines for line in lines
call add(g:vundle#log, '['. time .'] '. prefix . line)
" Trim trailing whitespace
let entry = substitute(entry_prefix . line, '\m\s\+$', '', '')
call add(g:vundle#log, entry)
endfor endfor
return a:str return a:str
endf endf


+ 8
- 10
autoload/vundle/scripts.vim View File

@ -67,6 +67,7 @@ func! s:view_log()
setl buftype=nofile setl buftype=nofile
setl noswapfile setl noswapfile
setl ro noma setl ro noma
setfiletype vundlelog
wincmd P | wincmd H wincmd P | wincmd H
endf endf
@ -83,11 +84,8 @@ func! s:create_changelog() abort
let updated_sha = bundle_data[1] let updated_sha = bundle_data[1]
let bundle = bundle_data[2] 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 = vundle#installer#shellesc_cd(cmd)
let cmd = s:make_git_command(bundle, ['log', '--pretty=format:"%s %an, %ar"',
\ '--graph', initial_sha.'..'.updated_sha ])
let updates = system(cmd) let updates = system(cmd)
@ -124,7 +122,7 @@ func! s:view_changelog()
setl buftype=nofile setl buftype=nofile
setl noswapfile setl noswapfile
setl ro noma setl ro noma
setfiletype vundlelog
setfiletype vundlechangelog
wincmd P | wincmd H wincmd P | wincmd H
endf endf
@ -235,11 +233,11 @@ func! s:fetch_scripts(to)
endif endif
let l:vim_scripts_json = 'http://vim-scripts.org/api/scripts.json' 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")
if executable(g:vundle#curl_executable)
let cmd = g:vundle#curl_executable.' --fail -s -o '.vundle#installer#shellesc(a:to).' '.l:vim_scripts_json
elseif executable(g:vundle#wget_executable)
let temp = vundle#installer#shellesc(tempname()) let temp = vundle#installer#shellesc(tempname())
let cmd = 'wget -q -O '.temp.' '.l:vim_scripts_json. ' && mv -f '.temp.' '.vundle#installer#shellesc(a:to)
let cmd = g:vundle#wget_executable.' -q -O '.temp.' '.l:vim_scripts_json. ' && mv -f '.temp.' '.vundle#installer#shellesc(a:to)
if (has('win32') || has('win64')) if (has('win32') || has('win64'))
let cmd = substitute(cmd, 'mv -f ', 'move /Y ', '') " change force flag let cmd = substitute(cmd, 'mv -f ', 'move /Y ', '') " change force flag
let cmd = vundle#installer#shellesc(cmd) let cmd = vundle#installer#shellesc(cmd)


+ 15
- 0
ftplugin/vundlechangelog.vim View File

@ -0,0 +1,15 @@
" ---------------------------------------------------------------------------
" Standard ftplugin boilerplate; see ':help ftplugin'.
" ---------------------------------------------------------------------------
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1
" ---------------------------------------------------------------------------
" Settings for the Vundle update log buffer.
" ---------------------------------------------------------------------------
setlocal textwidth=0
setlocal nowrap
setlocal noswapfile

+ 1
- 2
ftplugin/vundlelog.vim View File

@ -8,8 +8,7 @@ let b:did_ftplugin = 1
" --------------------------------------------------------------------------- " ---------------------------------------------------------------------------
" Settings for the Vundle update log buffer.
" Settings for the Vundle log buffer.
" --------------------------------------------------------------------------- " ---------------------------------------------------------------------------
setlocal textwidth=0 setlocal textwidth=0
setlocal nowrap
setlocal noswapfile setlocal noswapfile

+ 36
- 0
syntax/vundlechangelog.vim View File

@ -0,0 +1,36 @@
" ---------------------------------------------------------------------------
" Syntax highlighting for the line which identifies the plugin.
" ---------------------------------------------------------------------------
syntax match VundlePluginName '\v(^Updated Plugin: )@<=.*$'
highlight link VundlePluginName Keyword
" ---------------------------------------------------------------------------
" Syntax highlighting for the 'compare at' line of each plugin.
" ---------------------------------------------------------------------------
syntax region VundleCompareLine start='\v^Compare at: https:' end='\v\n'
\ contains=VundleCompareUrl
syntax match VundleCompareUrl '\vhttps:\S+'
highlight link VundleCompareLine Comment
highlight link VundleCompareUrl Underlined
" ---------------------------------------------------------------------------
" Syntax highlighting for individual commits.
" ---------------------------------------------------------------------------
" The main commit line.
" Note that this regex is intimately related to the one for VundleCommitTree,
" and the two should be changed in sync.
syntax match VundleCommitLine '\v(^ [|*]( *[\\|/\*])* )@<=[^*|].*$'
\ contains=VundleCommitMerge,VundleCommitUser,VundleCommitTime
highlight link VundleCommitLine String
" Sub-regions inside the commit message.
syntax match VundleCommitMerge '\v Merge pull request #\d+.*'
syntax match VundleCommitUser '\v( )@<=\S+( \S+)*(, \d+ \w+ ago$)@='
syntax match VundleCommitTime '\v(, )@<=\d+ \w+ ago$'
highlight link VundleCommitMerge Ignore
highlight link VundleCommitUser Identifier
highlight link VundleCommitTime Comment
" The git history DAG markers are outside of the main commit line region.
" Note that this regex is intimately related to the one for VundleCommitLine,
" and the two should be changed in sync.
syntax match VundleCommitTree '\v(^ )@<=[|*]( *[\\|/\*])*'
highlight link VundleCommitTree Label

+ 32
- 26
syntax/vundlelog.vim View File

@ -1,36 +1,42 @@
" --------------------------------------------------------------------------- " ---------------------------------------------------------------------------
" Syntax highlighting for the line which identifies the plugin. " Syntax highlighting for the line which identifies the plugin.
" --------------------------------------------------------------------------- " ---------------------------------------------------------------------------
syntax match VundlePluginName '\v(^Updated Plugin: )@<=.*$'
syntax match VundlePluginName '\v\C(Plugin )@<=\S+/\S+(\s|$)'
highlight link VundlePluginName Keyword highlight link VundlePluginName Keyword
" --------------------------------------------------------------------------- " ---------------------------------------------------------------------------
" Syntax highlighting for the 'compare at' line of each plugin.
" Syntax highlighting for diffs on each plugin
" --------------------------------------------------------------------------- " ---------------------------------------------------------------------------
syntax region VundleCompareLine start='\v^Compare at: https:' end='\v\n'
\ contains=VundleCompareUrl
syntax match VundleCompareUrl '\vhttps:\S+'
highlight link VundleCompareLine Comment
highlight link VundleCompareUrl Underlined
syntax match VundleGitAddition '\v(\|\s*\d+ )@<=\++'
highlight VundleGitAddition guifg=darkgreen guibg=NONE gui=bold
\ ctermfg=darkgreen ctermbg=NONE cterm=bold
syntax match VundleGitDeletion '\v(\|\s*\d+ \+*)@<=-+'
highlight VundleGitDeletion guifg=red guibg=NONE gui=bold ctermfg=red
\ ctermbg=NONE cterm=bold
" --------------------------------------------------------------------------- " ---------------------------------------------------------------------------
" Syntax highlighting for individual commits.
" Syntax highlighting for log-specific features
" --------------------------------------------------------------------------- " ---------------------------------------------------------------------------
" The main commit line.
" Note that this regex is intimately related to the one for VundleCommitTree,
" and the two should be changed in sync.
syntax match VundleCommitLine '\v(^ [|*]( *[\\|/\*])* )@<=[^*|].*$'
\ contains=VundleCommitMerge,VundleCommitUser,VundleCommitTime
highlight link VundleCommitLine String
" Sub-regions inside the commit message.
syntax match VundleCommitMerge '\v Merge pull request #\d+.*'
syntax match VundleCommitUser '\v( )@<=\S+( \S+)*(, \d+ \w+ ago$)@='
syntax match VundleCommitTime '\v(, )@<=\d+ \w+ ago$'
highlight link VundleCommitMerge Ignore
highlight link VundleCommitUser Identifier
highlight link VundleCommitTime Comment
" The git history DAG markers are outside of the main commit line region.
" Note that this regex is intimately related to the one for VundleCommitLine,
" and the two should be changed in sync.
syntax match VundleCommitTree '\v(^ )@<=[|*]( *[\\|/\*])*'
highlight link VundleCommitTree Label
syntax match VundleCaret '\V >'
highlight link VundleCaret Label
" Make path to tags file stand out
syntax match VundleTagPath '\v\C(:helptags )@<=/\S+$'
highlight link VundleTagPath Comment
" Make URL stand out
syntax match VundleCompareUrl '\v\Chttps:\S+'
highlight link VundleCompareUrl Underlined
" Make errors (from git) stand out
syntax match VundleError '\v\C( \> )@<=fatal:.*$'
highlight link VundleError Error
" Make git messages stand out
syntax match VundleGitMsg '\v\C( \> )@<=git:.*$'
highlight link VundleGitMsg Type
" De-emphasize the time stamp
syntax match VundleTimeStamp '\m^\[\d\{4}-\d\{2}-\d\{2} \d\{2}:\d\{2}:\d\{2}]'
highlight link VundleTimeStamp String

Loading…
Cancel
Save