let g:lightline = { \ 'colorscheme': 'material_vim', \ 'active': { \ 'right': [ [ 'lineinfo' ], [ 'percent' ], [ 'fileformat', 'fileencoding', 'filetype' ] ], \ 'left': [ [ 'mode', 'paste' ], [ 'lsp_status' ], [ 'readonly', 'filename' ], [ 'lsp_info', 'lsp_hints', 'lsp_errors', 'lsp_warnings', 'lsp_ok' ] ], \ }, \ 'component_function': { }, \ 'tabline': { \ 'left': [ ['buffers'] ], \ 'right': [ ], \ }, \ 'component_expand': { \ 'buffers': 'lightline#bufferline#buffers', \ }, \ 'component_type': { \ 'buffers': 'tabsel', \ } \ } function! WordCount() let currentmode = mode() if !exists("g:lastmode_wc") let g:lastmode_wc = currentmode endif " if we modify file, open a new buffer, be in visual ever, or switch modes " since last run, we recompute. if &modified || !exists("b:wordcount") || currentmode =~? '\c.*v' || currentmode != g:lastmode_wc let g:lastmode_wc = currentmode let l:old_position = getpos('.') let l:old_status = v:statusmsg execute "silent normal g\" if v:statusmsg == "--No lines in buffer--" let b:wordcount = 0 else let s:split_wc = split(v:statusmsg) if index(s:split_wc, "Selected") < 0 let b:wordcount = str2nr(s:split_wc[11]) else let b:wordcount = str2nr(s:split_wc[5]) endif let v:statusmsg = l:old_status endif call setpos('.', l:old_position) return b:wordcount else return b:wordcount endif endfunction let g:lightline#trailing_whitespace#indicator = '' call lightline#lsp#register()