Store and restore scrolloff value

Having &scrolloff > 0 caused an issue where backwards searches would
scroll during the searchpos() call and hide parts of the buffer. This
fix temporarily sets scrolloff to 0 during function execution.
This commit is contained in:
Kim Silkebækken 2011-03-28 16:41:20 +02:00
parent 07a20e382d
commit 98384b9e49

View File

@ -260,6 +260,10 @@
let targets = []
let visualmode = a:0 > 0 ? a:1 : ''
" Store original scrolloff value
let scrolloff = &scrolloff
setl scrolloff=0
" Find motion targets
while 1
let search_direction = (a:direction == 1 ? 'b' : '')
@ -291,6 +295,9 @@
" Restore cursor position
call setpos('.', [0, orig_pos[0], orig_pos[1]])
" Restore original scrolloff value
execute 'setl scrolloff=' . scrolloff
return
endif
@ -349,6 +356,9 @@
call setpos('.', [0, orig_pos[0], orig_pos[1]])
endif
" Restore original scrolloff value
execute 'setl scrolloff=' . scrolloff
return
else
if ! empty(visualmode)
@ -371,6 +381,9 @@
call setpos('.', [0, coords[0], coords[1]])
endif
" Restore original scrolloff value
execute 'setl scrolloff=' . scrolloff
call <SID>Message('Jumping to [' . coords[0] . ', ' . coords[1] . ']')
endif
endfunction " }}}