Loading ...
Sorry, an error occurred while loading the content.

118094Re: How to execute commands at vim exiting?

Expand Messages
  • Joan Miquel Torres Rigo
    Oct 10, 2010
    • 0 Attachment
      A bit better solution:

      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@...>:
      > 2010/10/2 ZyX <zyx.vim@...>:
      >>
      >> 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
    • Show all 7 messages in this topic