From fe94d52c4c67531e71bf9abd8f1cccb05b6cfc27 Mon Sep 17 00:00:00 2001 From: ckipp01 Date: Fri, 28 Feb 2020 00:06:00 +0100 Subject: [PATCH] coc: add in coc_status to coc.nvim integration Allow to show additional messages from coc.nvim in section_c For ease of use, shorten the message for windows smaller than 81 characters. closes #2079 --- autoload/airline/extensions/coc.vim | 16 +++++++++++----- autoload/airline/init.vim | 6 +++++- t/init.vim | 5 +++-- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/autoload/airline/extensions/coc.vim b/autoload/airline/extensions/coc.vim index 037f4f93..3a2abaaf 100644 --- a/autoload/airline/extensions/coc.vim +++ b/autoload/airline/extensions/coc.vim @@ -7,16 +7,16 @@ scriptencoding utf-8 let s:error_symbol = get(g:, 'airline#extensions#coc#error_symbol', 'E:') let s:warning_symbol = get(g:, 'airline#extensions#coc#warning_symbol', 'W:') -function! airline#extensions#coc#get_warning() +function! airline#extensions#coc#get_warning() abort return airline#extensions#coc#get('warning') endfunction -function! airline#extensions#coc#get_error() +function! airline#extensions#coc#get_error() abort return airline#extensions#coc#get('error') endfunction -function! airline#extensions#coc#get(type) - if !exists(":CocCommand") +function! airline#extensions#coc#get(type) abort + if !exists(':CocCommand') return '' endif let _backup = get(g:, 'coc_stl_format', '') @@ -42,7 +42,13 @@ function! airline#extensions#coc#get(type) endif endfunction -function! airline#extensions#coc#init(ext) +function! airline#extensions#coc#get_status() abort + " Shorten text for windows < 81 characters + return airline#util#shorten(get(g:, 'coc_status', ''), 81, 9) +endfunction + +function! airline#extensions#coc#init(ext) abort call airline#parts#define_function('coc_error_count', 'airline#extensions#coc#get_error') call airline#parts#define_function('coc_warning_count', 'airline#extensions#coc#get_warning') + call airline#parts#define_function('coc_status', 'airline#extensions#coc#get_status') endfunction diff --git a/autoload/airline/init.vim b/autoload/airline/init.vim index 6b1c646f..9c316fdc 100644 --- a/autoload/airline/init.vim +++ b/autoload/airline/init.vim @@ -161,6 +161,10 @@ function! airline#init#bootstrap() call airline#parts#define('branch', { \ 'raw': '', \ 'minwidth': 80}) + call airline#parts#define('coc_status', { + \ 'raw': '', + \ 'accent': 'airline_term' + \ }) call airline#parts#define_empty(['obsession', 'tagbar', 'syntastic-warn', \ 'syntastic-err', 'eclim', 'whitespace','windowswap', \ 'ycm_error_count', 'ycm_warning_count', 'neomake_error_count', @@ -194,7 +198,7 @@ function! airline#init#sections() if exists("+autochdir") && &autochdir == 1 let g:airline_section_c = airline#section#create(['%<', 'path', spc, 'readonly']) else - let g:airline_section_c = airline#section#create(['%<', 'file', spc, 'readonly']) + let g:airline_section_c = airline#section#create(['%<', 'file', spc, 'readonly', 'coc_status']) endif endif if !exists('g:airline_section_gutter') diff --git a/t/init.vim b/t/init.vim index 6223a83f..60f36d8b 100644 --- a/t/init.vim +++ b/t/init.vim @@ -29,8 +29,8 @@ describe 'init sections' Expect g:airline_section_b == '' end - it 'section c should be file' - Expect g:airline_section_c == '%<%f%m %#__accent_red#%{airline#util#wrap(airline#parts#readonly(),0)}%#__restore__#' + it 'section c should be file and coc_status' + Expect g:airline_section_c == '%<%f%m %#__accent_red#%{airline#util#wrap(airline#parts#readonly(),0)}%#__restore__#%#__accent_airline_term#%#__restore__#' end it 'section x should be filetype' @@ -78,6 +78,7 @@ describe 'init sections' Expect airline#parts#get('ycm_warning_count').raw == '' Expect airline#parts#get('languageclient_error_count').raw == '' Expect airline#parts#get('languageclient_warning_count').raw == '' + Expect airline#parts#get('coc_status').raw == '' end end