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 = ''