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

Reply via email to