"" "" Settings "" let g:lightline = { \ "active": { \ "left": [[ "mode", "paste" ], \ ["branch", "filename", "readonly", "ctrlp"]], \ "right": [[ "encoding", "filetype"], \ [ "lineinfo", "warnings", "errors"]], \ }, \ "tabline": { "left": [ [ "tabs" ] ], "right": [ [ "battery", "date" ] ] }, \ "subseparator": { 'left': '→', 'right': '∘' }, \ "component": { \ "date": '%{strftime("%a %H:%M")}', \ "battery": '%{BatteryLevel()}', \ "branch" : '⚑ %{SpecialBuffer()? "" : fugitive#head()}', \ "readonly": '%{SpecialBuffer() || !&readonly? "" : "∅"}', \ "encoding": '%{!strlen(&fenc) || winwidth(0) < 70? "" : &fenc}', \ "filetype": '%{SpecialBuffer() || winwidth(0) < 70? "" : strlen(&filetype) ? &filetype : "no ft"}', \ }, \ 'component_visible_condition': { \ "battery": '(filereadable("/sys/class/power_supply/BAT0/capacity"))', \ "branch" : '(!SpecialBuffer() && strlen(fugitive#head()))', \ "readonly": '(!SpecialBuffer() && &readonly)', \ "filetype": '(!SpecialBuffer() && winwidth(0) > 70)', \ "encoding": '(strlen(&fenc) && winwidth(0) > 70)', \ }, \ "component_expand": { \ "errors": "NeomakeErr", \ "warnings": "NeomakeWarn", \ }, \ "component_type": { \ "errors": "error", \ "warnings": "warning", \ }, \ "component_function": { \ "mode": "Mode", \ "filename": "Filename", \ "ctrlp": "CtrlPMark", \ } \} "" "" Function helpers "" function BatteryLevel() let val = system("head -c2 /sys/class/power_supply/BAT0/capacity") return v:shell_error? "" : "⚡" . val . "%" endfunction function SpecialBuffer() return &filetype == "help" || bufname() =~ '\v(undotree|diffpanel|ControlP)' endfunction function! Filename() let fname = expand('%:t') let mod = &modified? "Δ" : &modifiable? "" : "δ" return fname == 'ControlP'? g:lightline.ctrlp_item : \ SpecialBuffer()? "" : \ (strlen(fname)? fname : 'new-file').' '.mod endfunction function! Mode() let fname = expand("%:t") return fname == "ControlP"? "CTRLP" : \ &filetype == "help"? "HELP" : \ bufname() =~ "undotree"? "UNDO" : \ winwidth(0) > 60 ? lightline#mode() : "" endfunction function! NeomakeErr() let errs = get(neomake#statusline#LoclistCounts(), 'E', 0) return errs? printf('%dE', errs) : '' endfunction function! NeomakeWarn() let warns = get(neomake#statusline#LoclistCounts(), 'W', 0) return warns? printf('%dW', warns) : '' endfunction autocmd User NeomakeCountsChanged,NeomakeMakerFinished call lightline#update() function! CtrlPMark() if bufname() =~ "ControlP" call lightline#link("iR"[g:lightline.ctrlp_regex]) endif return "" endfunction function! CtrlPStatusMain(focus, byfname, regex, prev, item, next, marked) let g:lightline.ctrlp_regex = a:regex let g:lightline.ctrlp_prev = a:prev let g:lightline.ctrlp_item = a:item let g:lightline.ctrlp_next = a:next return lightline#statusline(0) endfunction function! CtrlPStatusProg(str) return lightline#statusline(0) endfunction "" "" Color scheme "" let s:p = {'normal': {}, 'inactive': {}, \'insert': {}, 'replace' : {}, \'visual': {}, 'tabline' : {}} let s:p.normal.left = [ [ 07, 14 ], [ 08, 00 ] ] let s:p.insert.left = [ [ 07, 05 ], [ 14, 00 ] ] let s:p.visual.left = [ [ 00, 03 ], [ 14, 00 ] ] let s:p.replace.left = [ [ 00, 02 ], [ 14, 00 ] ] let s:p.inactive.left = [ [ 12, 00 ], [ 15, 00 ] ] let s:p.normal.right = [ [ 12, 00 ], [ 03, 00 ] ] let s:p.inactive.right = [ [ 12, 00 ], [ 13, 00 ] ] let s:p.normal.middle = [ [ 12, 00 ] ] let s:p.inactive.middle = [ [ 12, 00 ] ] let s:p.normal.error = [ [ 00, 05 ] ] let s:p.normal.warning = [ [ 00, 02 ] ] let s:p.tabline.left = [ [ 04, 00 ] ] let s:p.tabline.right = [ [ 03, 00 ] ] let s:p.tabline.tabsel = [ [ 00, 08 ] ] let g:lightline#colorscheme#default#palette = lightline#colorscheme#fill(s:p)