Add PlugDiff command (#17)
This commit is contained in:
parent
8986f87b83
commit
f00dacd7bd
|
@ -66,6 +66,7 @@ before the call.
|
||||||
| PlugClean[!] | Remove unused directories (bang version will clean without prompt) |
|
| PlugClean[!] | Remove unused directories (bang version will clean without prompt) |
|
||||||
| PlugUpgrade | Upgrade vim-plug itself |
|
| PlugUpgrade | Upgrade vim-plug itself |
|
||||||
| PlugStatus | Check the status of plugins |
|
| PlugStatus | Check the status of plugins |
|
||||||
|
| PlugDiff | See the updated changes from the previous PlugUpdate |
|
||||||
|
|
||||||
### Options for parallel installer
|
### Options for parallel installer
|
||||||
|
|
||||||
|
@ -74,6 +75,12 @@ before the call.
|
||||||
| `g:plug_threads` | 16 | Default number of threads to use |
|
| `g:plug_threads` | 16 | Default number of threads to use |
|
||||||
| `g:plug_timeout` | 60 | Time limit of each task in seconds |
|
| `g:plug_timeout` | 60 | Time limit of each task in seconds |
|
||||||
|
|
||||||
|
### Keybindings
|
||||||
|
|
||||||
|
- `D` - `PlugDiff`
|
||||||
|
- `S` - `PlugStatus`
|
||||||
|
- `q` - Close the window
|
||||||
|
|
||||||
### Example: A small [sensible](https://github.com/tpope/vim-sensible) Vim configuration
|
### Example: A small [sensible](https://github.com/tpope/vim-sensible) Vim configuration
|
||||||
|
|
||||||
```vim
|
```vim
|
||||||
|
|
33
plug.vim
33
plug.vim
|
@ -97,6 +97,7 @@ function! plug#begin(...)
|
||||||
command! -nargs=0 -bang PlugClean call s:clean('<bang>' == '!')
|
command! -nargs=0 -bang PlugClean call s:clean('<bang>' == '!')
|
||||||
command! -nargs=0 PlugUpgrade if s:upgrade() | execute "source ". s:me | endif
|
command! -nargs=0 PlugUpgrade if s:upgrade() | execute "source ". s:me | endif
|
||||||
command! -nargs=0 PlugStatus call s:status()
|
command! -nargs=0 PlugStatus call s:status()
|
||||||
|
command! -nargs=0 PlugDiff call s:diff()
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
endfunction
|
endfunction
|
||||||
|
@ -260,6 +261,8 @@ function! s:syntax()
|
||||||
syn match plugX /x/ containedin=plug2 contained
|
syn match plugX /x/ containedin=plug2 contained
|
||||||
syn match plugDash /^-/
|
syn match plugDash /^-/
|
||||||
syn match plugName /\(^- \)\@<=[^:]*/
|
syn match plugName /\(^- \)\@<=[^:]*/
|
||||||
|
syn match plugRelDate /([^)]\+)$/
|
||||||
|
syn match plugSha /^ [0-9a-z]\{7}/
|
||||||
syn match plugError /^x.*/
|
syn match plugError /^x.*/
|
||||||
syn keyword Function PlugInstall PlugStatus PlugUpdate PlugClean
|
syn keyword Function PlugInstall PlugStatus PlugUpdate PlugClean
|
||||||
hi def link plug1 Title
|
hi def link plug1 Title
|
||||||
|
@ -270,6 +273,8 @@ function! s:syntax()
|
||||||
hi def link plugDash Special
|
hi def link plugDash Special
|
||||||
hi def link plugName Label
|
hi def link plugName Label
|
||||||
hi def link plugError Error
|
hi def link plugError Error
|
||||||
|
hi def link plugRelDate Comment
|
||||||
|
hi def link plugSha Identifier
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:lpad(str, len)
|
function! s:lpad(str, len)
|
||||||
|
@ -287,7 +292,9 @@ function! s:prepare()
|
||||||
%d
|
%d
|
||||||
else
|
else
|
||||||
vertical topleft new
|
vertical topleft new
|
||||||
noremap <silent> <buffer> q :q<cr>
|
nnoremap <silent> <buffer> q :q<cr>
|
||||||
|
nnoremap <silent> <buffer> D :PlugDiff<cr>
|
||||||
|
nnoremap <silent> <buffer> S :PlugStatus<cr>
|
||||||
let b:plug = 1
|
let b:plug = 1
|
||||||
let s:plug_win = winnr()
|
let s:plug_win = winnr()
|
||||||
call s:assign_name()
|
call s:assign_name()
|
||||||
|
@ -762,6 +769,30 @@ function! s:status()
|
||||||
normal! gg
|
normal! gg
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! s:diff()
|
||||||
|
call s:prepare()
|
||||||
|
call append(0, 'Collecting updated changes ...')
|
||||||
|
|
||||||
|
for [k, v] in items(g:plugs)
|
||||||
|
if !isdirectory(v.dir)
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
|
||||||
|
execute 'cd '.substitute(v.dir, ' ', '\\ ', 'g')
|
||||||
|
let diff = system('git log --pretty=format:"%h %s (%cr)" "HEAD@{0}...HEAD@{1}"')
|
||||||
|
if !v:shell_error && !empty(diff)
|
||||||
|
call append(1, '')
|
||||||
|
call append(2, '- '.k.':')
|
||||||
|
call append(3, map(split(diff, '\n'), '" ". v:val'))
|
||||||
|
normal! gg
|
||||||
|
redraw
|
||||||
|
endif
|
||||||
|
cd -
|
||||||
|
endfor
|
||||||
|
|
||||||
|
call setline(1, 'Updated changes:')
|
||||||
|
endfunction
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
let &cpo = s:cpo_save
|
||||||
unlet s:cpo_save
|
unlet s:cpo_save
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user