Sfoglia il codice sorgente

Make cursor handling work with sections

Marco Hinz 12 anni fa
parent
commit
fd174b8f2f
1 ha cambiato i file con 8 aggiunte e 1 eliminazioni
  1. 8 1
      autoload/startify.vim

+ 8 - 1
autoload/startify.vim

@@ -32,6 +32,7 @@ else
         \ ]
 endif
 
+let s:secoff = type(s:lists[0]) == 3 ? len(s:lists[0]) : 0
 let s:section_header_lines = []
 
 " Init: autocmds {{{1
@@ -410,14 +411,20 @@ endfunction
 function! s:set_cursor() abort
   let s:oldline = exists('s:newline') ? s:newline : 5
   let s:newline = line('.')
-  let headoff   = s:headoff + 2
+  let headoff   = s:headoff + 2 + s:secoff
 
   " going down
   if s:newline > s:oldline
+    while index(s:section_header_lines, s:newline) != -1
+      let s:newline += 1
+    endwhile
     if empty(getline(s:newline)) | let s:newline += 1         | endif
     if s:newline > s:lastline    | let s:newline = s:lastline | endif
   " going up
   elseif s:newline < s:oldline
+    while index(s:section_header_lines, s:newline) != -1
+      let s:newline -= 1
+    endwhile
     if empty(getline(s:newline)) | let s:newline -= 1      | endif
     if s:newline < headoff       | let s:newline = headoff | endif
   endif