mirror of
https://github.com/itchyny/lightline.vim.git
synced 2025-11-15 15:03:51 -05:00
improve s:line()
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
" Filename: autoload/lightline.vim
|
" Filename: autoload/lightline.vim
|
||||||
" Author: itchyny
|
" Author: itchyny
|
||||||
" License: MIT License
|
" License: MIT License
|
||||||
" Last Change: 2020/11/20 21:34:03.
|
" Last Change: 2020/11/21 00:23:15.
|
||||||
" =============================================================================
|
" =============================================================================
|
||||||
|
|
||||||
let s:save_cpo = &cpo
|
let s:save_cpo = &cpo
|
||||||
@@ -379,6 +379,10 @@ function! s:expand(components) abort
|
|||||||
return [components, expanded, indices]
|
return [components, expanded, indices]
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! s:func(name) abort
|
||||||
|
return exists('*' . a:name) ? '%{' . a:name . '()}' : '%{exists("*' . a:name . '")?' . a:name . '():""}'
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! s:line(tabline, inactive) abort
|
function! s:line(tabline, inactive) abort
|
||||||
let _ = a:tabline ? '' : '%{lightline#link()}'
|
let _ = a:tabline ? '' : '%{lightline#link()}'
|
||||||
if s:lightline.palette == {}
|
if s:lightline.palette == {}
|
||||||
@@ -388,32 +392,32 @@ function! s:line(tabline, inactive) abort
|
|||||||
let [p, s] = a:tabline ? [s:lightline.tabline_separator, s:lightline.tabline_subseparator] : [s:lightline.separator, s:lightline.subseparator]
|
let [p, s] = a:tabline ? [s:lightline.tabline_separator, s:lightline.tabline_subseparator] : [s:lightline.separator, s:lightline.subseparator]
|
||||||
let [c, f, t, w] = [s:lightline.component, s:lightline.component_function, s:lightline.component_type, s:lightline.component_raw]
|
let [c, f, t, w] = [s:lightline.component, s:lightline.component_function, s:lightline.component_type, s:lightline.component_raw]
|
||||||
let mode = a:tabline ? 'tabline' : a:inactive ? 'inactive' : 'active'
|
let mode = a:tabline ? 'tabline' : a:inactive ? 'inactive' : 'active'
|
||||||
let l_ = has_key(s:lightline, mode) ? s:lightline[mode].left : s:lightline.active.left
|
let ls = has_key(s:lightline, mode) ? s:lightline[mode].left : s:lightline.active.left
|
||||||
let [lt, lc, ll] = s:expand(l_)
|
let [lc, le, li] = s:expand(ls)
|
||||||
let r_ = has_key(s:lightline, mode) ? s:lightline[mode].right : s:lightline.active.right
|
let rs = has_key(s:lightline, mode) ? s:lightline[mode].right : s:lightline.active.right
|
||||||
let [rt, rc, rl] = s:expand(r_)
|
let [rc, re, ri] = s:expand(rs)
|
||||||
for i in range(len(lt))
|
for i in range(len(lc))
|
||||||
let _ .= '%#LightlineLeft_' . mode . '_' . ll[i] . '#'
|
let _ .= '%#LightlineLeft_' . mode . '_' . li[i] . '#'
|
||||||
for j in range(len(lt[i]))
|
for j in range(len(lc[i]))
|
||||||
let x = lc[i][j] ? lt[i][j] : has_key(f, lt[i][j]) ? (exists('*' . f[lt[i][j]]) ? '%{' . f[lt[i][j]] . '()}' : '%{exists("*' . f[lt[i][j]] . '")?' . f[lt[i][j]] . '():""}') : get(c, lt[i][j], '')
|
let x = le[i][j] ? lc[i][j] : has_key(f, lc[i][j]) ? s:func(f[lc[i][j]]) : get(c, lc[i][j], '')
|
||||||
let _ .= has_key(t, lt[i][j]) && t[lt[i][j]] ==# 'raw' || get(w, lt[i][j]) || lc[i][j] ==# 2 || x ==# '' ? x : '%( ' . x . ' %)'
|
let _ .= has_key(t, lc[i][j]) && t[lc[i][j]] ==# 'raw' || get(w, lc[i][j]) || le[i][j] ==# 2 || x ==# '' ? x : '%( ' . x . ' %)'
|
||||||
if j < len(lt[i]) - 1 && s.left !=# ''
|
if j < len(lc[i]) - 1 && s.left !=# ''
|
||||||
let _ .= s:subseparator(lt[i][(j):], s.left, lc[i][(j):])
|
let _ .= s:subseparator(lc[i][(j):], s.left, le[i][(j):])
|
||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
let _ .= '%#LightlineLeft_' . mode . '_' . ll[i] . '_' . ll[i + 1] . '#'
|
let _ .= '%#LightlineLeft_' . mode . '_' . li[i] . '_' . li[i + 1] . '#'
|
||||||
let _ .= i < l + len(lt) - len(l_) && ll[i] < l || ll[i] != ll[i + 1] ? p.left : len(lt[i]) ? s.left : ''
|
let _ .= i < l + len(lc) - len(ls) && li[i] < l || li[i] != li[i + 1] ? p.left : len(lc[i]) ? s.left : ''
|
||||||
endfor
|
endfor
|
||||||
let _ .= '%#LightlineMiddle_' . mode . '#%='
|
let _ .= '%#LightlineMiddle_' . mode . '#%='
|
||||||
for i in range(len(rt) - 1, 0, -1)
|
for i in range(len(rc) - 1, 0, -1)
|
||||||
let _ .= '%#LightlineRight_' . mode . '_' . rl[i] . '_' . rl[i + 1] . '#'
|
let _ .= '%#LightlineRight_' . mode . '_' . ri[i] . '_' . ri[i + 1] . '#'
|
||||||
let _ .= i < r + len(rt) - len(r_) && rl[i] < r || rl[i] != rl[i + 1] ? p.right : len(rt[i]) ? s.right : ''
|
let _ .= i < r + len(rc) - len(rs) && ri[i] < r || ri[i] != ri[i + 1] ? p.right : len(rc[i]) ? s.right : ''
|
||||||
let _ .= '%#LightlineRight_' . mode . '_' . rl[i] . '#'
|
let _ .= '%#LightlineRight_' . mode . '_' . ri[i] . '#'
|
||||||
for j in range(len(rt[i]))
|
for j in range(len(rc[i]))
|
||||||
let x = rc[i][j] ? rt[i][j] : has_key(f, rt[i][j]) ? (exists('*' . f[rt[i][j]]) ? '%{' . f[rt[i][j]] . '()}' : '%{exists("*' . f[rt[i][j]] . '")?' . f[rt[i][j]] . '():""}') : get(c, rt[i][j], '')
|
let x = re[i][j] ? rc[i][j] : has_key(f, rc[i][j]) ? s:func(f[rc[i][j]]) : get(c, rc[i][j], '')
|
||||||
let _ .= has_key(t, rt[i][j]) && t[rt[i][j]] ==# 'raw' || get(w, rt[i][j]) || rc[i][j] ==# 2 || x ==# '' ? x : '%( ' . x . ' %)'
|
let _ .= has_key(t, rc[i][j]) && t[rc[i][j]] ==# 'raw' || get(w, rc[i][j]) || re[i][j] ==# 2 || x ==# '' ? x : '%( ' . x . ' %)'
|
||||||
if j < len(rt[i]) - 1 && s.right !=# ''
|
if j < len(rc[i]) - 1 && s.right !=# ''
|
||||||
let _ .= s:subseparator(rt[i][(j):], s.right, rc[i][(j):])
|
let _ .= s:subseparator(rc[i][(j):], s.right, re[i][(j):])
|
||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
endfor
|
endfor
|
||||||
|
|||||||
Reference in New Issue
Block a user