|
|
@@ -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
|
|
|
@@ -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
|
|
|
@@ -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
|
|
|
@@ -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
|
|
|
@@ -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
|
|
|
@@ -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
|
|
|
@@ -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
|
|
|
@@ -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
|
|
|
|
|
|
@@ -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
|
|
|
@@ -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
|
|
|
@@ -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
|