Thanks Andy it works likw a charm. I think is worth to upload your version of the script to the vim site. thx
2009/12/9 Andy Wokula <[email protected]> > Pablo Giménez schrieb: > > Hi > > I am trying to use the Minibuffer and Sessionman plugins together. > > The problem is that in my config before exiting vim sessionman save the > > current session. > > If I have minbuffer in the session, then the next time I open the session > in > > the top window, where minibuffer window appears, one of the buffers saved > in > > the last session appears, instead of the minibuffer window. > > But the thing that is even more curious is that if I move to this top > > window, then a new window appears at the top with the minibuffer window. > > So seems that the minibuffer window state is not proeprly saved to te > > session, or for some reason when opening the session the minibufer > pluging > > is not loaded, it is only loaded when I move to the top window. > > Any ideas, somebody has minibuffer and sessionman plugins working > together > > properly??? > > Thanks > > You are quite unspecific about the scripts in question. What are the > exact names, download locations, version numbers, etc?? > > I'm just guessing: > - minibufexpl.vim (6.3.2) > http://vim.sf.net/scripts/script.php?script_id=159 > - sessionman.vim (1.04) > http://vim.sf.net/scripts/script.php?script_id=2010 > > I think that Minibufexpl-autocommands interfer when a session file is > sourced. > > Check out the attached mod of sessionman.vim, which is now more "mbe > aware". > > -- > Andy > > -- > You received this message from the "vim_use" maillist. > For more information, visit http://www.vim.org/maillist.php > > > "============================================================================" > " > " Vim session manager > " > " Copyright (c) Yuri Klubakov > " > " Author: Yuri Klubakov <yuri.mlists at gmail dot com> > " Version: 1.04 (2008-06-21) > " Requires: Vim 6 > " License: GPL > " > " Mods: Andy Wokula <[email protected]> > " 2009 Dec 09 less problems with MiniBufExplorer (Vimscript #159) > " > " Description: > " > " Vim provides a ':mksession' command to save the current editing session. > " This plug-in helps to work with Vim sessions by keeping them in the > " dedicated location and by providing commands to list all sessions, open > " session, open last session, close session, save session and show last > " session. From a list of sessions you can open session, delete session, > " edit session and edit extra session script. Please note that session > " name can contain spaces and does not have to have a .vim extension. > " > " On Windows, DOS and OS2 sessions are saved in: > " "$HOME/vimfiles/sessions" if $HOME is defined > " "$APPDATA/Vim/sessions" if $APPDATA is defined > " "$VIM/sessions" otherwise > " On Unix sessions are saved in: > " "$HOME/.vim/sessions" > " If this directory does not exist, it will be created by the :SessionSave > " command (requires Vim 7). > " > " :SessionList command creates a new window with session names. > " At the top of the window there is a help that shows normal mode > mappings: > " q, <ESC> - close session list > " o, <CR>, <2-LeftMouse> - open session > " d - delete session > " e - edit session > " x - edit extra session script > " The name of an opened session is saved in g:LAST_SESSION variable which > is > " saved in the viminfo file if 'viminfo' option contains '!'. It is used > to > " open last session by :SessionOpenLast command. It can be done when Vim > " starts (gvim +bd -c OpenLastSession) or any time during a Vim session. > " You can edit an extra session script to specify additional settings and > " actions associated with a given session. If you change values of > " 'expandtab', 'tabstop' or 'shiftwidth', they will be restored to their > " original values when session is closed or before a new session is > opened. > " When session is opened and 'cscope' is enabled, script calls 'cscope > add' > " for the current directory so make sure it is set correctly for the > session. > " > " :SessionOpen command takes a session name as an argument. It supports > " argument completion. > " > " :SessionOpenLast command opens the g:LAST_SESSION session (see above). > " > " :SessionClose command wipes out all buffers, kills cscope and clears > " variables with session name. > " > " :SessionSave command saves the current editing session. If > v:this_session > " is empty it asks for a session name. > " > " :SessionSaveAs command takes a session name as an optional argument. If > " there is no argument or it is empty, it asks for a session name (default > " is the last part of v:this_session). > " > " :SessionShowLast command shows the content of the g:LAST_SESSION and > " v:this_session variables. > " > " If 'sessionman_save_on_exit != 0' (default) then the current editing > " session will be automatically saved when you exit Vim. > " > " Plug-in creates a "Sessions" sub-menu under the "File" menu. > " > > "============================================================================" > > if !has('mksession') || exists('loaded_sessionman') > finish > endif > let loaded_sessionman = 1 > > if !exists('sessionman_save_on_exit') > 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' > else > let s:sessions_path = $HOME . '/.vim/sessions' > endif > > let s:et_save = &et > let s:sw_save = &sw > let s:ts_save = &ts > > > "============================================================================" > > function! s:RestoreDefaults() > let &et = s:et_save > let &sw = s:sw_save > let &ts = s:ts_save > endfunction > > > "============================================================================" > > function! s:OpenSession(name) > if a:name != '' && a:name[0] != '"' > call s:RestoreDefaults() > execute 'silent! 1,' . bufnr('$') . 'bwipeout!' > let n = bufnr('%') > " execute 'silent! so ' . s:sessions_path . '/' . a:name > call s:SourceWithMbe('silent! so ' . s:sessions_path . '/' . > a:name) > execute 'silent! bwipeout! ' . n > if has('cscope') > silent! cscope kill -1 > silent! cscope add . > endif > let g:LAST_SESSION = a:name > endif > endfunction > > " source a session file, be aware of MiniBufExplorer; 2009 Dec 09 > function! s:SourceWithMbe(so_cmd) > if exists(":UMiniBufExplorer") && g:miniBufExplorerAutoUpdate > let g:miniBufExplorerAutoUpdate = 0 > execute a:so_cmd > let g:miniBufExplorerAutoUpdate = 1 > UMiniBufExplorer > else > execute a:so_cmd > 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 = '' > 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 > endfunction > > > "============================================================================" > > function! s:EditSession(name) > 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! > execute 'silent! edit ' . s:sessions_path . '/' . a:name . > '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 <buffer> <silent> <ESC> :bwipeout!<CR> > nnoremap <buffer> <silent> q :bwipeout!<CR> > nnoremap <buffer> <silent> o :call > <SID>OpenSession(getline('.'))<CR> > nnoremap <buffer> <silent> <CR> :call > <SID>OpenSession(getline('.'))<CR> > nnoremap <buffer> <silent> <2-LeftMouse> :call > <SID>OpenSession(getline('.'))<CR> > nnoremap <buffer> <silent> d :call > <SID>DeleteSession(getline('.'))<CR> > nnoremap <buffer> <silent> e :call > <SID>EditSession(getline('.'))<CR> > nnoremap <buffer> <silent> x :call > <SID>EditSessionExtra(getline('.'))<CR> > > syn match Comment "^\".*" > put ='\"-----------------------------------------------------' > put ='\" q, <ESC> - close session list' > put ='\" o, <CR>, <2-LeftMouse> - open session' > put ='\" d - delete session' > put ='\" e - edit session' > put ='\" x - edit extra session script' > put ='\"-----------------------------------------------------' > 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') > if sessions == '' > syn match Error "^\" There.*" > let sessions = '" There are no saved sessions' > endif > silent put =sessions > > 0,1d > execute l > setlocal nomodifiable > 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 > endfunction > > > "============================================================================" > > function! s:SaveSession() > 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, > '.*\(/\|\\\)', '', '') . '"' > endfunction > > > "============================================================================" > > function! s:SessionOpenComplete(A, L, P) > let sessions = substitute(glob(s:sessions_path . '/*'), '\\', '/', > 'g') > return substitute(sessions, '\(^\|\n\)' . s:sessions_path . '/', > '\1', 'g') > endfunction > > > "============================================================================" > > command! -nargs=1 -complete=custom,s:SessionOpenComplete SessionOpen call > s:OpenSession(<f-args>) > command! -nargs=0 SessionOpenLast if exists('g:LAST_SESSION') | call > s:OpenSession(g:LAST_SESSION) | endif > command! -nargs=0 SessionClose call s:CloseSession() > command! -nargs=0 SessionList call s:ListSessions() > command! -nargs=0 SessionSave call s:SaveSession() > command! -nargs=? SessionSaveAs call s:SaveSessionAs(<f-args>) > command! -nargs=0 SessionShowLast call s:ShowLastSession() > > > "============================================================================" > > an 10.370 &File.-SessionsSep- <Nop> > an 10.371 &File.S&essions.&Open\.\.\. :SessionList<CR> > an 10.372 &File.S&essions.Open\ &Last :SessionOpenLast<CR> > an 10.373 &File.S&essions.&Close :SessionClose<CR> > an 10.374 &File.S&essions.&Save :SessionSave<CR> > an 10.374 &File.S&essions.Save\ &As\.\.\. :SessionSaveAs<CR> > > aug sessionman > 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 : > > > > -- Un saludo Best Regards Pablo Giménez -- You received this message from the "vim_use" maillist. For more information, visit http://www.vim.org/maillist.php
