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
|
endfunction
|
||||||
|
|
||||||
" Construct a statusline for generic buffer types.
|
" Construct a statusline for generic buffer types.
|
||||||
function! statusline#generic(group, mode)
|
function! statusline#generic(group, mode, coc)
|
||||||
" Display current mode with dynamic highlights.
|
" Display current mode with dynamic highlights.
|
||||||
let l:mode = '%#'.a:group.'# '.a:mode.' '
|
let l:mode = '%#'.a:group.'# '.a:mode.' '
|
||||||
" Display spell or paste if set with dusk highlights in a group to swallow
|
" 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#'
|
let l:state = '%#StatusLineDark#'
|
||||||
\.'%{&readonly ? " 🔒" : ""}'
|
\.'%{&readonly ? " 🔒" : ""}'
|
||||||
\.'%{&modifiable ? "" : " ⛔"}'
|
\.'%{&modifiable ? "" : " ⛔"}'
|
||||||
if exists('*coc#status')
|
if a:coc && exists('*coc#status')
|
||||||
" Display coc.nvim status.
|
" Display coc.nvim status.
|
||||||
let l:coc = '%#StatusLineDuskFade#%( %{coc#status()}%)'
|
let l:coc = '%#StatusLineDuskFade#%( %{coc#status()}%)'
|
||||||
else
|
else
|
||||||
@ -108,11 +108,11 @@ function! statusline#active()
|
|||||||
if l:mode ==# 'Normal'
|
if l:mode ==# 'Normal'
|
||||||
let l:mode = 'Preview'
|
let l:mode = 'Preview'
|
||||||
endif
|
endif
|
||||||
return statusline#generic('StatusLineLight', l:mode)
|
return statusline#generic('StatusLineLight', l:mode, v:false)
|
||||||
elseif &filetype ==# 'man'
|
elseif &filetype ==# 'man'
|
||||||
return statusline#special('StatusLineDusk', 'Manual', '%f')
|
return statusline#special('StatusLineDusk', 'Manual', '%f')
|
||||||
endif
|
endif
|
||||||
return statusline#generic('StatusLineLight', l:mode)
|
return statusline#generic('StatusLineLight', l:mode, v:true)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Define inactive statusline, this remains static until the buffer gains
|
" Define inactive statusline, this remains static until the buffer gains
|
||||||
@ -130,11 +130,11 @@ function! statusline#inactive()
|
|||||||
elseif &buftype ==# 'terminal'
|
elseif &buftype ==# 'terminal'
|
||||||
let l:statusline = statusline#special('StatusLineDusk', 'Terminal', '%f')
|
let l:statusline = statusline#special('StatusLineDusk', 'Terminal', '%f')
|
||||||
elseif &previewwindow
|
elseif &previewwindow
|
||||||
let l:statusline = statusline#generic('StatusLineDusk', 'Preview')
|
let l:statusline = statusline#generic('StatusLineDusk', 'Preview', v:false)
|
||||||
elseif &filetype ==# 'man'
|
elseif &filetype ==# 'man'
|
||||||
let l:statusline = statusline#special('StatusLineDusk', 'Manual', '%f')
|
let l:statusline = statusline#special('StatusLineDusk', 'Manual', '%f')
|
||||||
else
|
else
|
||||||
let l:statusline = statusline#generic('StatusLineDusk', 'Idle')
|
let l:statusline = statusline#generic('StatusLineDusk', 'Idle', v:false)
|
||||||
endif
|
endif
|
||||||
" Escape spaces and double quotes for use in setlocal.
|
" Escape spaces and double quotes for use in setlocal.
|
||||||
let l:statusline = substitute(l:statusline, '\([ "]\)', '\\\0', 'g')
|
let l:statusline = substitute(l:statusline, '\([ "]\)', '\\\0', 'g')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user