diff options
| -rw-r--r-- | autoload/gitcha.vim | 32 | ||||
| -rw-r--r-- | ftplugin/gitcommit/gitcha.vim | 35 | 
2 files changed, 33 insertions, 34 deletions
| diff --git a/autoload/gitcha.vim b/autoload/gitcha.vim new file mode 100644 index 0000000..6defd61 --- /dev/null +++ b/autoload/gitcha.vim @@ -0,0 +1,32 @@ +let s:old_completefunc = &completefunc + +function! gitcha#GitSHAComplete(findstart, base) +	if a:findstart +		" locate the start of the word +		let line = getline('.') +		let start = col('.') - 1 +		while start > 0 && line[start - 1] =~ '\a' +			let start -= 1 +		endwhile +		return start +	endif + +	" Restore user completion function +	let &completefunc = s:old_completefunc + +	" Match Git SHAs in the current repository +	let matches = [] +	let revs = system('git rev-list --all') +	for m in split(revs) +		if m =~ '^' . a:base +			call add(matches, m) +		endif +	endfor + +	return matches +endfunction + +function! gitcha#StartGitSHACompletion() +	set completefunc=gitcha#GitSHAComplete +	return "\<C-x>\<C-u>" +endfunction diff --git a/ftplugin/gitcommit/gitcha.vim b/ftplugin/gitcommit/gitcha.vim index e08f2e0..ecd1e90 100644 --- a/ftplugin/gitcommit/gitcha.vim +++ b/ftplugin/gitcommit/gitcha.vim @@ -1,34 +1 @@ -let s:old_completefunc = &completefunc - -function! GitSHAComplete(findstart, base) -	if a:findstart -		" locate the start of the word -		let line = getline('.') -		let start = col('.') - 1 -		while start > 0 && line[start - 1] =~ '\a' -			let start -= 1 -		endwhile -		return start -	endif - -	" Restore user completion function -	let &completefunc = s:old_completefunc - -	" Match Git SHAs in the current repository -	let matches = [] -	let revs = system('git rev-list --all') -	for m in split(revs) -		if m =~ '^' . a:base -			call add(matches, m) -		endif -	endfor - -	return matches -endfunction - -function! StartGitSHACompletion() -	set completefunc=GitSHAComplete -	return "\<C-x>\<C-u>" -endfunction - -inoremap <expr> <C-x><C-s> StartGitSHACompletion() +inoremap <expr> <C-x><C-s> gitcha#StartGitSHACompletion() | 
