aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vim/autoload/session_lazy.vim25
-rw-r--r--vim/plugin/session_lazy.vim23
2 files changed, 48 insertions, 0 deletions
diff --git a/vim/autoload/session_lazy.vim b/vim/autoload/session_lazy.vim
new file mode 100644
index 00000000..59caae37
--- /dev/null
+++ b/vim/autoload/session_lazy.vim
@@ -0,0 +1,25 @@
+" Choose the filename we'll use for these sessions
+let g:session_lazy#active = 0
+if !exists('g:session_lazy#filename')
+ let g:session_lazy#filename = 'Session.vim'
+endif
+
+" If we started with no arguments, there's no active session, and there's a
+" session file sitting right there, read it
+function! session_lazy#Thaw()
+ if !argc()
+ \ && v:this_session ==# ''
+ \ && filereadable(g:session_lazy#filename)
+ let g:session_lazy#active = 1
+ execute 'source ' . g:session_lazy#filename
+ endif
+endfunction
+
+" Before we quit, if we opened this with a session automatically, save it back
+" again, into the same file
+function! session_lazy#Freeze()
+ if g:session_lazy#active
+ \ && g:session_lazy#filename ==# fnamemodify(v:this_session, ':t')
+ execute 'mksession! ' . g:session_lazy#filename
+ endif
+endfunction
diff --git a/vim/plugin/session_lazy.vim b/vim/plugin/session_lazy.vim
new file mode 100644
index 00000000..d40cb670
--- /dev/null
+++ b/vim/plugin/session_lazy.vim
@@ -0,0 +1,23 @@
+"
+" session_lazy.vim: Automatically resume a session from the current directory,
+" if no other filename arguments were passed to Vim.
+"
+" Author: Tom Ryder <tom@sanctum.geek.nz>
+" License: Same as Vim itself
+"
+if exists('g:loaded_session_lazy') || &compatible
+ finish
+endif
+if !has('autocmd') || v:version < 700
+ finish
+endif
+let g:loaded_session_lazy = 1
+
+" Set up
+augroup session
+ autocmd!
+ autocmd VimEnter *
+ \ call session_lazy#Thaw()
+ autocmd VimLeavePre *
+ \ call session_lazy#Freeze()
+augroup END