impl vim-lsp progress

This commit is contained in:
micchy326
2021-01-02 16:51:16 +09:00
parent 5601c0928e
commit 0c8164b1b3
3 changed files with 49 additions and 2 deletions
+37
View File
@@ -61,7 +61,44 @@ function! airline#extensions#lsp#get_error() abort
return airline#extensions#lsp#get('error')
endfunction
let s:lsp_progress = []
function! airline#extensions#lsp#progress() abort
if get(w:, 'airline_active', 0)
if exists('*lsp#get_progress')
let s:lsp_progress = lsp#get_progress()
if len(s:lsp_progress) == 0 | return '' | endif
" show only most new progress
let s:lsp_progress = s:lsp_progress[0]
if s:lsp_progress['message'] != '' && s:lsp_progress['percentage'] != 100
let percent = ''
if s:lsp_progress['percentage'] >= 0
let percent = ' ' . string(s:lsp_progress['percentage']) . '%'
endif
let s:title = s:lsp_progress['title']
let message = airline#util#shorten(s:lsp_progress['message'] . percent, 91, 9)
return s:lsp_progress['server'] . ':' . s:title . ' ' . message
endif
return ''
endif
endif
endfunction
let s:timer = 0
let s:ignore_time = 0
function! airline#extensions#lsp#update() abort
if reltimefloat(reltime()) - s:ignore_time >=
\ get(g:, 'airline#extensions#lsp#progress_skip_time', 0.3)
\ || len(s:lsp_progress) == 0
call airline#update_statusline()
let s:ignore_time = reltimefloat(reltime())
endif
endfunction
function! airline#extensions#lsp#init(ext) abort
call airline#parts#define_function('lsp_error_count', 'airline#extensions#lsp#get_error')
call airline#parts#define_function('lsp_warning_count', 'airline#extensions#lsp#get_warning')
call airline#parts#define_function('lsp_progress', 'airline#extensions#lsp#progress')
autocmd User lsp_progress_updated call airline#extensions#lsp#update()
endfunction