summaryrefslogtreecommitdiffstats
path: root/ftplugin/gitrebase.vim
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2019-12-07 12:21:37 +0100
committerAdam Stankiewicz <sheerun@sher.pl>2019-12-07 12:21:37 +0100
commit7a0f2d974f9ac5bc85607e8c769d3370dd18ac74 (patch)
tree5c2b955af8e0f2ed54442d9e938fad403148ffce /ftplugin/gitrebase.vim
parent15aeea662e0b08088ac7b6e3ee661c834e69106a (diff)
downloadvim-polyglot-4.1.2.tar.gz
vim-polyglot-4.1.2.zip
Updatev4.1.2
Diffstat (limited to 'ftplugin/gitrebase.vim')
-rw-r--r--ftplugin/gitrebase.vim19
1 files changed, 11 insertions, 8 deletions
diff --git a/ftplugin/gitrebase.vim b/ftplugin/gitrebase.vim
index 1395c8ab..70fed8f4 100644
--- a/ftplugin/gitrebase.vim
+++ b/ftplugin/gitrebase.vim
@@ -3,7 +3,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1
" Vim filetype plugin
" Language: git rebase --interactive
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2010 May 21
+" Last Change: 2016 Aug 29
" Only do this when not done yet for this buffer
if (exists("b:did_ftplugin"))
@@ -20,12 +20,15 @@ if !exists("b:undo_ftplugin")
endif
let b:undo_ftplugin = b:undo_ftplugin."|setl com< cms< fo< ml<"
-function! s:choose(word)
+function! s:choose(word) abort
s/^\(\w\+\>\)\=\(\s*\)\ze\x\{4,40\}\>/\=(strlen(submatch(1)) == 1 ? a:word[0] : a:word) . substitute(submatch(2),'^$',' ','')/e
endfunction
-function! s:cycle()
- call s:choose(get({'s':'edit','p':'squash','e':'reword','r':'fixup'},getline('.')[0],'pick'))
+function! s:cycle(count) abort
+ let words = ['pick', 'edit', 'fixup', 'squash', 'reword', 'drop']
+ let index = index(map(copy(words), 'v:val[0]'), getline('.')[0])
+ let index = ((index < 0 ? 0 : index) + 10000 * len(words) + a:count) % len(words)
+ call s:choose(words[index])
endfunction
command! -buffer -bar -range Pick :<line1>,<line2>call s:choose('pick')
@@ -34,16 +37,16 @@ command! -buffer -bar -range Edit :<line1>,<line2>call s:choose('edit')
command! -buffer -bar -range Reword :<line1>,<line2>call s:choose('reword')
command! -buffer -bar -range Fixup :<line1>,<line2>call s:choose('fixup')
command! -buffer -bar -range Drop :<line1>,<line2>call s:choose('drop')
-command! -buffer -bar Cycle :call s:cycle()
-" The above are more useful when they are mapped; for example:
-"nnoremap <buffer> <silent> S :Cycle<CR>
+command! -buffer -count=1 -bar -bang Cycle call s:cycle(<bang>0 ? -<count> : <count>)
if exists("g:no_plugin_maps") || exists("g:no_gitrebase_maps")
finish
endif
nnoremap <buffer> <expr> K col('.') < 7 && expand('<Lt>cword>') =~ '\X' && getline('.') =~ '^\w\+\s\+\x\+\>' ? 'wK' : 'K'
+nnoremap <buffer> <silent> <C-A> :<C-U><C-R>=v:count1<CR>Cycle<CR>
+nnoremap <buffer> <silent> <C-X> :<C-U><C-R>=v:count1<CR>Cycle!<CR>
-let b:undo_ftplugin = b:undo_ftplugin . "|nunmap <buffer> K"
+let b:undo_ftplugin = b:undo_ftplugin . "|exe 'nunmap <buffer> K'|exe 'nunmap <buffer> <C-A>'|exe 'nunmap <buffer> <C-X>'"
endif