mirror of
https://github.com/vim-airline/vim-airline.git
synced 2024-12-13 05:53:49 +08:00
bffa7a4d23
nvimlsp removed the :LspInstallInfo command. So instead check explicitly for neovim for enabling the nvimlsp extension. In the extension itself check that at least one LSP is attached to the buffer before returning warning and error messages. closes #2323
49 lines
1.5 KiB
VimL
49 lines
1.5 KiB
VimL
" Apache 2.0 license. Copyright (c) 2019-2021 Copyright Neovim contributors.
|
|
" Plugin: https://github.com/neovim/nvim-lsp
|
|
" vim: et ts=2 sts=2 sw=2
|
|
|
|
scriptencoding utf-8
|
|
|
|
if !(get(g:, 'airline#extensions#nvimlsp#enabled', 1)
|
|
\ && has("nvim"))
|
|
finish
|
|
endif
|
|
|
|
function! s:airline_nvimlsp_count(cnt, symbol) abort
|
|
return a:cnt ? a:symbol. a:cnt : ''
|
|
endfunction
|
|
|
|
function! airline#extensions#nvimlsp#get(type) abort
|
|
if vim.lsp.buf_get_clients() == 0
|
|
return ''
|
|
endif
|
|
|
|
let error_symbol = get(g:, 'airline#extensions#nvimlsp#error_symbol', 'E:')
|
|
let warning_symbol = get(g:, 'airline#extensions#nvimlsp#warning_symbol', 'W:')
|
|
|
|
let is_err = a:type ==# 'Error'
|
|
|
|
let symbol = is_err ? error_symbol : warning_symbol
|
|
|
|
if luaeval("pcall(require, 'vim.lsp.diagnostic')")
|
|
let num = v:lua.vim.lsp.diagnostic.get_count(0, a:type)
|
|
else
|
|
let num = v:lua.vim.lsp.util.buf_diagnostics_count(a:type)
|
|
endif
|
|
|
|
return s:airline_nvimlsp_count(num, symbol)
|
|
endfunction
|
|
|
|
function! airline#extensions#nvimlsp#get_warning() abort
|
|
return airline#extensions#nvimlsp#get('Warning')
|
|
endfunction
|
|
|
|
function! airline#extensions#nvimlsp#get_error() abort
|
|
return airline#extensions#nvimlsp#get('Error')
|
|
endfunction
|
|
|
|
function! airline#extensions#nvimlsp#init(ext) abort
|
|
call airline#parts#define_function('nvimlsp_error_count', 'airline#extensions#nvimlsp#get_error')
|
|
call airline#parts#define_function('nvimlsp_warning_count', 'airline#extensions#nvimlsp#get_warning')
|
|
endfunction
|