diff --git a/plugin/startify.vim b/plugin/startify.vim index a6d888b..de777cf 100644 --- a/plugin/startify.vim +++ b/plugin/startify.vim @@ -89,10 +89,27 @@ function! s:start() abort nnoremap :normal autocmd! startify * - autocmd startify CursorMoved call cursor(line('.') < 4 ? 4 : 0, 5) + autocmd startify CursorMoved call s:set_cursor() autocmd startify BufLeave autocmd! startify * call cursor(6, 5) endfunction +" Function: s:set_cursor {{{1 +function! s:set_cursor() abort + let s:line_old = exists('s:line_new') ? s:line_new : 5 + let s:line_new = line('.') + if empty(getline('.')) + if s:line_new > s:line_old + call cursor(s:line_new + 1, 5) " going down + let s:line_new += 1 + else + call cursor((s:line_new < 4 ? 4 : s:line_new - 1), 5) " going up + let s:line_new -= 1 + endif + else + call cursor((s:line_new < 4 ? 4 : 0), 5) " hold cursor in column + endif +endfunction + " vim: et sw=2 sts=2