Update recently used files on the fly

Startify depends on v:oldfiles which lists recently used files (taken from the
viminfo file). But viminfo only gets updated once in a session: at exiting
Vim. Thus when you worked in a Vim instance for some time and opened multiple
new buffers, v:oldfiles (and therefore :Startify) wouldn't show the most
recently used files anymore.

Luckily v:oldfiles is editable, so now, each new buffer simply prepends its
associated filename to it, making :Startify always up-to-date.

References #148.
This commit is contained in:
Marco Hinz 2015-02-11 14:58:10 +01:00
parent d3d5ea68c4
commit 5a60580711
2 changed files with 32 additions and 33 deletions

View file

@ -385,7 +385,7 @@ A hardcoded example:
\ ] \ ]
< <
Also have a look at |startify-faq-09|. Also have a look at |startify-faq-08|.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
*g:startify_custom_footer* *g:startify_custom_footer*
@ -520,15 +520,13 @@ FAQ *startify-faq*
|startify-faq-01| I don't want the start screen to use cursorline! |startify-faq-01| I don't want the start screen to use cursorline!
|startify-faq-02| Recent files aren't shown! |startify-faq-02| Recent files aren't shown!
|startify-faq-03| Most recently used files don't seem to get updated |startify-faq-03| I have broken colors when using sessions!
at :Startify! |startify-faq-04| How to disable common but unimportant files?
|startify-faq-04| I have broken colors when using sessions! |startify-faq-05| CtrlP or NERDTree open a split in Startify!
|startify-faq-05| How to disable common but unimportant files? |startify-faq-06| How do I get both NERDTree and Startify working at
|startify-faq-06| CtrlP or NERDTree open a split in Startify!
|startify-faq-07| How do I get both NERDTree and Startify working at
startup? startup?
|startify-faq-08| The session autoload feature is not working! |startify-faq-07| The session autoload feature is not working!
|startify-faq-09| How do I center my header/footer? |startify-faq-08| How do I center my header/footer?
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
*startify-faq-01* *startify-faq-01*
@ -565,12 +563,6 @@ exactly.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
*startify-faq-03* *startify-faq-03*
Most recently used files don't seem to get updated at :Startify!~
Vim loads the list from viminfo only once, at startup.
------------------------------------------------------------------------------
*startify-faq-04*
I have broken colors when using sessions!~ I have broken colors when using sessions!~
Nothing this plugin could do about. Try playing around with 'sessionoptions'. Nothing this plugin could do about. Try playing around with 'sessionoptions'.
@ -583,7 +575,7 @@ Some people swear it works for them with these settings:
set sessionoptions=blank,curdir,folds,help,tabpages,winpos set sessionoptions=blank,curdir,folds,help,tabpages,winpos
< <
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
*startify-faq-05* *startify-faq-04*
How to disable common but unimportant files?~ How to disable common but unimportant files?~
Use the skiplist. Personally I use: Use the skiplist. Personally I use:
@ -596,7 +588,7 @@ Use the skiplist. Personally I use:
\ ] \ ]
< <
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
*startify-faq-06* *startify-faq-05*
CtrlP or NERDTree open a split in Startify!~ CtrlP or NERDTree open a split in Startify!~
Put this in your vimrc: Put this in your vimrc:
@ -609,7 +601,7 @@ solution:
let g:ctrlp_reuse_window = 'startify' let g:ctrlp_reuse_window = 'startify'
< <
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
*startify-faq-07* *startify-faq-06*
How do I get both NERDTree and Startify working at startup?~ How do I get both NERDTree and Startify working at startup?~
Put this in your vimrc: Put this in your vimrc:
@ -622,7 +614,7 @@ Put this in your vimrc:
\ | endif \ | endif
< <
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
*startify-faq-08* *startify-faq-07*
The session autoload feature is not working!~ The session autoload feature is not working!~
Do you have NERDTree installed by any chance? If so, try this: Do you have NERDTree installed by any chance? If so, try this:
@ -630,7 +622,7 @@ Do you have NERDTree installed by any chance? If so, try this:
let NERDTreeHijackNetrw = 0 let NERDTreeHijackNetrw = 0
< <
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
*startify-faq-09* *startify-faq-08*
How do I center my header/footer?~ How do I center my header/footer?~
Try something along these lines: Try something along these lines:

View file

@ -12,25 +12,32 @@ let g:loaded_startify = 1
augroup startify augroup startify
if !get(g:, 'startify_disable_at_vimenter') if !get(g:, 'startify_disable_at_vimenter')
autocmd VimEnter * nested autocmd VimEnter * nested call s:genesis()
\ if !argc() && (line2byte('$') == -1) && (v:progname =~? '^[-gmnq]\=vim\=x\=\%[\.exe]$')
\ | if get(g:, 'startify_session_autoload') && filereadable('Session.vim')
\ | source Session.vim
\ | else
\ | call startify#insane_in_the_membrane()
\ | endif
\ | endif
\ | autocmd! startify VimEnter
endif endif
if get(g:, 'startify_session_persistence') if get(g:, 'startify_session_persistence')
autocmd startify VimLeave * autocmd VimLeave * call s:extinction()
\ if exists('v:this_session') && filewritable(v:this_session)
\ | call startify#session_write(fnameescape(v:this_session))
\ | endif
endif endif
augroup END augroup END
function! s:genesis()
if !argc() && (line2byte('$') == -1) && (v:progname =~? '^[-gmnq]\=vim\=x\=\%[\.exe]$')
if get(g:, 'startify_session_autoload') && filereadable('Session.vim')
source Session.vim
else
call startify#insane_in_the_membrane()
endif
endif
autocmd startify BufRead * if exists('v:oldfiles') | call insert(v:oldfiles, expand('<afile>'), 0) | endif
autocmd! startify VimEnter
endfunction
function! s:extinction()
if exists('v:this_session') && filewritable(v:this_session)
call startify#session_write(fnameescape(v:this_session))
endif
endfunction
command! -nargs=? -bar -complete=customlist,startify#session_list SSave call startify#session_save(<f-args>) command! -nargs=? -bar -complete=customlist,startify#session_list SSave call startify#session_save(<f-args>)
command! -nargs=? -bar -complete=customlist,startify#session_list SLoad call startify#session_load(<f-args>) command! -nargs=? -bar -complete=customlist,startify#session_list SLoad call startify#session_load(<f-args>)
command! -nargs=? -bar -complete=customlist,startify#session_list SDelete call startify#session_delete(<f-args>) command! -nargs=? -bar -complete=customlist,startify#session_list SDelete call startify#session_delete(<f-args>)