Skip to content

Commit

Permalink
New option: g:startify_session_autoload
Browse files Browse the repository at this point in the history
  • Loading branch information
mhinz committed Aug 10, 2013
1 parent fd7c52a commit f8c9b7d
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 18 deletions.
42 changes: 24 additions & 18 deletions autoload/startify.vim
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,15 @@ let g:autoloaded_startify = 1
let s:numfiles = get(g:, 'startify_files_number', 10)
let s:show_special = get(g:, 'startify_enable_special', 1)
let s:restore_position = get(g:, 'startify_restore_position')

let s:session_dir = resolve(expand(get(g:, 'startify_session_dir',
let s:session_dir = resolve(expand(get(g:, 'startify_session_dir',
\ has('win32') ? '$HOME\vimfiles\session' : '~/.vim/session')))

let s:chdir = (get(g:, 'startify_change_to_dir', 1) ? '<bar> if isdirectory(expand("%")) <bar> lcd % <bar> else <bar> lcd %:h <bar> endif' : '') .'<cr>'
" Function: #get_separator {{{1
function! startify#get_separator() abort
return !exists('+shellslash') || &shellslash ? '/' : '\'
endfunction

let s:sep = startify#get_separator()

" Function: #insane_in_the_membrane {{{1
function! startify#insane_in_the_membrane() abort
Expand Down Expand Up @@ -49,7 +53,7 @@ function! startify#insane_in_the_membrane() abort
endif

if get(g:, 'startify_session_detection', 1) && filereadable('Session.vim')
call append('$', [' [0] Session.vim', ''])
call append('$', [' [0] '. getcwd() . s:sep .'Session.vim', ''])
execute 'nnoremap <buffer> 0 :source Session.vim<cr>'
let cnt = 1
endif
Expand Down Expand Up @@ -96,7 +100,7 @@ function! startify#session_load(...) abort
echo 'There are no sessions...'
return
endif
let spath = s:session_dir . startify#get_separator() . (exists('a:1')
let spath = s:session_dir . s:sep . (exists('a:1')
\ ? a:1
\ : input('Load this session: ', fnamemodify(v:this_session, ':t'), 'custom,startify#session_list_as_string'))
\ | redraw
Expand Down Expand Up @@ -133,7 +137,7 @@ function! startify#session_save(...) abort
return
endif
endif
let spath = s:session_dir . startify#get_separator() . sname
let spath = s:session_dir . s:sep . sname
if !filereadable(spath)
execute 'mksession '. fnameescape(spath) | echo 'Session saved under: '. spath
return
Expand All @@ -155,7 +159,7 @@ function! startify#session_delete(...) abort
echo 'There are no sessions...'
return
endif
let spath = s:session_dir . startify#get_separator() . (exists('a:1')
let spath = s:session_dir . s:sep . (exists('a:1')
\ ? a:1
\ : input('Delete this session: ', fnamemodify(v:this_session, ':t'), 'custom,startify#session_list_as_string'))
\ | redraw
Expand All @@ -181,11 +185,6 @@ function! startify#session_list_as_string(lead, ...) abort
return join(map(split(globpath(s:session_dir, '*'.a:lead.'*'), '\n'), 'fnamemodify(v:val, ":t")'), "\n")
endfunction

" Function: #get_separator {{{1
function! startify#get_separator() abort
return !exists('+shellslash') || &shellslash ? '/' : '\'
endfunction

" Function: s:show_dir {{{1
function! s:show_dir(cnt) abort
let cnt = a:cnt
Expand Down Expand Up @@ -246,7 +245,7 @@ function! s:show_files(cnt) abort
let index = s:get_index_as_string(cnt)

call append('$', ' ['. index .']'. repeat(' ', (3 - strlen(index))) . fname)
execute 'nnoremap <buffer>' index ':edit' fnameescape(fname) s:chdir
execute 'nnoremap <buffer>' index ':edit' fnameescape(fname) '<bar> call <sid>check_user_options()<cr>'

let cnt += 1
let num -= 1
Expand Down Expand Up @@ -291,7 +290,7 @@ function! s:show_bookmarks(cnt) abort
let index = s:get_index_as_string(cnt)

call append('$', ' ['. index .']'. repeat(' ', (3 - strlen(index))) . fname)
execute 'nnoremap <buffer>' index ':edit' fnameescape(fname) s:chdir
execute 'nnoremap <buffer>' index ':edit' fnameescape(fname) '<bar> call <sid>check_user_options()<cr>'
endfor
endif

Expand Down Expand Up @@ -377,6 +376,7 @@ function! s:open_buffers(cword) abort

for val in values(s:marked)
let [path, type] = val[1:2]

" open in split
if type == 'S'
if line2byte('$') == -1
Expand All @@ -395,7 +395,8 @@ function! s:open_buffers(cword) abort
else
execute 'edit' path
endif
call s:chdir()

call s:check_user_options()
endfor

" remove markers for next instance of :Startify
Expand All @@ -408,9 +409,14 @@ function! s:open_buffers(cword) abort
endif
endfunction

" Function: s:chdir {{{1
function! s:chdir() abort
if get(g:, 'startify_change_to_dir', 1)
" Function: s:check_user_options {{{1
function! s:check_user_options() abort
let path = expand('%') . s:sep .'Session.vim'
" autoload session
if get(g:, 'startify_session_autoload') && filereadable(path)
execute 'source' path
" change directory
elseif get(g:, 'startify_change_to_dir', 1)
if isdirectory(expand('%'))
lcd %
else
Expand Down
9 changes: 9 additions & 0 deletions doc/startify.txt
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,15 @@ The number of files to list.
When the file Session.vim is found in the current directory, it will be shown at
the top of all lists as entry [0].

============-

let g:startify_session_autoload = 0

If you bookmark a directory that contains a Session.vim and this option is
enabled, that session will be loaded automatically when you open the
directory.

Great way to create a portable project folder.

============-

Expand Down

0 comments on commit f8c9b7d

Please sign in to comment.