new function lightline#concatenate({list}, {num}) (close #18)

This commit is contained in:
itchyny
2013-08-31 19:26:50 +09:00
parent 3e14ff8e63
commit d044e87ada
3 changed files with 24 additions and 14 deletions

View File

@@ -674,10 +674,8 @@ endfunction
function! CtrlPMark() function! CtrlPMark()
if expand('%:t') =~ 'ControlP' if expand('%:t') =~ 'ControlP'
call lightline#link('iR'[g:lightline.ctrlp_regex]) call lightline#link('iR'[g:lightline.ctrlp_regex])
return g:lightline.ctrlp_prev . ' ' . g:lightline.subseparator.left . ' ' . return lightline#concatenate([g:lightline.ctrlp_prev, g:lightline.ctrlp_item
\ g:lightline.ctrlp_item . ' ' . g:lightline.subseparator.left . ' ' . \ , g:lightline.ctrlp_next], 0)
\ g:lightline.ctrlp_next . ' ' . g:lightline.subseparator.left . ' ' .
\ g:lightline.ctrlp_marked
else else
return '' return ''
endif endif
@@ -693,7 +691,6 @@ function! CtrlPStatusFunc_1(focus, byfname, regex, prev, item, next, marked)
let g:lightline.ctrlp_prev = a:prev let g:lightline.ctrlp_prev = a:prev
let g:lightline.ctrlp_item = a:item let g:lightline.ctrlp_item = a:item
let g:lightline.ctrlp_next = a:next let g:lightline.ctrlp_next = a:next
let g:lightline.ctrlp_marked = a:marked
return lightline#statusline(0) return lightline#statusline(0)
endfunction endfunction

View File

@@ -3,7 +3,7 @@
" Version: 0.0 " Version: 0.0
" Author: itchyny " Author: itchyny
" License: MIT License " License: MIT License
" Last Change: 2013/08/30 01:07:12. " Last Change: 2013/08/31 19:14:21.
" ============================================================================= " =============================================================================
let s:save_cpo = &cpo let s:save_cpo = &cpo
@@ -136,6 +136,15 @@ function! s:subseparator(x, y, s)
\'(has_key(f,v:val)?"!!strlen(exists(\"*".f[v:val]."\")?".f[v:val]."():\"\")":get(v,v:val,has_key(c,v:val)?"1":"0"))'),')+(')."))?('".a:s."'):''}" \'(has_key(f,v:val)?"!!strlen(exists(\"*".f[v:val]."\")?".f[v:val]."():\"\")":get(v,v:val,has_key(c,v:val)?"1":"0"))'),')+(')."))?('".a:s."'):''}"
endfunction endfunction
function! lightline#concatenate(x, s)
let [_, k, s] = ['', 0, ' ' . [s:lightline.subseparator.left, s:lightline.subseparator.right][!!a:s] . ' ']
for i in range(len(a:x))
let [_, k] = [_ . a:x[i], k || len(a:x[i])]
if k && i + 1 < len(a:x) && len(a:x[i + 1]) | let _ .= s | endif
endfor
return _
endfunction
function! lightline#statusline(inactive) function! lightline#statusline(inactive)
let [_, c, f, l, r] = [ '%{lightline#link()}', s:lightline.component, s:lightline.component_function, s:lightline.llen, s:lightline.rlen ] let [_, c, f, l, r] = [ '%{lightline#link()}', s:lightline.component, s:lightline.component_function, s:lightline.llen, s:lightline.rlen ]
let mode = a:inactive ? 'inactive' : 'active' let mode = a:inactive ? 'inactive' : 'active'

View File

@@ -4,7 +4,7 @@ Version: 0.0
Author: itchyny (https://github.com/itchyny) Author: itchyny (https://github.com/itchyny)
License: MIT License License: MIT License
Repository: https://github.com/itchyny/lightline.vim Repository: https://github.com/itchyny/lightline.vim
Last Change: 2013/08/30 02:19:57. Last Change: 2013/08/31 19:26:18.
CONTENTS *lightline-contents* CONTENTS *lightline-contents*
@@ -251,16 +251,23 @@ Exposed functions for lightline.vim.
lightline#update_once() *lightline#update_once()* lightline#update_once() *lightline#update_once()*
Updates the statuslines only once. Updates the statuslines only once.
lightline#link(...) *lightline#link()* lightline#link([mode]) *lightline#link()*
Creates links of the highlight groups for the active window. Creates links of the highlight groups for the active window.
This function accepts an optional argument. It should be one This function accepts an optional argument. It should be one
of the return value of |mode()|. of the return value of |mode()|.
lightline#highlight(inactive) *lightline#highlight()* lightline#highlight({inactive}) *lightline#highlight()*
Returns |statusline| strings. If the argument is 0, it returns Returns |statusline| strings. If the argument is 0, it returns
the statusline for active window, and the statusline for the statusline for active window, and the statusline for
inactive window otherwise. inactive window otherwise.
lightline#concatenate({list}, {num}) *lightline#concatenate()*
A string concatenation function. Concatenating all the strings
in {list} using the sub-separator of lightline. If {num} is 0,
then the left sub-separator is used. Otherwise, the right
sub-separator is used.
============================================================================== ==============================================================================
EXAMPLES *lightline-examples* EXAMPLES *lightline-examples*
@@ -483,10 +490,8 @@ For users who uses lots of plugins:
function! CtrlPMark() function! CtrlPMark()
if expand('%:t') =~ 'ControlP' if expand('%:t') =~ 'ControlP'
call lightline#link('iR'[g:lightline.ctrlp_regex]) call lightline#link('iR'[g:lightline.ctrlp_regex])
return g:lightline.ctrlp_prev . ' ' . g:lightline.subseparator.left . ' ' . return lightline#concatenate([g:lightline.ctrlp_prev, g:lightline.ctrlp_item
\ g:lightline.ctrlp_item . ' ' . g:lightline.subseparator.left . ' ' . \ , g:lightline.ctrlp_next], 0)
\ g:lightline.ctrlp_next . ' ' . g:lightline.subseparator.left . ' ' .
\ g:lightline.ctrlp_marked
else else
return '' return ''
endif endif
@@ -502,7 +507,6 @@ For users who uses lots of plugins:
let g:lightline.ctrlp_prev = a:prev let g:lightline.ctrlp_prev = a:prev
let g:lightline.ctrlp_item = a:item let g:lightline.ctrlp_item = a:item
let g:lightline.ctrlp_next = a:next let g:lightline.ctrlp_next = a:next
let g:lightline.ctrlp_marked = a:marked
return lightline#statusline(0) return lightline#statusline(0)
endfunction endfunction