let g:lightline = {
|
|
\ 'colorscheme': 'material_vim',
|
|
\ 'active': {
|
|
\ 'left': [ [ 'mode', 'paste' ], [ 'readonly', 'filename', 'modified' ] ],
|
|
\ 'right':[[ 'filetype', 'percent', 'lineinfo' ], [ 'cocstatus' ]]
|
|
\ },
|
|
\ 'tabline': {
|
|
\ 'left': [['explorer_pad'], ['buffers']],
|
|
\ 'right': [['gitbranch', 'smarttabs']]
|
|
\ },
|
|
\ 'component_expand': {
|
|
\ 'buffers': 'lightline#bufferline#buffers',
|
|
\ 'smarttabs': 'SmartTabsIndicator',
|
|
\ 'trailing': 'lightline#trailing_whitespace#component'
|
|
\ },
|
|
\ 'component_function': {
|
|
\ 'explorer_pad': 'lightline#explorer_pad#left_pad',
|
|
\ 'percent': 'LightlinePercent',
|
|
\ 'lineinfo': 'LightlineLineinfo',
|
|
\ 'filename': 'LightlineFilename',
|
|
\ 'fullname': 'LightlineFullname',
|
|
\ 'mode': 'LightlineMode',
|
|
\ 'gitbranch': 'LightlineGitbranch',
|
|
\ 'readonly': 'LightlineReadonly',
|
|
\ 'modified': 'LightlineModified',
|
|
\ 'filetype': 'LightlineFiletype',
|
|
\ 'cocstatus': 'LightlineCoc',
|
|
\ },
|
|
\ 'component_type': {
|
|
\ 'buffers': 'tabsel',
|
|
\ 'trailing': 'warning'
|
|
\ },
|
|
\ }
|
|
|
|
|
|
function! s:trim(maxlen, str) abort
|
|
let trimed = len(a:str) > a:maxlen ? a:str[0:a:maxlen] . '..' : a:str
|
|
return trimed
|
|
endfunction
|
|
|
|
function! LightlineCoc() abort
|
|
if winwidth(0) < 60
|
|
return ''
|
|
endif
|
|
|
|
return coc#status()
|
|
endfunction
|
|
|
|
function! LightlinePercent() abort
|
|
if winwidth(0) < 60
|
|
return ''
|
|
endif
|
|
|
|
let l:percent = line('.') * 100 / line('$') . '%'
|
|
return printf('%-4s', l:percent)
|
|
endfunction
|
|
|
|
function! LightlineLineinfo() abort
|
|
if winwidth(0) < 86
|
|
return ''
|
|
endif
|
|
|
|
let l:current_line = printf('%-3s', line('.'))
|
|
let l:max_line = printf('%-3s', line('$'))
|
|
let l:lineinfo = ' ' . l:current_line . '/' . l:max_line
|
|
return l:lineinfo
|
|
endfunction
|
|
|
|
function! LightlineFilename() abort
|
|
let l:prefix = expand('%:p') =~? "fugitive://" ? '(fugitive) ' : ''
|
|
let l:maxlen = winwidth(0) - winwidth(0) / 2
|
|
let l:relative = expand('%:.')
|
|
let l:tail = expand('%:t')
|
|
let l:noname = 'No Name'
|
|
|
|
if winwidth(0) < 50
|
|
return ''
|
|
endif
|
|
|
|
if winwidth(0) < 86
|
|
return l:tail ==# '' ? l:noname : l:prefix . s:trim(l:maxlen, l:tail)
|
|
endif
|
|
|
|
return l:relative ==# '' ? l:noname : l:prefix . s:trim(l:maxlen, l:relative)
|
|
endfunction
|
|
|
|
function! LightlineFullname() abort
|
|
let l:relative = expand('%')
|
|
|
|
return l:relative
|
|
endfunction
|
|
|
|
function! LightlineModified() abort
|
|
return &modified ? '*' : ''
|
|
endfunction
|
|
|
|
function! LightlineMode() abort
|
|
let ftmap = {
|
|
\ 'coc-explorer': 'EXPLORER',
|
|
\ 'fugitive': 'FUGITIVE',
|
|
\ 'vista': 'OUTLINE'
|
|
\ }
|
|
return get(ftmap, &filetype, lightline#mode())
|
|
endfunction
|
|
let g:lightline.component_function = { 'lineinfo': 'LightlineLineinfo' }
|
|
|
|
function! LightlineLineinfo() abort
|
|
if winwidth(0) < 86
|
|
return ''
|
|
endif
|
|
|
|
let l:current_line = printf('%-3s', line('.'))
|
|
let l:max_line = printf('%-3s', line('$'))
|
|
let l:lineinfo = ' ' . l:current_line . '/' . l:max_line
|
|
return l:lineinfo
|
|
endfunction
|
|
|
|
function! LightlineReadonly() abort
|
|
let ftmap = {
|
|
\ 'coc-explorer': '',
|
|
\ 'fugitive': '',
|
|
\ 'vista': ''
|
|
\ }
|
|
let l:char = get(ftmap, &filetype, '')
|
|
return &readonly ? l:char : ''
|
|
endfunction
|
|
|
|
function! LightlineGitbranch() abort
|
|
if exists('*fugitive#head')
|
|
let maxlen = 20
|
|
let branch = fugitive#head()
|
|
return branch !=# '' ? ' '. s:trim(maxlen, branch) : ''
|
|
endif
|
|
return fugitive#head()
|
|
endfunction
|
|
|
|
function! LightlineFiletype() abort
|
|
let l:icon = WebDevIconsGetFileTypeSymbol()
|
|
return winwidth(0) > 86 ? (strlen(&filetype) ? &filetype . ' ' . l:icon : l:icon) : ''
|
|
endfunction
|
|
|
|
function! String2()
|
|
return 'BUFFERS'
|
|
endfunction
|
|
|
|
function! SmartTabsIndicator() abort
|
|
let tabs = lightline#tab#tabnum(tabpagenr())
|
|
let tab_total = tabpagenr('$')
|
|
return tabpagenr('$') > 1 ? ('TABS ' . tabs . '/' . tab_total) : ''
|
|
endfunction
|
|
|
|
" autoreload
|
|
command! LightlineReload call LightlineReload()
|
|
|
|
function! LightlineReload() abort
|
|
call lightline#init()
|
|
call lightline#colorscheme()
|
|
call lightline#update()
|
|
endfunction
|
|
|
|
let g:lightline#trailing_whitespace#indicator = ''
|