From 09da65c7face39e65deb0f712e9cd38f03bd21f8 Mon Sep 17 00:00:00 2001 From: Alex Rodriguez Date: Mon, 21 Apr 2014 14:07:19 -0400 Subject: [PATCH 1/5] added 'silent' to put command to suppress output --- plugin/sessionman.vim | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/plugin/sessionman.vim b/plugin/sessionman.vim index d9ab64e..402cae3 100644 --- a/plugin/sessionman.vim +++ b/plugin/sessionman.vim @@ -208,19 +208,19 @@ function! s:ListSessions() nnoremap x :call EditSessionExtra(getline('.')) syn match Comment "^\".*" - put ='\"-----------------------------------------------------' - put ='\" q - close session list' - put ='\" o, , <2-LeftMouse> - open session' - put ='\" d - delete session' - put ='\" e - edit session' - put ='\" x - edit extra session script' - put ='\"-----------------------------------------------------' - put ='' + silent put ='\"-----------------------------------------------------' + silent put ='\" q - close session list' + silent put ='\" o, , <2-LeftMouse> - open session' + silent put ='\" d - delete session' + silent put ='\" e - edit session' + silent put ='\" x - edit extra session script' + silent put ='\"-----------------------------------------------------' + silent put ='' let l = line(".") - let sessions = substitute(glob(s:sessions_path . '/*'), '\\', '/', 'g') - let sessions = substitute(sessions, "\\(^\\|\n\\)" . s:sessions_path . '/', '\1', 'g') - let sessions = substitute(sessions, "\n[^\n]\\+x\\.vim\n", '\n', 'g') + let sessions = substitute(glob(s:sessions_path . '/*'), '\\', '/', 'ge') + let sessions = substitute(sessions, "\\(^\\|\n\\)" . s:sessions_path . '/', '\1', 'ge') + let sessions = substitute(sessions, "\n[^\n]\\+x\\.vim\n", '\n', 'ge') if sessions == '' syn match Error "^\" There.*" let sessions = '" There are no saved sessions' From f57e3c3152a571fbc3c22da950d1946ea8839071 Mon Sep 17 00:00:00 2001 From: Alex Rodriguez Date: Sat, 20 Feb 2021 19:55:22 -0800 Subject: [PATCH 2/5] Add sessionexists --- plugin/sessionman.vim | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plugin/sessionman.vim b/plugin/sessionman.vim index 402cae3..a596c92 100644 --- a/plugin/sessionman.vim +++ b/plugin/sessionman.vim @@ -104,6 +104,12 @@ endfunction "============================================================================" +function! g:SessionExists(name) + let session_path = s:sessions_path . '/' . a:name + echom "looking for " . session_path + return filereadable(session_path) +endfunc + function! s:OpenSession(name) if a:name != '' && a:name[0] != '"' call s:RestoreDefaults() From 32c79c9f6c48bf19fbaa469707a4aae52f58c122 Mon Sep 17 00:00:00 2001 From: Alex Rodriguez Date: Sat, 20 Feb 2021 20:02:37 -0800 Subject: [PATCH 3/5] remove echo --- plugin/sessionman.vim | 1 - 1 file changed, 1 deletion(-) diff --git a/plugin/sessionman.vim b/plugin/sessionman.vim index a596c92..c0fd71d 100644 --- a/plugin/sessionman.vim +++ b/plugin/sessionman.vim @@ -106,7 +106,6 @@ endfunction function! g:SessionExists(name) let session_path = s:sessions_path . '/' . a:name - echom "looking for " . session_path return filereadable(session_path) endfunc From dc45d64096e36690d4911fe5c02c1901455ebd59 Mon Sep 17 00:00:00 2001 From: Alex Rodriguez Date: Mon, 11 Dec 2023 15:58:52 -0800 Subject: [PATCH 4/5] Update sessionman.vim --- plugin/sessionman.vim | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/plugin/sessionman.vim b/plugin/sessionman.vim index c0fd71d..7264537 100644 --- a/plugin/sessionman.vim +++ b/plugin/sessionman.vim @@ -72,22 +72,24 @@ "============================================================================" if !has('mksession') || exists('loaded_sessionman') - finish + finish endif let loaded_sessionman = 1 if !exists('sessionman_save_on_exit') - let sessionman_save_on_exit = 1 + let sessionman_save_on_exit = 1 endif let s:cpo_save = &cpo set cpo&vim -if has("win32") || has("dos32") || has("dos16") || has("os2") - let s:sessions_path = ($HOME != '') ? $HOME . '/vimfiles' : ($APPDATA != '') ? $APPDATA . '/Vim' : $VIM - let s:sessions_path = substitute(s:sessions_path, '\\', '/', 'g') . '/sessions' +if exists('g:sessionman_path') + let s:sessions_path = g:sessionman_path +elseif has("win32") || has("dos32") || has("dos16") || has("os2") + let s:sessions_path = ($HOME != '') ? $HOME . '/vimfiles' : ($APPDATA != '') ? $APPDATA . '/Vim' : $VIM + let s:sessions_path = substitute(s:sessions_path, '\\', '/', 'g') . '/sessions' else - let s:sessions_path = $HOME . '/.vim/sessions' + let s:sessions_path = $HOME . '/.vim/sessions' endif let s:et_save = &et @@ -97,9 +99,9 @@ let s:ts_save = &ts "============================================================================" function! s:RestoreDefaults() - let &et = s:et_save - let &sw = s:sw_save - let &ts = s:ts_save + let &et = s:et_save + let &sw = s:sw_save + let &ts = s:ts_save endfunction "============================================================================" From 40b8956eb9d24437144c1e5a3562475ea1c49096 Mon Sep 17 00:00:00 2001 From: Alex Rodriguez Date: Mon, 11 Dec 2023 16:30:42 -0800 Subject: [PATCH 5/5] Cleanup formatting --- plugin/sessionman.vim | 268 +++++++++++++++++++++--------------------- 1 file changed, 133 insertions(+), 135 deletions(-) diff --git a/plugin/sessionman.vim b/plugin/sessionman.vim index 7264537..561de2e 100644 --- a/plugin/sessionman.vim +++ b/plugin/sessionman.vim @@ -107,180 +107,180 @@ endfunction "============================================================================" function! g:SessionExists(name) - let session_path = s:sessions_path . '/' . a:name - return filereadable(session_path) + let session_path = s:sessions_path . '/' . a:name + return filereadable(session_path) endfunc function! s:OpenSession(name) - if a:name != '' && a:name[0] != '"' - call s:RestoreDefaults() - if has('cscope') - silent! cscope kill -1 - endif - try - set eventignore=all - execute 'silent! 1,' . bufnr('$') . 'bwipeout!' - let n = bufnr('%') - execute 'silent! so ' . s:sessions_path . '/' . a:name - execute 'silent! bwipeout! ' . n - finally - set eventignore= - doautoall BufRead - doautoall FileType - doautoall BufEnter - doautoall BufWinEnter - doautoall TabEnter - doautoall SessionLoadPost - endtry - if has('cscope') - silent! cscope add . - endif - let g:LAST_SESSION = a:name - endif + if a:name != '' && a:name[0] != '"' + call s:RestoreDefaults() + if has('cscope') + silent! cscope kill -1 + endif + try + set eventignore=all + execute 'silent! 1,' . bufnr('$') . 'bwipeout!' + let n = bufnr('%') + execute 'silent! so ' . s:sessions_path . '/' . a:name + execute 'silent! bwipeout! ' . n + finally + set eventignore= + doautoall BufRead + doautoall FileType + doautoall BufEnter + doautoall BufWinEnter + doautoall TabEnter + doautoall SessionLoadPost + endtry + if has('cscope') + silent! cscope add . + endif + let g:LAST_SESSION = a:name + endif endfunction "============================================================================" function! s:CloseSession() - call s:RestoreDefaults() - execute 'silent! 1,' . bufnr('$') . 'bwipeout!' - if has('cscope') - silent! cscope kill -1 - endif - unlet! g:LAST_SESSION - let v:this_session = '' + call s:RestoreDefaults() + execute 'silent! 1,' . bufnr('$') . 'bwipeout!' + if has('cscope') + silent! cscope kill -1 + endif + unlet! g:LAST_SESSION + let v:this_session = '' endfunction "============================================================================" function! s:DeleteSession(name) - if a:name != '' && a:name[0] != '"' - let save_go = &guioptions - set guioptions+=c - if confirm('Are you sure you want to delete "' . a:name . '" session?', "&Yes\n&No", 2) == 1 - setlocal modifiable - d - setlocal nomodifiable - if delete(s:sessions_path . '/' . a:name) != 0 - redraw | echohl ErrorMsg | echo 'Error deleting "' . a:name . '" session file' | echohl None - endif - endif - let &guioptions = save_go - endif + if a:name != '' && a:name[0] != '"' + let save_go = &guioptions + set guioptions+=c + if confirm('Are you sure you want to delete "' . a:name . '" session?', "&Yes\n&No", 2) == 1 + setlocal modifiable + d + setlocal nomodifiable + if delete(s:sessions_path . '/' . a:name) != 0 + redraw | echohl ErrorMsg | echo 'Error deleting "' . a:name . '" session file' | echohl None + endif + endif + let &guioptions = save_go + endif endfunction "============================================================================" function! s:EditSession(name) - if a:name != '' && a:name[0] != '"' - bwipeout! - execute 'silent! edit ' . s:sessions_path . '/' . a:name - set ft=vim - endif + if a:name != '' && a:name[0] != '"' + bwipeout! + execute 'silent! edit ' . s:sessions_path . '/' . a:name + set ft=vim + endif endfunction "============================================================================" function! s:EditSessionExtra(name) - if a:name != '' && a:name[0] != '"' - bwipeout! - let n = substitute(a:name, "\\.[^.]*$", '', '') - execute 'silent! edit ' . s:sessions_path . '/' . n . 'x.vim' - endif + if a:name != '' && a:name[0] != '"' + bwipeout! + let n = substitute(a:name, "\\.[^.]*$", '', '') + execute 'silent! edit ' . s:sessions_path . '/' . n . 'x.vim' + endif endfunction "============================================================================" function! s:ListSessions() - let w_sl = bufwinnr("__SessionList__") - if w_sl != -1 - execute w_sl . 'wincmd w' - return - endif - silent! split __SessionList__ - - " Mark the buffer as scratch - setlocal buftype=nofile - setlocal bufhidden=wipe - setlocal noswapfile - setlocal nowrap - setlocal nobuflisted - - nnoremap q :bwipeout! - nnoremap o :call OpenSession(getline('.')) - nnoremap :call OpenSession(getline('.')) - nnoremap <2-LeftMouse> :call OpenSession(getline('.')) - nnoremap d :call DeleteSession(getline('.')) - nnoremap e :call EditSession(getline('.')) - nnoremap x :call EditSessionExtra(getline('.')) - - syn match Comment "^\".*" - silent put ='\"-----------------------------------------------------' - silent put ='\" q - close session list' - silent put ='\" o, , <2-LeftMouse> - open session' - silent put ='\" d - delete session' - silent put ='\" e - edit session' - silent put ='\" x - edit extra session script' - silent put ='\"-----------------------------------------------------' - silent put ='' - let l = line(".") - - let sessions = substitute(glob(s:sessions_path . '/*'), '\\', '/', 'ge') - let sessions = substitute(sessions, "\\(^\\|\n\\)" . s:sessions_path . '/', '\1', 'ge') - let sessions = substitute(sessions, "\n[^\n]\\+x\\.vim\n", '\n', 'ge') - if sessions == '' - syn match Error "^\" There.*" - let sessions = '" There are no saved sessions' - endif - silent put =sessions - - 0,1d - execute l - setlocal nomodifiable - setlocal nospell + let w_sl = bufwinnr("__SessionList__") + if w_sl != -1 + execute w_sl . 'wincmd w' + return + endif + silent! split __SessionList__ + + " Mark the buffer as scratch + setlocal buftype=nofile + setlocal bufhidden=wipe + setlocal noswapfile + setlocal nowrap + setlocal nobuflisted + + nnoremap q :bwipeout! + nnoremap o :call OpenSession(getline('.')) + nnoremap :call OpenSession(getline('.')) + nnoremap <2-LeftMouse> :call OpenSession(getline('.')) + nnoremap d :call DeleteSession(getline('.')) + nnoremap e :call EditSession(getline('.')) + nnoremap x :call EditSessionExtra(getline('.')) + + syn match Comment "^\".*" + silent put ='\"-----------------------------------------------------' + silent put ='\" q - close session list' + silent put ='\" o, , <2-LeftMouse> - open session' + silent put ='\" d - delete session' + silent put ='\" e - edit session' + silent put ='\" x - edit extra session script' + silent put ='\"-----------------------------------------------------' + silent put ='' + let l = line(".") + + let sessions = substitute(glob(s:sessions_path . '/*'), '\\', '/', 'ge') + let sessions = substitute(sessions, "\\(^\\|\n\\)" . s:sessions_path . '/', '\1', 'ge') + let sessions = substitute(sessions, "\n[^\n]\\+x\\.vim\n", '\n', 'ge') + if sessions == '' + syn match Error "^\" There.*" + let sessions = '" There are no saved sessions' + endif + silent put =sessions + + 0,1d + execute l + setlocal nomodifiable + setlocal nospell endfunction "============================================================================" function! s:SaveSessionAs(...) - if a:0 == 0 || a:1 == '' - let name = input('Save session as: ', substitute(v:this_session, '.*\(/\|\\\)', '', '')) - else - let name = a:1 - endif - if name != '' - if v:version >= 700 && finddir(s:sessions_path, '/') == '' - call mkdir(s:sessions_path, 'p') - endif - silent! argdel * - let g:LAST_SESSION = name - execute 'silent mksession! ' . s:sessions_path . '/' . name - redraw | echo 'Saved session "' . name . '"' - endif + if a:0 == 0 || a:1 == '' + let name = input('Save session as: ', substitute(v:this_session, '.*\(/\|\\\)', '', '')) + else + let name = a:1 + endif + if name != '' + if v:version >= 700 && finddir(s:sessions_path, '/') == '' + call mkdir(s:sessions_path, 'p') + endif + silent! argdel * + let g:LAST_SESSION = name + execute 'silent mksession! ' . s:sessions_path . '/' . name + redraw | echo 'Saved session "' . name . '"' + endif endfunction "============================================================================" function! s:SaveSession() - call s:SaveSessionAs(substitute(v:this_session, '.*\(/\|\\\)', '', '')) + call s:SaveSessionAs(substitute(v:this_session, '.*\(/\|\\\)', '', '')) endfunction "============================================================================" function! s:ShowLastSession() - if exists('g:LAST_SESSION') - redraw | echo 'Last session is "' . g:LAST_SESSION . '"' - else - redraw | echo 'Last session is undefined' - endif - echon ', current session is "' . substitute(v:this_session, '.*\(/\|\\\)', '', '') . '"' + if exists('g:LAST_SESSION') + redraw | echo 'Last session is "' . g:LAST_SESSION . '"' + else + redraw | echo 'Last session is undefined' + endif + echon ', current session is "' . substitute(v:this_session, '.*\(/\|\\\)', '', '') . '"' endfunction "============================================================================" function! s:SessionOpenComplete(A, L, P) - let sessions = substitute(glob(s:sessions_path . '/*'), '\\', '/', 'g') - return substitute(sessions, '\(^\|\n\)' . s:sessions_path . '/', '\1', 'g') + let sessions = substitute(glob(s:sessions_path . '/*'), '\\', '/', 'g') + return substitute(sessions, '\(^\|\n\)' . s:sessions_path . '/', '\1', 'g') endfunction "============================================================================" @@ -295,18 +295,16 @@ command! -nargs=0 SessionShowLast call s:ShowLastSession() "============================================================================" -an 10.370 &File.-SessionsSep- -an 10.371 &File.S&essions.&Open\.\.\. :SessionList -an 10.372 &File.S&essions.Open\ &Last :SessionOpenLast -an 10.373 &File.S&essions.&Close :SessionClose -an 10.374 &File.S&essions.&Save :SessionSave -an 10.375 &File.S&essions.Save\ &As\.\.\. :SessionSaveAs +an 10.370 &File.-SessionsSep- +an 10.371 &File.S&essions.&Open\.\.\. :SessionList +an 10.372 &File.S&essions.Open\ &Last :SessionOpenLast +an 10.373 &File.S&essions.&Close :SessionClose +an 10.374 &File.S&essions.&Save :SessionSave +an 10.375 &File.S&essions.Save\ &As\.\.\. :SessionSaveAs aug sessionman - au VimLeavePre * if sessionman_save_on_exit && v:this_session != '' | call s:SaveSession() | endif + au VimLeavePre * if sessionman_save_on_exit && v:this_session != '' | call s:SaveSession() | endif aug END let &cpo = s:cpo_save unlet s:cpo_save - -" vim: set ts=4 sw=4 noet :