Merge pull request #305 from dmitmel/master

[pull] master from dmitmel:master
This commit is contained in:
pull[bot] 2021-07-03 01:29:38 +00:00 committed by GitHub
commit cc523acd3c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 146 additions and 6 deletions

View file

@ -0,0 +1,126 @@
if !exists('g:did_coc_loaded')
finish
endif
function! airline#extensions#dotfiles_coclist#init(ext) abort
let g:coc_user_config['list.statusLineSegments'] = v:null
call a:ext.add_statusline_func('airline#extensions#dotfiles_coclist#apply')
call a:ext.add_inactive_statusline_func('airline#extensions#dotfiles_coclist#apply')
call airline#parts#define('dotfiles_coclist_mode', {
\ 'function': 'airline#extensions#dotfiles_coclist#part_mode',
\ 'accent': 'bold',
\ })
call airline#parts#define('dotfiles_coclist_args', {
\ 'function': 'airline#extensions#dotfiles_coclist#part_args',
\ })
call airline#parts#define('dotfiles_coclist_name', {
\ 'function': 'airline#extensions#dotfiles_coclist#part_name',
\ })
call airline#parts#define('dotfiles_coclist_cwd', {
\ 'function': 'airline#extensions#dotfiles_coclist#part_cwd',
\ })
call airline#parts#define('dotfiles_coclist_loading', {
\ 'function': 'airline#extensions#dotfiles_coclist#part_loading',
\ })
call airline#parts#define('dotfiles_coclist_total', {
\ 'function': 'airline#extensions#dotfiles_coclist#part_total',
\ })
" Default airline section setup:
" <https://github.com/vim-airline/vim-airline/blob/49cdcb7b3ea76ee19c737885c0ab19e64e564169/autoload/airline/init.vim#L209-L250>
" Beware that whitespaces in function expansions can cause some weirdness:
" <https://github.com/vim/vim/issues/3898>
let s:section_a = airline#section#create_left(['dotfiles_coclist_mode'])
let s:section_b = airline#section#create(['dotfiles_coclist_name'])
let s:section_c = airline#section#create(['%<', 'dotfiles_coclist_args', ' ', 'dotfiles_coclist_loading'])
let s:section_x = airline#section#create(['dotfiles_coclist_cwd'])
let s:section_y = airline#section#create(['#%L/', 'dotfiles_coclist_total'])
let s:section_z = airline#section#create(['%p%%', 'linenr', 'maxlinenr'])
endfunction
function! airline#extensions#dotfiles_coclist#statusline() abort
let context = { 'winnr': winnr(), 'active': 1, 'bufnr': bufnr() }
let builder = airline#builder#new(context)
call airline#extensions#dotfiles_coclist#apply(builder, context)
return builder.build()
endfunction
function! airline#extensions#dotfiles_coclist#apply(builder, context) abort
if getbufvar(a:context.bufnr, '&filetype', '') !=# 'list' | return 0 | endif
let list_status = getbufvar(a:context.bufnr, 'list_status', 0)
if type(list_status) !=# v:t_dict | return 0 | endif
" How b:list_status is populated:
" <https://github.com/neoclide/coc.nvim/blob/0aa97ad1bbdcc2bb95cf7aabd7818643db1e269d/src/list/session.ts#L417-L433>
" How the list buffer is created:
" <https://github.com/neoclide/coc.nvim/blob/0aa97ad1bbdcc2bb95cf7aabd7818643db1e269d/autoload/coc/list.vim#L82-L100>
" The default statusline:
" <https://github.com/neoclide/coc.nvim/blob/0aa97ad1bbdcc2bb95cf7aabd7818643db1e269d/data/schema.json#L870-L884>
" How airline generates its actual statuslines:
" <https://github.com/vim-airline/vim-airline/blob/49cdcb7b3ea76ee19c737885c0ab19e64e564169/autoload/airline/extensions/default.vim>
" <https://github.com/vim-airline/vim-airline/blob/49cdcb7b3ea76ee19c737885c0ab19e64e564169/autoload/airline/builder.vim>
" <https://github.com/vim-airline/vim-airline/blob/49cdcb7b3ea76ee19c737885c0ab19e64e564169/autoload/airline/section.vim>
let spc = g:airline_symbols.space
if a:context.active || (!a:context.active && !g:airline_inactive_collapse)
call a:builder.add_section('airline_a', s:get_section('a'))
call a:builder.add_section('airline_b', s:get_section('b'))
endif
call a:builder.add_section('airline_c', s:get_section('c'))
call a:builder.split()
call a:builder.add_section('airline_x', s:get_section('x'))
call a:builder.add_section('airline_y', s:get_section('y'))
call a:builder.add_section('airline_z', s:get_section('z'))
return 1
endfunction
" Copied from <https://github.com/vim-airline/vim-airline/blob/49cdcb7b3ea76ee19c737885c0ab19e64e564169/autoload/airline/extensions/default.vim#L7-L14>
let s:section_truncate_width = get(g:, 'airline#extensions#default#section_truncate_width', {
\ 'b': 79,
\ 'x': 60,
\ 'y': 88,
\ 'z': 45,
\ })
function! s:get_section(key) abort
if has_key(s:section_truncate_width, a:key) && airline#util#winwidth() < s:section_truncate_width[a:key]
return ''
endif
let spc = g:airline_symbols.space
let text = s:section_{a:key}
if empty(text) | return '' | endif
return '%(' . spc . text . spc . '%)'
endfunction
" TODO: Is recoloring of the section A based on `b:list_status.mode` possible?
function! airline#extensions#dotfiles_coclist#part_mode() abort
if get(w:, 'airline_active', 1)
" <https://github.com/vim-airline/vim-airline/blob/49cdcb7b3ea76ee19c737885c0ab19e64e564169/autoload/airline/parts.vim#L55-L57>
return airline#util#shorten(get(b:list_status, 'mode', ''), 79, 1)
else
return get(g:airline_mode_map, '__')
else
endfunction
function! airline#extensions#dotfiles_coclist#part_args() abort
return get(b:list_status, 'args', '')
endfunction
function! airline#extensions#dotfiles_coclist#part_name() abort
return get(b:list_status, 'name', '')
endfunction
function! airline#extensions#dotfiles_coclist#part_loading() abort
return get(b:list_status, 'loading', '')
endfunction
function! airline#extensions#dotfiles_coclist#part_total() abort
return get(b:list_status, 'total', '')
endfunction
function! airline#extensions#dotfiles_coclist#part_cwd() abort
return pathshorten(fnamemodify(get(b:list_status, 'cwd', ''), ':~:.'))
endfunction

