On Sat, Mar 21, 2009 at 11:22, Dominique Pelle <[email protected]>wrote:
> > Tony Mechelynck wrote: > > > On 19/03/09 13:08, Yakov Lerner wrote: > >> > >> On Tue, Mar 17, 2009 at 12:41, Yakov Lerner<[email protected]> wrote: > >>> We have separae highlighting, StatusLineNC, for non-current. > >>> I wish I had different *format*, too, for noncurrent statusline. I do > not > >>> think differnt format for non-current statusline is supported. > >>> Is it possible to put this request in todo. Thanks. > >> > >> Found how to make it in current vim. > >> Sorry for the noise. Took me time to figure it, works fine. > >> > >> let&statusline="Your favourite statusline" > >> let g:Active_statusline=&g:statusline > >> let g:NCstatusline = "%<%F" " non-current statusline > >> au WinEnter * let&l:statusline = g:Active_statusline > >> au WinLeave * let&l:statusline = g:NCstatusline > >> > >> Yakov > > > > Wow! Hadn't realized it was global-local. :thumbsup: > > > > Best regards, > > Tony. > > Agreed, that's quite a nice tip. > > I ended up using it to change the colors of the active vs inactive > statusline in my already fancy statusline settings: > > " Colors of active statusline > hi User1 guifg=#66ff66 guibg=#008000 gui=bold term=standout > cterm=bold ctermfg=lightgreen ctermbg=lightgreen > hi User2 guifg=#ffff60 guibg=#008000 gui=bold term=none cterm=bold > ctermfg=yellow ctermbg=lightgreen > > " Colors or inactive statusline > hi User3 guifg=#66ff66 guibg=#008000 gui=bold term=standout > cterm=bold ctermfg=lightgreen ctermbg=lightgreen > hi User4 guifg=#66ff66 guibg=#008000 gui=bold term=none cterm=bold > ctermfg=lightgreen ctermbg=lightgreen > > " Function used to display syntax group. > function! SyntaxItem() > return synIDattr(synID(line("."),col("."),1),"name") > endfunction > > " Function used to display utf-8 sequence. > function! ShowUtf8Sequence() > let p = getpos('.') > redir => utfseq > sil normal! g8 > redir End > call setpos('.', p) > return substitute(matchstr(utfseq, '\x\+ .*\x'), '\<\x', '0x&', 'g') > endfunction > > if has('statusline') > if version >= 700 > " Fancy status line. > set statusline = > set statusline+=%#User1# " highlighting > set statusline+=%-2.2n\ " buffer number > set statusline+=%#User2# " highlighting > set statusline+=%f\ " file name > set statusline+=%#User1# " highlighting > set statusline+=%h%m%r%w\ " flags > set statusline+=%{(&key==\"\"?\"\":\"encr,\")} " encrypted? > set statusline+=%{strlen(&ft)?&ft:'none'}, " file type > set statusline+=%{(&fenc==\"\"?&enc:&fenc)}, " encoding > set statusline+=%{((exists(\"+bomb\")\ &&\ &bomb)?\"B,\":\"\")} " BOM > set statusline+=%{&fileformat}, " file format > set statusline+=%{&spelllang}, " spell language > set statusline+=%{SyntaxItem()} " syntax group under > cursor > set statusline+=%= " indent right > set statusline+=%#User2# " highlighting > set statusline+=%{ShowUtf8Sequence()}\ " utf-8 sequence > set statusline+=%#User1# " highlighting > set statusline+=0x%B\ " char under cursor > set statusline+=%-6.(%l,%c%V%)\ %<%P " position > > " Use different colors for statusline in current and non-current window. > let g:Active_statusline=&g:statusline > let g:NCstatusline=substitute( > \ substitute(g:Active_statusline, > \ 'User1', 'User3', 'g'), > \ 'User2', 'User4', 'g') > au WinEnter * let&l:statusline = g:Active_statusline > au WinLeave * let&l:statusline = g:NCstatusline > endif > endif Different highlighting for non-active statusline is trivial due to 'hi StatusLineNC', as opposed to different contents/format of statusline. But I've got to try out your statusline code. It's hideousest statusline I've seen. --~--~---------~--~----~------------~-------~--~----~ You received this message from the "vim_dev" maillist. For more information, visit http://www.vim.org/maillist.php -~----------~----~----~----~------~----~------~--~---
