Hello,

  Earlier today, I asked: "Unless called from the statusline, 
  mode() mostly returns c or n.  So how can one know the mode 
  from viml?"
  
  Searching the archives, I found a tip from Tony Mechelynck 
  about setting a variable from the statusline.  (I also found 
  a post from Benji from 2002 or 2003 wondering why one would 
  want to know the mode directly from viml -- so he is included 
  in the cc.)

  Here's the solution to having blockwise changes be blockwise
  irrespective of tw (refer post "Visual mode block change -- bug 
  or 'unchangeable'?"):

  Note:  there are 3 very long lines below which might get split 
         into several lines by the email process.

      function! MySetMode()
        let b:foo = mode()
        return ''
      endfunction

      set statusline=%<%f%h%m%r%=%{strftime(\"%I:%M:%S\ \%p,\ %a\ %b\ %d,\ 
%Y\")}\ %{&ff}\ %l,%c%V\ %P%{MySetMode()}
      
      augroup BlockHold
        au!
        au InsertEnter * if(b:foo == '') | let b:blockhold_tw = &tw | setlocal 
tw=0 |  endif
        au InsertLeave * if(exists("b:blockhold_tw")) | let &l:tw = 
b:blockhold_tw | unlet b:blockhold_tw | endif
      augroup END
      
      finish
 
  --Suresh 

Reply via email to