View file

@ -62,6 +62,7 @@
call s:hi('Title', 0xD, '', '', '')
hi! link Directory Title
call s:hi('Conceal', 0xC, '', '', '')
call s:hi('IndentLine', 0x2, '', '', '')
call s:hi('NonText', 0x3, '', '', '')
hi! link SpecialKey Special
call s:hi('MatchParen', 'fg', 0x3, '', '')
@ -107,12 +108,22 @@
call s:hi('WarningMsg', 0x9, '', '', '')
call s:hi('TooLong', 0x8, '', '', '')
call s:hi('Debug', 0x8, '', '', '')
hi! link CocErrorSign Error
call s:hi('CocWarningSign', 'bg', 0xA, '', '')
call s:hi('CocInfoSign', 'bg', 0xD, '', '')
hi! link CocHintSign CocInfoSign
call s:hi('CocFadeOut', 0x3, '', '', '')
hi! link CocMarkdownLink Underlined
call s:hi('CocErrorSign', 'bg', 0x8, '', '')
call s:hi('CocWarningSign', 'bg', 0xA, '', '')
call s:hi('CocInfoSign', 'bg', 0xD, '', '')
hi! link CocHintSign CocInfoSign
call s:hi('CocSelectedText', 0xE, 0x1, 'bold', '')
call s:hi('CocCodeLens', 0x4, '', '', '')
call s:hi('CocFadeOut', 0x3, '', '', '')
call s:hi('CocStrikeThrough', '', '', 'strikethrough', '')
hi! link CocMarkdownLink Underlined
hi! link CocDiagnosticsFile Directory
hi! link CocOutlineName NONE
hi! link CocExtensionsLoaded NONE
hi! link CocSymbolsName NONE
hi! link CocOutlineIndentLine IndentLine
hi! link CocSymbolsFile Directory
call s:hi('FoldColumn', 0xC, 0x1, '', '')
call s:hi('Folded', 0x3, 0x1, '', '')

View file

@ -90,6 +90,7 @@ endif
\ }
let g:coc_user_config['suggest.floatEnable'] = v:false
let g:coc_user_config['workspace.progressTarget'] = "statusline"
let g:coc_user_config['list.selectedSignText'] = '> '
runtime! coc-languages/*.vim

View file

@ -30,6 +30,7 @@ set commentstring=//%s
let g:indentLine_first_char = g:indentLine_char
let g:indentLine_showFirstIndentLevel = 1
let g:indentLine_fileTypeExclude = ['text', 'help', 'tutor', 'man']
let g:indentLine_defaultGroup = 'IndentLine'
augroup vimrc-indentlines-disable
autocmd!

View file

@ -113,6 +113,7 @@ endif
\ 'obsession',
\ 'dotfiles_tweaks',
\ 'dotfiles_filesize',
\ 'dotfiles_coclist',
\ ]
let g:airline_detect_iminsert = 1
let g:airline#extensions#tabline#left_sep = ' '