Only display coc#status() in regular active buffer
The statusline is only dynamically updated for the active buffer, thus when there are multiple splits the statusline for inactive buffers may include non-updated output of `coc#status()`. This patch adds a boolean flag to `statusline#generic()` which enables `statusline#active()` and `statusline#inactive()` to control when `coc#status()` is included in the statusline.
This commit is contained in:
parent
0961c13316
commit
c9711deade
@ -49,7 +49,7 @@ function! statusline#special(group, name, title)
|
||||
endfunction
|
||||
|
||||
" Construct a statusline for generic buffer types.
|
||||
function! statusline#generic(group, mode)
|
||||
function! statusline#generic(group, mode, coc)
|
||||
" Display current mode with dynamic highlights.
|
||||
let l:mode = '%#'.a:group.'# '.a:mode.' '
|
||||
" Display spell or paste if set with dusk highlights in a group to swallow
|
||||
@ -64,7 +64,7 @@ function! statusline#generic(group, mode)
|
||||
let l:state = '%#StatusLineDark#'
|
||||
\.'%{&readonly ? " 🔒" : ""}'
|
||||
\.'%{&modifiable ? "" : " ⛔"}'
|
||||
if exists('*coc#status')
|
||||
if a:coc && exists('*coc#status')
|
||||
" Display coc.nvim status.
|
||||
let l:coc = '%#StatusLineDuskFade#%( %{coc#status()}%)'
|
||||
else
|
||||
@ -108,11 +108,11 @@ function! statusline#active()
|
||||
if l:mode ==# 'Normal'
|
||||
let l:mode = 'Preview'
|
||||
endif
|
||||
return statusline#generic('StatusLineLight', l:mode)
|
||||
return statusline#generic('StatusLineLight', l:mode, v:false)
|
||||
elseif &filetype ==# 'man'
|
||||
return statusline#special('StatusLineDusk', 'Manual', '%f')
|
||||
endif
|
||||
return statusline#generic('StatusLineLight', l:mode)
|
||||
return statusline#generic('StatusLineLight', l:mode, v:true)
|
||||
endfunction
|
||||
|
||||
" Define inactive statusline, this remains static until the buffer gains
|
||||
@ -130,11 +130,11 @@ function! statusline#inactive()
|
||||
elseif &buftype ==# 'terminal'
|
||||
let l:statusline = statusline#special('StatusLineDusk', 'Terminal', '%f')
|
||||
elseif &previewwindow
|
||||
let l:statusline = statusline#generic('StatusLineDusk', 'Preview')
|
||||
let l:statusline = statusline#generic('StatusLineDusk', 'Preview', v:false)
|
||||
elseif &filetype ==# 'man'
|
||||
let l:statusline = statusline#special('StatusLineDusk', 'Manual', '%f')
|
||||
else
|
||||
let l:statusline = statusline#generic('StatusLineDusk', 'Idle')
|
||||
let l:statusline = statusline#generic('StatusLineDusk', 'Idle', v:false)
|
||||
endif
|
||||
" Escape spaces and double quotes for use in setlocal.
|
||||
let l:statusline = substitute(l:statusline, '\([ "]\)', '\\\0', 'g')
|
||||
|
Loading…
x
Reference in New Issue
Block a user