Friday, February 19, 2010

Re: statusline reset pb

On 2010-02-19, epanda wrote:
> Hi,
>
> I use those func to change statusline but when I want to restore
> initial statusline format , it fails.
>
>
> 1/ InitStatusLine
>
> function! InitStatusLine(taskName)
>
> "
> let g:savedStatusLine = &statusline
> <<<<<<<<<<<<<< save initial status line
>
> "
> if &laststatus != 2
> set laststatus=2
> endif
> let s:statusTask = a:taskName
> let s:statusXtraInfo = ''
>
> call s:StatusLineTaskUpdate(a:taskName . ' | Progress:')
> setlocal statusline=%{DefineStatusLine()}
>
> endfunction
>
>
> function! s:StatusLineTaskUpdate(msg)
> let s:statusTask = a:msg
> redrawstatus
> endfunction
>
> function! DefineStatusLine()
> return s:statusTask. " -- ". s:statusXtraInfo
> endfunction
>
> 2/
>
> function! RestoreStatusLine()
> " call WaitingFunc(1000)
> let &statusline = g:savedStatusLine
> endfunction
>
>
> Why my statusline is not reset ?

Because you're saving and restoring the global value of
'statusline', but your InitStatusLine() function is setting a
window-local value of 'statusline', which takes precedence over the
global value.

If you need to use local values of 'statusline', you'll have to save
and restore each local value individually. If you want to restore
the statusline in a particular window to the appearance of the
global 'statusline' value, you can just clear the local value, e.g.

setlocal statusline=

Regards,
Gary

--
You received this message from the "vim_use" maillist.
For more information, visit http://www.vim.org/maillist.php

No comments: