autocmd VimLeave * !screen -ls vim_${PPID} | grep vim_${PPID} &&
dialog --yesno "Leave existing screen sessions alive?" 6 40 && screen
-r vim_${PPID} || kill $(screen -ls vim_${PPID} | perl -ne
's/^.*?(\d{2,}).*$/\1/&&print') && clear
...this way vim exits anyway but, at least, attach the screen helping
user to propperly close windows and running proceses.
2010/10/10 Joan Miquel Torres Rigo <joanmiquel@mallorcaweb.net>:
> 2010/10/2 ZyX <zyx.vim@gmail.com>:
>>
>> To execute something just before vim exists, you can use `VimLeave` autocommand,
> [...]
>> About capturing vim's
>> pid: use ``let g:vimpid=system('echo -n $PPID')+0''
>
> Thanks again for your help.
>
> I got it working, but I had a new idea:
>
> I added a dialog call to ask about if existing attached screen must be
> killed or preserved.
>
> If dialog is installed (if not it unconditionally kills screen) and
> user select to not kill it, then screen session is preserved but, of
> course, vim exits anyway.
>
> This is not a big problem, but it will become perfect if we could
> abort to exiting vim in this case.
>
>
> But I think this time will not be possible because of the autocmd
> nature. Am I wrong?
>
>
> PD: Current related ~/.vimrc is that comes below:
>
> -8<------------------------------------------------------
> " F12 -> Attached Screen session: {{{
> " ==============================
>
> " Build mapping: {{{
> " cd $(dirname %:p) --> Change to current file's directory.
> " screen
> " -U -> Run in UTF-8 mode.
> " -d -> Deatach if previously attached.
> " -dRR vim_$(basename %:p)
> " -> Use current buffer file name as sessionname; then
> reattach it and, if necessary, detach or create it first. Use the
> first session if more than one session with same name are available.
> " -p %:p -> Use current buffer file full path as preselected
> (if available) window.
> " * TODO: Create this window by default when not exists.
> " -c ~/.vim/screenrc
> " -> Use modified screenrc config file (see below).
> noremap <f12> :silent<space>!bash<space>-c<space>'cd<space>$(dirname<space>%:p);screen<space>-UdRR<space>vim_${PPID}<space>-p<space>"%"<space>-c<space>~/.vim/screenrc'<enter>:redraw!<enter>
> " }}}
>
> " Make screen session to be killed on exit and also prompting if
> dialog is installed: {{{
> " ----------------------------------------------------------------------------------
> autocmd VimLeave * !screen -ls vim_${PPID} | grep vim_${PPID} &&
> dialog --yesno "Leave existing screen sessions alive?" 6 40 || kill
> $(screen -ls vim_${PPID} | perl -ne 's/^.*?(\d{2,}).*$/\1/&&print') &&
> clear
> " }}}
>
> " Prepare vim's screen configuration: {{{
> " ----------------------------------
> " Create ~/.vim directory if not already exists.
> silent !mkdir -p ~/.vim
> " Create/overwrite with user's ~/.screenrc if exists.
> silent !cat ~/.screenrc > ~/.vim/screenrc 2>/dev/null
> " Bind F12 to 'detach' command in screen.
> silent !echo 'bindkey -k F2 detach' >> ~/.vim/screenrc
> " Change default screen's escape key to CTRL-Q to avoid conflict if
> vim itself is running in other screen session.
> silent !echo 'escape ^qa' >> ~/.vim/screenrc
> " }}}
>
> " }}}
> -8<------------------------------------------------------
>
>
>
> --
> Joan Miquel Torres__________________________________
> Linux Registered User #164872
> http://www.mallorcaweb.net/joanmiquel
> BULMA: http://bulma.net http://breu.bulma.net/?l2301
>
--
Joan Miquel Torres__________________________________
Linux Registered User #164872
http://www.mallorcaweb.net/joanmiquel
BULMA: http://bulma.net http://breu.bulma.net/?l2301
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
No comments:
Post a Comment