Преглед изворни кода

make cursor skip blank lines

Marco Hinz пре 12 година
родитељ
комит
9c2a2f6297
1 измењених фајлова са 18 додато и 1 уклоњено
  1. 18 1
      plugin/startify.vim

+ 18 - 1
plugin/startify.vim

@@ -89,10 +89,27 @@ function! s:start() abort
   nnoremap <buffer><silent> <cr> :normal <c-r><c-w><cr>
 
   autocmd! startify *
-  autocmd startify CursorMoved <buffer> call cursor(line('.') < 4 ? 4 : 0, 5)
+  autocmd startify CursorMoved <buffer> call s:set_cursor()
   autocmd startify BufLeave <buffer> 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