From 0bc4aae6f4e5c954f6d20a9320c6cf1fce95d5f9 Mon Sep 17 00:00:00 2001 From: Marco Hinz Date: Wed, 19 Mar 2014 08:54:00 +0100 Subject: [PATCH] Make dir listing recursive Closes #63. --- autoload/startify.vim | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/autoload/startify.vim b/autoload/startify.vim index 2e491df..1eeaef5 100644 --- a/autoload/startify.vim +++ b/autoload/startify.vim @@ -263,36 +263,34 @@ endfunction " Function: s:show_dir {{{1 function! s:show_dir(cnt) abort - let cnt = a:cnt - let num = s:numfiles - let files = [] + let cnt = a:cnt + let num = s:numfiles + let entries = {} - for fname in split(glob('.\=*')) - if isdirectory(fname) - \ || (exists('g:startify_skiplist') && s:is_in_skiplist(resolve(fnamemodify(fname, ':p')))) - continue - endif - - call add(files, [getftime(fname), fname]) - endfor + let cwd = getcwd() + let files = filter(map(copy(v:oldfiles), 'resolve(fnamemodify(v:val, ":p"))'), 'match(v:val, cwd) == 0') if !empty(files) if exists('s:last_message') call s:print_section_header() endif - function! l:compare(x, y) - return a:y[0] - a:x[0] - endfunction + for fname in files + let fullpath = resolve(fnamemodify(fname, ':p')) - call sort(files, 'l:compare') + " filter duplicates, bookmarks and entries from the skiplist + if has_key(entries, fullpath) + \ || !filereadable(fullpath) + \ || (exists('g:startify_skiplist') && s:is_in_skiplist(fullpath)) + \ || (exists('g:startify_bookmarks') && s:is_bookmark(fullpath)) + continue + endif - for items in files + let entries[fullpath] = 1 let index = s:get_index_as_string(cnt) - let fname = items[1] call append('$', ' ['. index .']'. repeat(' ', (3 - strlen(index))) . fname) - execute 'nnoremap ' index ':edit' fnameescape(fname) '' + execute 'nnoremap ' index ':edit' fnameescape(fname) ' call check_user_options()' let cnt += 1 let num -= 1 @@ -303,9 +301,9 @@ function! s:show_dir(cnt) abort endfor call append('$', '') - endif - return cnt + return cnt + endif endfunction " Function: s:show_files {{{1