|
1 | 1 | " Vim script
|
2 | 2 | " Author: Peter Odding
|
3 |
| -" Last Change: May 4, 2013 |
| 3 | +" Last Change: May 5, 2013 |
4 | 4 | " URL: http://peterodding.com/code/vim/session/
|
5 | 5 |
|
6 |
| -let g:xolox#session#version = '1.7.3' |
| 6 | +let g:xolox#session#version = '1.8' |
7 | 7 |
|
8 | 8 | call xolox#misc#compat#check('session', 2)
|
9 | 9 |
|
@@ -246,6 +246,7 @@ endfunction
|
246 | 246 | " Automatic commands to manage the default session. {{{1
|
247 | 247 |
|
248 | 248 | function! xolox#session#auto_load() " {{{2
|
| 249 | + " Automatically load the default / last used session when Vim starts. |
249 | 250 | if g:session_autoload == 'no'
|
250 | 251 | return
|
251 | 252 | endif
|
@@ -313,7 +314,31 @@ function! xolox#session#auto_save() " {{{2
|
313 | 314 | endif
|
314 | 315 | endfunction
|
315 | 316 |
|
| 317 | +function! xolox#session#auto_save_periodic() " {{{2 |
| 318 | + " Automatically save the session every few minutes? |
| 319 | + let interval = g:session_autosave_periodic * 60 |
| 320 | + let next_save = s:session_last_flushed + interval |
| 321 | + if next_save < localtime() |
| 322 | + call xolox#misc#msg#debug("session.vim %s: Skipping this beat of 'updatetime' (it's not our time yet).", g:xolox#session#version) |
| 323 | + else |
| 324 | + call xolox#misc#msg#debug("session.vim %s: This is our beat of 'updatetime'!", g:xolox#session#version) |
| 325 | + let name = s:get_name('', 0) |
| 326 | + if !empty(name) |
| 327 | + call xolox#session#save_cmd(name, '') |
| 328 | + endif |
| 329 | + endif |
| 330 | +endfunction |
| 331 | + |
| 332 | +function! s:flush_session() |
| 333 | + let s:session_last_flushed = localtime() |
| 334 | +endfunction |
| 335 | + |
| 336 | +if !exists('s:session_last_flushed') |
| 337 | + call s:flush_session() |
| 338 | +endif |
| 339 | + |
316 | 340 | function! xolox#session#auto_unlock() " {{{2
|
| 341 | + " Automatically unlock all sessions when Vim quits. |
317 | 342 | let i = 0
|
318 | 343 | while i < len(s:lock_files)
|
319 | 344 | let lock_file = s:lock_files[i]
|
@@ -359,6 +384,7 @@ function! xolox#session#open_cmd(name, bang) abort " {{{2
|
359 | 384 | call s:lock_session(path)
|
360 | 385 | execute 'source' fnameescape(path)
|
361 | 386 | call s:last_session_persist(name)
|
| 387 | + call s:flush_session() |
362 | 388 | call xolox#misc#timer#stop("session.vim %s: Opened %s session in %s.", g:xolox#session#version, string(name), starttime)
|
363 | 389 | call xolox#misc#msg#info("session.vim %s: Opened %s session from %s.", g:xolox#session#version, string(name), fnamemodify(path, ':~'))
|
364 | 390 | endif
|
@@ -395,6 +421,7 @@ function! xolox#session#save_cmd(name, bang) abort " {{{2
|
395 | 421 | call xolox#misc#msg#warn(msg, g:xolox#session#version, string(name), friendly_path)
|
396 | 422 | else
|
397 | 423 | call s:last_session_persist(name)
|
| 424 | + call s:flush_session() |
398 | 425 | call xolox#misc#timer#stop("session.vim %s: Saved %s session in %s.", g:xolox#session#version, string(name), starttime)
|
399 | 426 | call xolox#misc#msg#info("session.vim %s: Saved %s session to %s.", g:xolox#session#version, string(name), friendly_path)
|
400 | 427 | let v:this_session = path
|
@@ -458,6 +485,7 @@ function! xolox#session#close_cmd(bang, silent, save_allowed) abort " {{{2
|
458 | 485 | execute s:oldcwd
|
459 | 486 | unlet s:oldcwd
|
460 | 487 | endif
|
| 488 | + call s:flush_session() |
461 | 489 | if v:this_session == ''
|
462 | 490 | if !a:silent
|
463 | 491 | let msg = "session.vim %s: Closed session."
|
|
0 commit comments