[wish] different statusline format for noncurrent statusline

66 views
Skip to first unread message

Yakov Lerner

unread,
Mar 17, 2009, 6:41:43 AM3/17/09
to vim-dev
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.

Yakov

Bram Moolenaar

unread,
Mar 17, 2009, 4:19:12 PM3/17/09
to Yakov Lerner, vim-dev

Yakov Lerner wrote:

I'll add it in the todo list. Don't expect this soon though. Still in
bug fixing mode...

--
hundred-and-one symptoms of being an internet addict:
222. You send more than 20 personal e-mails a day.

/// Bram Moolenaar -- Br...@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ download, build and distribute -- http://www.A-A-P.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

Matt Wozniski

unread,
Mar 17, 2009, 6:59:55 PM3/17/09
to vim...@googlegroups.com
On Tue, Mar 17, 2009 at 4:19 PM, Bram Moolenaar <Br...@moolenaar.net> wrote:
>
>
> Yakov Lerner 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.
>
> I'll add it in the todo list.  Don't expect this soon though.  Still in
> bug fixing mode...

Perhaps an 'actual_curwin' like 'actual_curbuf'?

~Matt

Yakov Lerner

unread,
Mar 19, 2009, 8:08:09 AM3/19/09
to vim-dev, Bram Moolenaar

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

Tony Mechelynck

unread,
Mar 21, 2009, 3:02:42 AM3/21/09
to vim...@googlegroups.com, vim-dev, Bram Moolenaar, Yakov Lerner
On 19/03/09 13:08, Yakov Lerner wrote:
>
> On Tue, Mar 17, 2009 at 12:41, Yakov Lerner<ile...@gmail.com> 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.
--
"Terence, this is stupid stuff:
You eat your victuals fast enough;
There can't be much amiss, 'tis clear,
To see the rate you drink your beer.
But oh, good Lord, the verse you make,
It gives a chap the belly-ache.
The cow, the old cow, she is dead;
It sleeps well the horned head:
We poor lads, 'tis our turn now
To hear such tunes as killed the cow.
Pretty friendship 'tis to rhyme
Your friends to death before their time.
Moping, melancholy mad:
Come, pipe a tune to dance to, lad."
-- A. E. Housman

Dominique Pelle

unread,
Mar 21, 2009, 4:22:11 AM3/21/09
to vim...@googlegroups.com
Tony Mechelynck wrote:

> On 19/03/09 13:08, Yakov Lerner wrote:
>>
>> On Tue, Mar 17, 2009 at 12:41, Yakov Lerner<ile...@gmail.com>  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

Yegappan Lakshmanan

unread,
Mar 21, 2009, 1:45:08 PM3/21/09
to vim...@googlegroups.com
On Sat, Mar 21, 2009 at 12:02 AM, Tony Mechelynck
<antoine.m...@gmail.com> wrote:
>
> On 19/03/09 13:08, Yakov Lerner wrote:
>>
>> On Tue, Mar 17, 2009 at 12:41, Yakov Lerner<ile...@gmail.com>  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:
>

Yes. This change ( 'statusline' option can be local to a window) was
made in 7.0.

- Yegappan

Yakov Lerner

unread,
Apr 30, 2009, 1:48:17 PM4/30/09
to vim...@googlegroups.com, dominiq...@gmail.com
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.

Reply all
Reply to author
Forward
0 new messages