support for tabline (close #6, close #27, close #28, close #29)

This commit is contained in:
itchyny
2013-09-07 16:40:26 +09:00
parent 2e36a8bdb8
commit 7c7ad0399d
17 changed files with 702 additions and 134 deletions

View File

@@ -1,5 +1,5 @@
# lightline.vim # lightline.vim
A light and configurable statusline for Vim A light and configurable statusline/tabline for Vim
https://github.com/itchyny/lightline.vim https://github.com/itchyny/lightline.vim
@@ -58,7 +58,7 @@ landscape is my colorscheme, which is a high-contrast cui-supported colorscheme,
## Spirit of this plugin ## Spirit of this plugin
+ Minimalism. The core script is very small. + Minimalism. The core script is very small.
+ Configurability. You can create your own component and easily add to the statusline. + Configurability. You can create your own component and easily add to the statusline/tabline.
+ Orthogonality. Any plugin should not change the settings of another plugin. Such plugin-crossing settings should be written by users in `.vimrc`. + Orthogonality. Any plugin should not change the settings of another plugin. Such plugin-crossing settings should be written by users in `.vimrc`.
## Author ## Author
@@ -598,7 +598,7 @@ let g:lightline = {
\ 'colorscheme': 'wombat', \ 'colorscheme': 'wombat',
\ 'active': { \ 'active': {
\ 'left': [ [ 'mode', 'paste' ], [ 'fugitive', 'filename' ], ['ctrlpmark'] ], \ 'left': [ [ 'mode', 'paste' ], [ 'fugitive', 'filename' ], ['ctrlpmark'] ],
\ 'right': [[ 'lineinfo', 'syntastic' ], ['percent'], [ 'fileformat', 'fileencoding', 'filetype']] \ 'right': [ [ 'syntastic', 'lineinfo' ], ['percent'], [ 'fileformat', 'fileencoding', 'filetype' ] ]
\ }, \ },
\ 'component_function': { \ 'component_function': {
\ 'fugitive': 'MyFugitive', \ 'fugitive': 'MyFugitive',
@@ -607,9 +607,14 @@ let g:lightline = {
\ 'filetype': 'MyFiletype', \ 'filetype': 'MyFiletype',
\ 'fileencoding': 'MyFileencoding', \ 'fileencoding': 'MyFileencoding',
\ 'mode': 'MyMode', \ 'mode': 'MyMode',
\ 'syntastic': 'SyntasticStatuslineFlag',
\ 'ctrlpmark': 'CtrlPMark', \ 'ctrlpmark': 'CtrlPMark',
\ }, \ },
\ 'component_expand': {
\ 'syntastic': 'SyntasticStatuslineFlag',
\ },
\ 'component_type': {
\ 'syntastic': 'error',
\ },
\ 'subseparator': { 'left': '|', 'right': '|' } \ 'subseparator': { 'left': '|', 'right': '|' }
\ } \ }
@@ -705,6 +710,15 @@ function! TagbarStatusFunc(current, sort, fname, ...) abort
return lightline#statusline(0) return lightline#statusline(0)
endfunction endfunction
augroup AutoSyntastic
autocmd!
autocmd BufWritePost *.c,*.cpp call s:syntastic()
augroup END
function! s:syntastic()
SyntasticCheck
call lightline#update()
endfunction
let g:unite_force_overwrite_statusline = 0 let g:unite_force_overwrite_statusline = 0
let g:vimfiler_force_overwrite_statusline = 0 let g:vimfiler_force_overwrite_statusline = 0
let g:vimshell_force_overwrite_statusline = 0 let g:vimshell_force_overwrite_statusline = 0

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/31 19:42:33. " Last Change: 2013/09/07 16:39:34.
" ============================================================================= " =============================================================================
let s:save_cpo = &cpo let s:save_cpo = &cpo
@@ -27,15 +27,23 @@ endfunction
function! lightline#init() function! lightline#init()
let s:lightline = deepcopy(get(g:, 'lightline', {})) let s:lightline = deepcopy(get(g:, 'lightline', {}))
let s:lightline.active = get(s:lightline, 'active', {}) for k in ['active', 'inactive', 'tabline', 'tab', 'mode_map', 'mode_fallback',
\ 'component', 'component_visible_condition', 'component_function', 'component_expand', 'component_type',
\ 'tab_component', 'tab_component_function', 'separator', 'subseparator' ]
if !has_key(s:lightline, k) | let s:lightline[k] = {} | endif
endfor
call extend(s:lightline.active, { call extend(s:lightline.active, {
\ 'left': [ [ 'mode', 'paste' ], [ 'readonly', 'filename', 'modified' ] ], \ 'left': [ [ 'mode', 'paste' ], [ 'readonly', 'filename', 'modified' ] ],
\ 'right': [ [ 'lineinfo' ], [ 'percent' ], [ 'fileformat', 'fileencoding', 'filetype' ] ] }, 'keep') \ 'right': [ [ 'lineinfo' ], [ 'percent' ], [ 'fileformat', 'fileencoding', 'filetype' ] ] }, 'keep')
let s:lightline.inactive = get(s:lightline, 'inactive', {})
call extend(s:lightline.inactive, { call extend(s:lightline.inactive, {
\ 'left': [ [ 'filename' ] ], \ 'left': [ [ 'filename' ] ],
\ 'right': [ [ 'lineinfo' ], [ 'percent' ] ] }, 'keep') \ 'right': [ [ 'lineinfo' ], [ 'percent' ] ] }, 'keep')
let s:lightline.mode_map = get(s:lightline, 'mode_map', {}) call extend(s:lightline.tabline, {
\ 'left': [ [ 'tabs' ] ],
\ 'right': [ [ 'close' ] ] }, 'keep')
call extend(s:lightline.tab, {
\ 'active': [ 'tabnum', 'filename', 'modified' ],
\ 'inactive': [ 'tabnum', 'filename', 'modified' ] }, 'keep')
call extend(s:lightline.mode_map, { call extend(s:lightline.mode_map, {
\ 'n': 'NORMAL', 'i': 'INSERT', 'R': 'REPLACE', 'v': 'VISUAL', \ 'n': 'NORMAL', 'i': 'INSERT', 'R': 'REPLACE', 'v': 'VISUAL',
\ 'V': 'V-LINE', 'c': 'COMMAND', "\<C-v>": 'V-BLOCK', 's': 'SELECT', \ 'V': 'V-LINE', 'c': 'COMMAND', "\<C-v>": 'V-BLOCK', 's': 'SELECT',
@@ -43,25 +51,25 @@ function! lightline#init()
let s:lightline._mode_ = { let s:lightline._mode_ = {
\ 'n': 'normal', 'i': 'insert', 'R': 'replace', 'v': 'visual', 'V': 'visual', \ 'n': 'normal', 'i': 'insert', 'R': 'replace', 'v': 'visual', 'V': 'visual',
\ 'c': 'command', "\<C-v>": 'visual', 's': 'select', 'S': 'select', "\<C-s>": 'select' } \ 'c': 'command', "\<C-v>": 'visual', 's': 'select', 'S': 'select', "\<C-s>": 'select' }
let s:lightline.mode_fallback = get(s:lightline, 'mode_fallback', {})
call extend(s:lightline.mode_fallback, { 'replace': 'insert', 'select': 'visual' }) call extend(s:lightline.mode_fallback, { 'replace': 'insert', 'select': 'visual' })
let s:lightline.component = get(s:lightline, 'component', {})
call extend(s:lightline.component, { call extend(s:lightline.component, {
\ 'mode': '%{lightline#mode()}', \ 'mode': '%{lightline#mode()}',
\ 'absolutepath': '%F', 'relativepath': '%f', 'filename': '%t', 'modified': '%M', 'bufnum': '%n', \ 'absolutepath': '%F', 'relativepath': '%f', 'filename': '%t', 'modified': '%M', 'bufnum': '%n',
\ 'paste': '%{&paste?"PASTE":""}', 'readonly': '%R', 'charvalue': '%b', 'charvaluehex': '%B', \ 'paste': '%{&paste?"PASTE":""}', 'readonly': '%R', 'charvalue': '%b', 'charvaluehex': '%B',
\ 'fileencoding': '%{strlen(&fenc)?&fenc:&enc}', 'fileformat': '%{&fileformat}', \ 'fileencoding': '%{strlen(&fenc)?&fenc:&enc}', 'fileformat': '%{&fileformat}',
\ 'filetype': '%{strlen(&filetype)?&filetype:"no ft"}', 'percent': '%3p%%', 'percentwin': '%P', \ 'filetype': '%{strlen(&filetype)?&filetype:"no ft"}', 'percent': '%3p%%', 'percentwin': '%P',
\ 'lineinfo': '%3l:%-2v', 'line': '%l', 'column': '%c' }, 'keep') \ 'lineinfo': '%3l:%-2v', 'line': '%l', 'column': '%c', 'close': '%999X X ' }, 'keep')
let s:lightline.component_visible_condition = get(s:lightline, 'component_visible_condition', {})
call extend(s:lightline.component_visible_condition, { call extend(s:lightline.component_visible_condition, {
\ 'modified': '&modified||!&modifiable', 'readonly': '&readonly', 'paste': '&paste' }, 'keep') \ 'modified': '&modified||!&modifiable', 'readonly': '&readonly', 'paste': '&paste' }, 'keep')
let s:lightline.component_function = get(s:lightline, 'component_function', {}) call extend(s:lightline.component_expand, { 'tabs': 'lightline#tabs' }, 'keep')
let s:lightline.separator = get(s:lightline, 'separator', {}) call extend(s:lightline.component_type, { 'tabs': 'tabsel', 'close': 'raw' }, 'keep')
call extend(s:lightline.tab_component_function, {
\ 'filename': 'lightline#tab#filename', 'modified': 'lightline#tab#modified',
\ 'readonly': 'lightline#tab#readonly', 'tabnum': 'lightline#tab#tabnum' }, 'keep')
call extend(s:lightline.separator, { 'left': '', 'right': '' }, 'keep') call extend(s:lightline.separator, { 'left': '', 'right': '' }, 'keep')
let s:lightline.subseparator = get(s:lightline, 'subseparator', {})
call extend(s:lightline.subseparator, { 'left': '|', 'right': '|' }, 'keep') call extend(s:lightline.subseparator, { 'left': '|', 'right': '|' }, 'keep')
call extend(s:lightline, { 'palette': {}, 'colorscheme': 'default' }, 'keep') call extend(s:lightline, { 'palette': {}, 'colorscheme': 'default' }, 'keep')
set tabline=%!lightline#tabline()
endfunction endfunction
function! lightline#colorscheme() function! lightline#colorscheme()
@@ -81,16 +89,42 @@ function! lightline#mode()
return get(s:lightline.mode_map, mode(), s:lightline.mode_map['?']) return get(s:lightline.mode_map, mode(), s:lightline.mode_map['?'])
endfunction endfunction
let s:mode = ''
function! lightline#link(...) function! lightline#link(...)
let mode = get(s:lightline._mode_, a:0 ? a:1 : mode(), 'normal') let mode = get(s:lightline._mode_, a:0 ? a:1 : mode(), 'normal')
for i in range(len(s:lightline.active.left)) if s:mode == mode | return '' | endif
let s:mode = mode
let [left, right, types] = [s:lightline.active.left, s:lightline.active.right, values(s:lightline.component_type)]
for i in range(len(left))
exec printf('hi link LightLineLeft_active_%d LightLineLeft_%s_%d', i, mode, i) exec printf('hi link LightLineLeft_active_%d LightLineLeft_%s_%d', i, mode, i)
exec printf('hi link LightLineLeft_active_%d_%d LightLineLeft_%s_%d_%d', i, i + 1, mode, i, i + 1) exec printf('hi link LightLineLeft_active_%d_%d LightLineLeft_%s_%d_%d', i, i + 1, mode, i, i + 1)
for j in types
exec printf('hi link LightLineLeft_active_%d_%s LightLineLeft_%s_%d_%s', i, j, mode, i, j)
exec printf('hi link LightLineLeft_active_%s_%d LightLineLeft_%s_%s_%d', j, i, mode, j, i)
endfor
endfor endfor
exec printf('hi link LightLineMiddle_active LightLineMiddle_%s', mode) exec printf('hi link LightLineMiddle_active LightLineMiddle_%s', mode)
for i in range(len(s:lightline.active.right)) for i in range(len(right))
exec printf('hi link LightLineRight_active_%d LightLineRight_%s_%d', i, mode, i) exec printf('hi link LightLineRight_active_%d LightLineRight_%s_%d', i, mode, i)
exec printf('hi link LightLineRight_active_%d_%d LightLineRight_%s_%d_%d', i, i + 1, mode, i, i + 1) exec printf('hi link LightLineRight_active_%d_%d LightLineRight_%s_%d_%d', i, i + 1, mode, i, i + 1)
for j in types
exec printf('hi link LightLineRight_active_%d_%s LightLineRight_%s_%d_%s', i, j, mode, i, j)
exec printf('hi link LightLineRight_active_%s_%d LightLineRight_%s_%s_%d', j, i, mode, j, i)
endfor
endfor
for j in types
exec printf('hi link LightLineLeft_active_%s LightLineLeft_%s_%s', j, mode, j)
exec printf('hi link LightLineRight_active_%s LightLineRight_%s_%s', j, mode, j)
exec printf('hi link LightLineLeft_active_%s_%d LightLineLeft_%s_%s_%d', j, len(left), mode, j, len(left))
exec printf('hi link LightLineLeft_active_%d_%s LightLineLeft_%s_%d_%s', len(left), j, mode, len(left), j)
exec printf('hi link LightLineRight_active_%s_%d LightLineRight_%s_%s_%d', j, len(right), mode, j, len(right))
exec printf('hi link LightLineRight_active_%d_%s LightLineRight_%s_%d_%s', len(right), j, mode, len(right), j)
for k in types
exec printf('hi link LightLineLeft_active_%s_%s LightLineLeft_%s_%s_%s', j, k, mode, j, k)
exec printf('hi link LightLineLeft_active_%s_%s LightLineLeft_%s_%s_%s', k, j, mode, k, j)
exec printf('hi link LightLineRight_active_%s_%s LightLineRight_%s_%s_%s', j, k, mode, j, k)
exec printf('hi link LightLineRight_active_%s_%s LightLineRight_%s_%s_%s', k, j, mode, k, j)
endfor
endfor endfor
return '' return ''
endfunction endfunction
@@ -100,25 +134,33 @@ function! s:term(l)
endfunction endfunction
function! lightline#highlight() function! lightline#highlight()
let [c, f] = [s:lightline.palette, s:lightline.mode_fallback] let [c, f, g] = [s:lightline.palette, s:lightline.mode_fallback, s:lightline.component_type]
if (has('win32') || has('win64')) && !has('gui_running')
for u in values(c)
for v in values(u)
for _ in v | let [_[2], _[3]] = [lightline#colortable#gui2cui(_[0], _[2]), lightline#colortable#gui2cui(_[1], _[3])] | endfor
endfor
endfor
endif
let [s:lightline.llen, s:lightline.rlen] = [len(c.normal.left), len(c.normal.right)] let [s:lightline.llen, s:lightline.rlen] = [len(c.normal.left), len(c.normal.right)]
for mode in ['normal', 'insert', 'replace', 'visual', 'inactive', 'command', 'select'] let [s:lightline.tab_llen, s:lightline.tab_rlen] = [len(has_key(c,'tabline') ? c.tabline.left : c.normal.left), len(has_key(c,'tabline') ? c.tabline.right : c.normal.right)]
for mode in ['normal', 'insert', 'replace', 'visual', 'inactive', 'command', 'select', 'tabline']
let d = has_key(c, mode) ? mode : has_key(f, mode) && has_key(c, f[mode]) ? f[mode] : 'normal' let d = has_key(c, mode) ? mode : has_key(f, mode) && has_key(c, f[mode]) ? f[mode] : 'normal'
let left = d == 'inactive' ? s:lightline.inactive.left : s:lightline.active.left let left = d == 'tabline' ? s:lightline.tabline.left : d == 'inactive' ? s:lightline.inactive.left : s:lightline.active.left
let right = d == 'inactive' ? s:lightline.inactive.right : s:lightline.active.right let right = d == 'tabline' ? s:lightline.tabline.right : d == 'inactive' ? s:lightline.inactive.right : s:lightline.active.right
let l = has_key(c,d) && has_key(c[d],'left') ? c[d].left : has_key(f,d) && has_key(c,f[d]) && has_key(c[f[d]],'left') ? c[f[d]].left : c.normal.left let l = has_key(c,d) && has_key(c[d],'left') ? c[d].left : has_key(f,d) && has_key(c,f[d]) && has_key(c[f[d]],'left') ? c[f[d]].left : c.normal.left
let r = has_key(c,d) && has_key(c[d],'right') ? c[d].right : has_key(f,d) && has_key(c,f[d]) && has_key(c[f[d]],'right') ? c[f[d]].right : c.normal.right let r = has_key(c,d) && has_key(c[d],'right') ? c[d].right : has_key(f,d) && has_key(c,f[d]) && has_key(c[f[d]],'right') ? c[f[d]].right : c.normal.right
let m = has_key(c,d) && has_key(c[d],'middle') ? c[d].middle[0] : has_key(f,d) && has_key(c,f[d]) && has_key(c[f[d]],'middle') ? c[f[d]].middle[0] : c.normal.middle[0] let m = has_key(c,d) && has_key(c[d],'middle') ? c[d].middle[0] : has_key(f,d) && has_key(c,f[d]) && has_key(c[f[d]],'middle') ? c[f[d]].middle[0] : c.normal.middle[0]
if (has('win32') || has('win64')) && !has('gui_running')
for _ in l | let [_[2], _[3]] = [lightline#colortable#gui2cui(_[0], _[2]), lightline#colortable#gui2cui(_[1], _[3])] | endfor
for _ in r | let [_[2], _[3]] = [lightline#colortable#gui2cui(_[0], _[2]), lightline#colortable#gui2cui(_[1], _[3])] | endfor
let [m[2], m[3]] = [lightline#colortable#gui2cui(m[0], m[2]), lightline#colortable#gui2cui(_[1], m[3])]
endif
for i in range(len(left)) for i in range(len(left))
let [li, lj] = [i < len(l) ? l[i] : m, i + 1 < len(l) ? l[i + 1] : m] let [li, lj] = [i < len(l) ? l[i] : m, i + 1 < len(l) ? l[i + 1] : m]
exec printf('hi LightLineLeft_%s_%d guifg=%s guibg=%s ctermfg=%d ctermbg=%d %s', mode, i, li[0], li[1], li[2], li[3], s:term(li)) exec printf('hi LightLineLeft_%s_%d guifg=%s guibg=%s ctermfg=%d ctermbg=%d %s', mode, i, li[0], li[1], li[2], li[3], s:term(li))
exec printf('hi LightLineLeft_%s_%d_%d guifg=%s guibg=%s ctermfg=%d ctermbg=%d', mode, exec printf('hi LightLineLeft_%s_%d_%d guifg=%s guibg=%s ctermfg=%d ctermbg=%d', mode,
\ i, i+1, i>=len(l) ? m[i+1==len(left)] : li[1], i==len(left)-1 ? m[1] : lj[1], i>=len(l) ? m[2+(i+1==len(left))] : li[3], i==len(left)-1 ? m[3] : lj[3]) \ i, i+1, i>=len(l) ? m[i+1==len(left)] : li[1], i==len(left)-1 ? m[1] : lj[1], i>=len(l) ? m[2+(i+1==len(left))] : li[3], i==len(left)-1 ? m[3] : lj[3])
for j in values(g)
let s = has_key(c,d) && has_key(c[d],j) ? c[d][j][0] : has_key(c,'tabline') && has_key(c.tabline,j) ? c.tabline[j][0] : has_key(c.normal,j) ? c.normal[j][0] : l[0]
exec printf('hi LightLineLeft_%s_%d_%s guifg=%s guibg=%s ctermfg=%d ctermbg=%d %s', mode, i, j, li[1], s[1], li[3], s[3], s:term(li))
exec printf('hi LightLineLeft_%s_%s_%d guifg=%s guibg=%s ctermfg=%d ctermbg=%d %s', mode, j, i, s[1], li[1], s[3], li[3], s:term(li))
endfor
endfor endfor
exec printf('hi LightLineMiddle_%s guifg=%s guibg=%s ctermfg=%d ctermbg=%d %s', mode, m[0], m[1], m[2], m[3], s:term(m)) exec printf('hi LightLineMiddle_%s guifg=%s guibg=%s ctermfg=%d ctermbg=%d %s', mode, m[0], m[1], m[2], m[3], s:term(m))
for i in range(len(right)) for i in range(len(right))
@@ -126,14 +168,35 @@ function! lightline#highlight()
exec printf('hi LightLineRight_%s_%d_%d guifg=%s guibg=%s ctermfg=%d ctermbg=%d', mode, exec printf('hi LightLineRight_%s_%d_%d guifg=%s guibg=%s ctermfg=%d ctermbg=%d', mode,
\ i, i+1, i>=len(r) ? m[i+1==len(right)] : ri[1], i==len(right)-1 ? m[1] : rj[1], i>=len(r) ? m[2+(i+1==len(right))] : ri[3], i==len(right)-1 ? m[3] : rj[3]) \ i, i+1, i>=len(r) ? m[i+1==len(right)] : ri[1], i==len(right)-1 ? m[1] : rj[1], i>=len(r) ? m[2+(i+1==len(right))] : ri[3], i==len(right)-1 ? m[3] : rj[3])
exec printf('hi LightLineRight_%s_%d guifg=%s guibg=%s ctermfg=%d ctermbg=%d %s', mode, i, ri[0], ri[1], ri[2], ri[3], s:term(ri)) exec printf('hi LightLineRight_%s_%d guifg=%s guibg=%s ctermfg=%d ctermbg=%d %s', mode, i, ri[0], ri[1], ri[2], ri[3], s:term(ri))
for j in values(g)
let s = has_key(c,d) && has_key(c[d],j) ? c[d][j][0] : has_key(c,'tabline') && has_key(c.tabline,j) ? c.tabline[j][0] : has_key(c.normal,j) ? c.normal[j][0] : l[0]
exec printf('hi LightLineRight_%s_%d_%s guifg=%s guibg=%s ctermfg=%d ctermbg=%d %s', mode, i, j, ri[1], s[1], ri[3], s[3], s:term(ri))
exec printf('hi LightLineRight_%s_%s_%d guifg=%s guibg=%s ctermfg=%d ctermbg=%d %s', mode, j, i, s[1], ri[1], s[3], ri[3], s:term(ri))
endfor
endfor
for j in values(g)
let s = has_key(c,d) && has_key(c[d],j) ? c[d][j][0] : has_key(c,'tabline') && has_key(c.tabline,j) ? c.tabline[j][0] : has_key(c.normal,j) ? c.normal[j][0] : l[0]
exec printf('hi LightLineLeft_%s_%s guifg=%s guibg=%s ctermfg=%d ctermbg=%d %s', mode, j, s[0], s[1], s[2], s[3], s:term(s))
exec printf('hi LightLineRight_%s_%s guifg=%s guibg=%s ctermfg=%d ctermbg=%d %s', mode, j, s[0], s[1], s[2], s[3], s:term(s))
exec printf('hi LightLineLeft_%s_%s_%d guifg=%s guibg=%s ctermfg=%d ctermbg=%d %s', mode, j, len(left), s[1], m[1], s[3], m[3], s:term(s))
exec printf('hi LightLineLeft_%s_%d_%s guifg=%s guibg=%s ctermfg=%d ctermbg=%d %s', mode, len(left), j, m[1], s[1], m[3], s[3], s:term(m))
exec printf('hi LightLineRight_%s_%s_%d guifg=%s guibg=%s ctermfg=%d ctermbg=%d %s', mode, j, len(right), s[1], m[1], s[3], m[3], s:term(s))
exec printf('hi LightLineRight_%s_%d_%s guifg=%s guibg=%s ctermfg=%d ctermbg=%d %s', mode, len(right), j, m[1], s[1], m[3], s[3], s:term(m))
for k in values(g)
let t = has_key(c,d) && has_key(c[d],k) ? c[d][k][0] : has_key(c,'tabline') && has_key(c.tabline,k) ? c.tabline[k][0] : has_key(c.normal,k) ? c.normal[k][0] : l[0]
exec printf('hi LightLineLeft_%s_%s_%s guifg=%s guibg=%s ctermfg=%d ctermbg=%d %s', mode, j, k, s[1], t[1], s[3], t[3], s:term(s))
exec printf('hi LightLineLeft_%s_%s_%s guifg=%s guibg=%s ctermfg=%d ctermbg=%d %s', mode, k, j, t[1], s[1], t[3], s[3], s:term(t))
exec printf('hi LightLineRight_%s_%s_%s guifg=%s guibg=%s ctermfg=%d ctermbg=%d %s', mode, j, k, s[1], t[1], s[3], t[3], s:term(s))
exec printf('hi LightLineRight_%s_%s_%s guifg=%s guibg=%s ctermfg=%d ctermbg=%d %s', mode, k, j, t[1], s[1], t[3], s[3], s:term(t))
endfor
endfor endfor
endfor endfor
endfunction endfunction
function! s:subseparator(x, y, s) function! s:subseparator(x, y, s, a, b)
let [c, f, v] = [ s:lightline.component, s:lightline.component_function, s:lightline.component_visible_condition ] let [c, f, v] = [ s:lightline.component, s:lightline.component_function, s:lightline.component_visible_condition ]
return '%{('.(has_key(f,a:x)?'!!strlen(exists("*'.f[a:x].'")?'.f[a:x].'():"")':get(v,a:x,has_key(c,a:x)?"1":"0")).')*(('.join(map(copy(a:y), return '%{('.(a:a?"1":has_key(f,a:x)?'!!strlen(exists("*'.f[a:x].'")?'.f[a:x].'():"")':get(v,a:x,has_key(c,a:x)?"1":"0")).')*(('.join(map(copy(a:y),
\'(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":"1"))'),')+(')."))?('".a:s."'):''}"
endfunction endfunction
function! lightline#concatenate(x, s) function! lightline#concatenate(x, s)
@@ -146,30 +209,132 @@ function! lightline#concatenate(x, s)
endfunction 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 ] return s:line(0, a:inactive)
let mode = a:inactive ? 'inactive' : 'active' endfunction
let left = has_key(s:lightline, mode) ? s:lightline[mode].left : s:lightline.active.left
let right = has_key(s:lightline, mode) ? s:lightline[mode].right : s:lightline.active.right function! s:expand(tabline, x, l)
for i in range(len(left)) let [e, t] = [ s:lightline.component_expand, s:lightline.component_type ]
let _ .= printf('%%#LightLineLeft_%s_%d#', mode, i) let [a, c, _] = [[], [], []]
for j in range(len(left[i])) for i in range(len(a:x))
let _ .= substitute('%( '.(has_key(f,left[i][j])?'%{exists("*'.f[left[i][j]].'")?'.f[left[i][j]].'():""}':get(c,left[i][j],'')).' %)', '^%( %)', '', '') if !len(_) || len(_[-1]) | call add(_, []) | call add(c, []) | endif
if j < len(left[i]) - 1 | let _ .= s:subseparator(left[i][j], left[i][j+1:], s:lightline.subseparator.left) | endif for j in range(len(a:x[i]))
if has_key(e, a:x[i][j])
try
let r = exists('*'.e[a:x[i][j]]) ? eval(e[a:x[i][j]] . '()') : ''
if type(r) == 1 && r == '' | continue | endif
let s = type(r) == 1 ? [[], [r], []] : r
unlet r
catch
continue
endtry
if len(s[0])
if !len(a) || type(a[-1]) != type(i) || a[-1] != i
if len(_[-1])
call add(_, s[0]) | call add(c, repeat([1], len(s[0])))
else
call extend(_[-1], s[0]) | call extend(c[-1], repeat([1], len(s[0])))
endif
call add(a, i)
else
call extend(_[-1], s[0]) | call extend(c[-1], repeat([1], len(s[0])))
endif
endif
if has_key(t, a:x[i][j])
if len(s[1])
if len(_[-1])
call add(_, s[1]) | call add(c, repeat([1], len(s[1])))
else
call extend(_[-1], s[1]) | call extend(c[-1], repeat([1], len(s[1])))
endif
call add(a, t[a:x[i][j]])
endif
if len(s[2])
if len(_[-1]) && (type(a[-1]) != type(i) || a[-1] != i)
call add(_, s[2]) | call add(c, repeat([1], len(s[2]))) | call add(a, i)
else
call extend(_[-1], s[2]) | call extend(c[-1], repeat([1], len(s[2])))
endif
endif
else
if !len(a) || type(a[-1]) != type(i) || a[-1] != i
call add(a, i)
if len(_[-1])
call add(_, s[1]) | call add(c, repeat([1], len(s[1])))
else
call extend(_[-1], s[1]) | call extend(c[-1], repeat([1], len(s[1])))
endif
else
call extend(_[-1], s[1]) | call extend(c[-1], repeat([1], len(s[1])))
endif
if len(s[2]) | call extend(_[-1], s[2]) | call extend(c[-1], repeat([1], len(s[2])))| endif
endif
else
if !len(a) || type(a[-1]) != type(i) || a[-1] != i
call add(a, i)
if len(_) && len(_[-1]) | call add(_, []) | call add(c, []) | endif
endif
call add(_[-1], a:x[i][j]) | call add(c[-1], 0)
endif
endfor endfor
let _ .= printf('%%#LightLineLeft_%s_%d_%d#', mode, i, i + 1) . (i < l ? s:lightline.separator.left : len(left[i]) ? s:lightline.subseparator.left : '') endfor
call add(a, len(a:x))
while len(_) && !len(_[-1]) | call remove(_, -1) | call remove(c, -1) | endwhile
return [a, c, _]
endfunction
function! s:line(tabline, inactive)
let _ = a:tabline ? '' : '%{lightline#link()}'
let [l, r] = a:tabline ? [s:lightline.tab_llen, s:lightline.tab_rlen] : [s:lightline.llen, s:lightline.rlen]
let [c, f, e, t] = [s:lightline.component, s:lightline.component_function, s:lightline.component_expand, s:lightline.component_type]
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 [ll, lc, lt] = s:expand(a:tabline, copy(l_), l)
let r_ = has_key(s:lightline, mode) ? s:lightline[mode].right : s:lightline.active.right
let [rl, rc, rt] = s:expand(a:tabline, copy(r_), r)
for i in range(len(lt))
let _ .= printf('%%#LightLineLeft_%s_%s#', mode, ll[i])
for j in range(len(lt[i]))
let x = substitute('%( '.(lc[i][j] ? lt[i][j] : has_key(f,lt[i][j])?'%{exists("*'.f[lt[i][j]].'")?'.f[lt[i][j]].'():""}':get(c,lt[i][j],'')).' %)', '^%( %)', '', '')
let _ .= has_key(t,lt[i][j])&&t[lt[i][j]]=='raw'&&strlen(x)>7 ? x[3:-2] : x
if j < len(lt[i]) - 1 | let _ .= s:subseparator(lt[i][j], lt[i][j+1:], s:lightline.subseparator.left, lc[i][j], lc[i][j+1:]) | endif
endfor
let _ .= printf('%%#LightLineLeft_%s_%s_%s#', mode, ll[i], ll[i + 1]) . (i < l + len(lt) - len(l_) && ll[i] < l || type(ll[i]) != type(ll[i + 1]) || type(ll[i]) && type(ll[i + 1]) && ll[i] != ll[i + 1] ? s:lightline.separator.left : len(lt[i]) ? s:lightline.subseparator.left : '')
endfor endfor
let _ .= printf('%%#LightLineMiddle_%s#%%=', mode) let _ .= printf('%%#LightLineMiddle_%s#%%=', mode)
for i in reverse(range(len(right))) for i in reverse(range(len(rt)))
let _ .= printf('%%#LightLineRight_%s_%d_%d#', mode, i, i + 1) . (i < r ? s:lightline.separator.right : len(right[i]) ? s:lightline.subseparator.right : '') let _ .= printf('%%#LightLineRight_%s_%s_%s#', mode, rl[i], rl[i + 1]) . (i < r + len(rt) - len(r_) && rl[i] < r || type(rl[i]) != type(rl[i + 1]) || type(rl[i]) && type(rl[i + 1]) && rl[i] != rl[i + 1] ? s:lightline.separator.right : len(rt[i]) ? s:lightline.subseparator.right : '')
let _ .= printf('%%#LightLineRight_%s_%d#', mode, i) let _ .= printf('%%#LightLineRight_%s_%s#', mode, rl[i])
for j in range(len(right[i])) for j in range(len(rt[i]))
if j | let _ .= s:subseparator(right[i][j], right[i][:j-1], s:lightline.subseparator.right) | endif if j | let _ .= s:subseparator(rt[i][j], rt[i][:j-1], s:lightline.subseparator.right, rc[i][j], rc[i][j+1:]) | endif
let _ .= substitute('%( '.(has_key(f,right[i][j])?'%{exists("*'.f[right[i][j]].'")?'.f[right[i][j]].'():""}':get(c,right[i][j],'')).' %)', '^%( %)', '', '') let x = substitute('%( '.(rc[i][j] ? rt[i][j] : has_key(f,rt[i][j])?'%{exists("*'.f[rt[i][j]].'")?'.f[rt[i][j]].'():""}':get(c,rt[i][j],'')).' %)', '^%( %)', '', '')
let _ .= has_key(t,rt[i][j])&&t[rt[i][j]]=='raw'&&strlen(x)>7 ? x[3:-4] : x
endfor endfor
endfor endfor
return _ return _
endfunction endfunction
function! lightline#tabline()
return s:line(1, 0)
endfunction
function! lightline#tabs()
let [_, t, l, x, y, z] = ['', tabpagenr(), tabpagenr('$'), [], [], []]
for i in range(1, l)
call add(i<t?(x):i==t?(y):z, '%'.i.'T%{lightline#onetab('.i.','.(i==t).')}'.(i==l?'%T':''))
endfor
return [x, y, z]
endfunction
function! lightline#onetab(n, active)
let [_, a] = ['', s:lightline.tab[a:active ? 'active' : 'inactive']]
let [c, f, l, r] = [s:lightline.tab_component, s:lightline.tab_component_function, s:lightline.tab_llen, s:lightline.tab_rlen ]
for i in range(len(a))
let s = has_key(f,a[i]) ? eval(f[a[i]].'('.a:n.')') : eval(get(c,a[i],'""'))
if strlen(s) | let _ .= (len(_) ? ' ' : '') . s | endif
endfor
return _
endfunction
function! lightline#error(msg) function! lightline#error(msg)
echohl ErrorMsg | echomsg 'lightline.vim: '.a:msg | echohl None echohl ErrorMsg | echomsg 'lightline.vim: '.a:msg | echohl None
endfunction endfunction

View File

@@ -1,9 +1,9 @@
" ============================================================================= " =============================================================================
" Filename: autoload/colorscheme/colorscheme.vim " Filename: autoload/lightline/colorscheme.vim
" Version: 0.0 " Version: 0.0
" Author: itchyny " Author: itchyny
" License: MIT License " License: MIT License
" Last Change: 2013/08/30 23:19:47. " Last Change: 2013/09/07 16:22:56.
" ============================================================================= " =============================================================================
let s:cuicolor = { let s:cuicolor = {
@@ -204,3 +204,13 @@ function! lightline#colorscheme#fill(p)
return a:p return a:p
endfunction endfunction
function! lightline#colorscheme#flatten(p)
for k in values(a:p)
for l in values(k)
for m in range(len(l))
let l[m] = [l[m][0][0], l[m][1][0], l[m][0][1], l[m][1][1]]
endfor
endfor
endfor
return a:p
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/27 00:49:07. " Last Change: 2013/09/07 12:22:37.
" ============================================================================= " =============================================================================
let s:base03 = '#fafafa' let s:base03 = '#fafafa'
let s:base023 = '#dfdfdf' let s:base023 = '#dfdfdf'
@@ -22,7 +22,7 @@ let s:cyan = '#3e999f'
let s:blue = '#4271ae' let s:blue = '#4271ae'
let s:magenta = '#8959a8' let s:magenta = '#8959a8'
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}} let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
let s:p.normal.left = [ [ s:base02, s:blue ], [ s:base3, s:base01 ] ] let s:p.normal.left = [ [ s:base02, s:blue ], [ s:base3, s:base01 ] ]
let s:p.normal.right = [ [ s:base02, s:base0 ], [ s:base1, s:base01 ] ] let s:p.normal.right = [ [ s:base02, s:base0 ], [ s:base1, s:base01 ] ]
let s:p.inactive.right = [ [ s:base02, s:base00 ], [ s:base00, s:base02 ] ] let s:p.inactive.right = [ [ s:base02, s:base00 ], [ s:base00, s:base02 ] ]
@@ -30,7 +30,13 @@ let s:p.inactive.left = [ [ s:base0, s:base02 ], [ s:base00, s:base03 ] ]
let s:p.insert.left = [ [ s:base02, s:green ], [ s:base3, s:base01 ] ] let s:p.insert.left = [ [ s:base02, s:green ], [ s:base3, s:base01 ] ]
let s:p.replace.left = [ [ s:base02, s:orange ], [ s:base3, s:base01 ] ] let s:p.replace.left = [ [ s:base02, s:orange ], [ s:base3, s:base01 ] ]
let s:p.visual.left = [ [ s:base02, s:magenta ], [ s:base3, s:base01 ] ] let s:p.visual.left = [ [ s:base02, s:magenta ], [ s:base3, s:base01 ] ]
let s:p.normal.middle = [ [ s:base0, s:base02 ] ] let s:p.normal.middle = [ [ s:base1, s:base02 ] ]
let s:p.inactive.middle = [ [ s:base0, s:base02 ] ] let s:p.inactive.middle = [ [ s:base0, s:base02 ] ]
let s:p.tabline.left = [ [ s:base2, s:base01 ] ]
let s:p.tabline.tabsel = [ [ s:base2, s:base023 ] ]
let s:p.tabline.middle = [ [ s:base01, s:base00 ] ]
let s:p.tabline.right = copy(s:p.normal.right)
let s:p.normal.error = [ [ s:red, s:base01 ] ]
let s:p.normal.warning = [ [ s:yellow, s:base0 ] ]
let g:lightline#colorscheme#Tomorrow#palette = lightline#colorscheme#fill(s:p) let g:lightline#colorscheme#Tomorrow#palette = lightline#colorscheme#fill(s:p)

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/27 00:48:59. " Last Change: 2013/09/07 12:23:38.
" ============================================================================= " =============================================================================
let s:base3 = '#c5c8c6' let s:base3 = '#c5c8c6'
let s:base2 = '#bababa' let s:base2 = '#bababa'
@@ -22,7 +22,7 @@ let s:cyan = '#8abeb7'
let s:blue = '#81a2be' let s:blue = '#81a2be'
let s:magenta = '#b294bb' let s:magenta = '#b294bb'
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}} let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
let s:p.normal.left = [ [ s:base02, s:blue ], [ s:base3, s:base01 ] ] let s:p.normal.left = [ [ s:base02, s:blue ], [ s:base3, s:base01 ] ]
let s:p.normal.right = [ [ s:base02, s:base0 ], [ s:base1, s:base01 ] ] let s:p.normal.right = [ [ s:base02, s:base0 ], [ s:base1, s:base01 ] ]
let s:p.inactive.right = [ [ s:base02, s:base00 ], [ s:base00, s:base02 ] ] let s:p.inactive.right = [ [ s:base02, s:base00 ], [ s:base00, s:base02 ] ]
@@ -30,7 +30,13 @@ let s:p.inactive.left = [ [ s:base0, s:base02 ], [ s:base00, s:base03 ] ]
let s:p.insert.left = [ [ s:base02, s:green ], [ s:base3, s:base01 ] ] let s:p.insert.left = [ [ s:base02, s:green ], [ s:base3, s:base01 ] ]
let s:p.replace.left = [ [ s:base02, s:orange ], [ s:base3, s:base01 ] ] let s:p.replace.left = [ [ s:base02, s:orange ], [ s:base3, s:base01 ] ]
let s:p.visual.left = [ [ s:base02, s:magenta ], [ s:base3, s:base01 ] ] let s:p.visual.left = [ [ s:base02, s:magenta ], [ s:base3, s:base01 ] ]
let s:p.normal.middle = [ [ s:base0, s:base02 ] ] let s:p.normal.middle = [ [ s:base1, s:base02 ] ]
let s:p.inactive.middle = [ [ s:base0, s:base02 ] ] let s:p.inactive.middle = [ [ s:base0, s:base02 ] ]
let s:p.tabline.left = [ [ s:base2, s:base01 ] ]
let s:p.tabline.tabsel = [ [ s:base2, s:base023 ] ]
let s:p.tabline.middle = [ [ s:base01, s:base0 ] ]
let s:p.tabline.right = copy(s:p.normal.right)
let s:p.normal.error = [ [ s:red, s:base023 ] ]
let s:p.normal.warning = [ [ s:yellow, s:base02 ] ]
let g:lightline#colorscheme#Tomorrow_Night#palette = lightline#colorscheme#fill(s:p) let g:lightline#colorscheme#Tomorrow_Night#palette = lightline#colorscheme#fill(s:p)

View File

@@ -0,0 +1,44 @@
" =============================================================================
" Filename: autoload/lightline/colorscheme/Tomorrow_Night_Blue.vim
" Version: 0.0
" Author: itchyny
" License: MIT License
" Last Change: 2013/09/07 14:13:21.
" =============================================================================
let s:base3 = '#ffffff'
let s:base23 = '#ffffff'
let s:base2 = '#ffffff'
let s:base1 = '#ffffff'
let s:base0 = '#ffffff'
let s:base00 = '#6060df'
let s:base01 = '#6060af'
let s:base02 = '#606087'
let s:base023 = '#202087'
let s:base03 = '#002451'
let s:red = '#ff9da4'
let s:orange = '#ffc58f'
let s:yellow = '#ffeead'
let s:green = '#d1f1a9'
let s:cyan = '#99ffff'
let s:blue = '#bbdaff'
let s:magenta = '#ebbbff'
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
let s:p.normal.left = [ [ s:base023, s:blue ], [ s:base3, s:base01 ] ]
let s:p.normal.right = [ [ s:base02, s:base1 ], [ s:base2, s:base01 ] ]
let s:p.inactive.right = [ [ s:base02, s:base0 ], [ s:base1, s:base01 ] ]
let s:p.inactive.left = [ [ s:base02, s:base0 ], [ s:base00, s:base03 ] ]
let s:p.insert.left = [ [ s:base023, s:green ], [ s:base3, s:base01 ] ]
let s:p.replace.left = [ [ s:base023, s:orange ], [ s:base3, s:base01 ] ]
let s:p.visual.left = [ [ s:base023, s:magenta ], [ s:base3, s:base01 ] ]
let s:p.normal.middle = [ [ s:base1, s:base02 ] ]
let s:p.inactive.middle = [ [ s:base0, s:base02 ] ]
let s:p.tabline.left = [ [ s:base2, s:base01 ] ]
let s:p.tabline.tabsel = [ [ s:base2, s:base03 ] ]
let s:p.tabline.middle = [ [ s:base01, s:base1 ] ]
let s:p.tabline.right = copy(s:p.normal.right)
let s:p.normal.error = [ [ s:base023, s:red ] ]
let s:p.normal.warning = [ [ s:base023, s:yellow ] ]
let g:lightline#colorscheme#Tomorrow_Night_Blue#palette = lightline#colorscheme#fill(s:p)

View File

@@ -0,0 +1,43 @@
" =============================================================================
" Filename: autoload/lightline/colorscheme/Tomorrow_Night_Bright.vim
" Version: 0.0
" Author: itchyny
" License: MIT License
" Last Change: 2013/09/07 14:13:26.
" =============================================================================
let s:base3 = '#eaeaea'
let s:base23 = '#d0d0d0'
let s:base2 = '#c6c6c6'
let s:base1 = '#b2b2b2'
let s:base0 = '#949494'
let s:base00 = '#767676'
let s:base01 = '#606060'
let s:base02 = '#4e4e4e'
let s:base023 = '#262626'
let s:base03 = '#12124c'
let s:red = '#d54e53'
let s:orange = '#e78c45'
let s:yellow = '#e7c547'
let s:green = '#b9ca4a'
let s:cyan = '#70c0b1'
let s:blue = '#7aa6da'
let s:magenta = '#c397d8'
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
let s:p.normal.left = [ [ s:base023, s:blue ], [ s:base3, s:base01 ] ]
let s:p.normal.right = [ [ s:base02, s:base1 ], [ s:base2, s:base01 ] ]
let s:p.inactive.right = [ [ s:base02, s:base0 ], [ s:base1, s:base01 ] ]
let s:p.inactive.left = [ [ s:base02, s:base0 ], [ s:base00, s:base03 ] ]
let s:p.insert.left = [ [ s:base023, s:green ], [ s:base3, s:base01 ] ]
let s:p.replace.left = [ [ s:base023, s:orange ], [ s:base3, s:base01 ] ]
let s:p.visual.left = [ [ s:base023, s:magenta ], [ s:base3, s:base01 ] ]
let s:p.normal.middle = [ [ s:base1, s:base02 ] ]
let s:p.inactive.middle = [ [ s:base0, s:base02 ] ]
let s:p.tabline.left = [ [ s:base2, s:base01 ] ]
let s:p.tabline.tabsel = [ [ s:base2, s:base023 ] ]
let s:p.tabline.middle = [ [ s:base01, s:base1 ] ]
let s:p.tabline.right = copy(s:p.normal.right)
let s:p.normal.error = [ [ s:red, s:base023 ] ]
let s:p.normal.warning = [ [ s:yellow, s:base02 ] ]
let g:lightline#colorscheme#Tomorrow_Night_Bright#palette = lightline#colorscheme#fill(s:p)

View File

@@ -0,0 +1,43 @@
" =============================================================================
" Filename: autoload/lightline/colorscheme/Tomorrow_Night_Eighties.vim
" Version: 0.0
" Author: itchyny
" License: MIT License
" Last Change: 2013/09/07 14:14:14.
" =============================================================================
let s:base3 = '#cccccc'
let s:base23 = '#bbbbbb'
let s:base2 = '#aaaaaa'
let s:base1 = '#999999'
let s:base0 = '#777777'
let s:base00 = '#666666'
let s:base01 = '#555555'
let s:base02 = '#444444'
let s:base023 = '#333333'
let s:base03 = '#2d2d2d'
let s:red = '#f2777a'
let s:orange = '#f99157'
let s:yellow = '#ffcc66'
let s:green = '#99cc99'
let s:cyan = '#009999'
let s:blue = '#99cccc'
let s:magenta = '#cc99cc'
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
let s:p.normal.left = [ [ s:base023, s:blue ], [ s:base3, s:base01 ] ]
let s:p.normal.right = [ [ s:base02, s:base1 ], [ s:base2, s:base01 ] ]
let s:p.inactive.right = [ [ s:base02, s:base0 ], [ s:base1, s:base01 ] ]
let s:p.inactive.left = [ [ s:base02, s:base0 ], [ s:base00, s:base03 ] ]
let s:p.insert.left = [ [ s:base023, s:green ], [ s:base3, s:base01 ] ]
let s:p.replace.left = [ [ s:base023, s:orange ], [ s:base3, s:base01 ] ]
let s:p.visual.left = [ [ s:base023, s:magenta ], [ s:base3, s:base01 ] ]
let s:p.normal.middle = [ [ s:base1, s:base02 ] ]
let s:p.inactive.middle = [ [ s:base0, s:base02 ] ]
let s:p.tabline.left = [ [ s:base2, s:base01 ] ]
let s:p.tabline.tabsel = [ [ s:base2, s:base03 ] ]
let s:p.tabline.middle = [ [ s:base01, s:base1 ] ]
let s:p.tabline.right = copy(s:p.normal.right)
let s:p.normal.error = [ [ s:base023, s:red ] ]
let s:p.normal.warning = [ [ s:base023, s:yellow ] ]
let g:lightline#colorscheme#Tomorrow_Night_Eighties#palette = lightline#colorscheme#fill(s:p)

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/27 00:37:34. " Last Change: 2013/09/07 12:21:04.
" ============================================================================= " =============================================================================
let s:base03 = [ '#151513', 233 ] let s:base03 = [ '#151513', 233 ]
let s:base02 = [ '#30302c ', 236 ] let s:base02 = [ '#30302c ', 236 ]
@@ -20,7 +20,8 @@ let s:magenta = [ '#f0a0c0', 217 ]
let s:blue = [ '#8197bf', 103 ] let s:blue = [ '#8197bf', 103 ]
let s:cyan = [ '#8fbfdc', 110 ] let s:cyan = [ '#8fbfdc', 110 ]
let s:green = [ '#99ad6a', 107 ] let s:green = [ '#99ad6a', 107 ]
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}}
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
let s:p.normal.left = [ [ s:base02, s:blue ], [ s:base3, s:base01 ] ] let s:p.normal.left = [ [ s:base02, s:blue ], [ s:base3, s:base01 ] ]
let s:p.normal.right = [ [ s:base02, s:base1 ], [ s:base2, s:base01 ] ] let s:p.normal.right = [ [ s:base02, s:base1 ], [ s:base2, s:base01 ] ]
let s:p.inactive.right = [ [ s:base02, s:base00 ], [ s:base0, s:base02 ] ] let s:p.inactive.right = [ [ s:base02, s:base00 ], [ s:base0, s:base02 ] ]
@@ -30,16 +31,11 @@ let s:p.replace.left = [ [ s:base02, s:red ], [ s:base3, s:base01 ] ]
let s:p.visual.left = [ [ s:base02, s:magenta ], [ s:base3, s:base01 ] ] let s:p.visual.left = [ [ s:base02, s:magenta ], [ s:base3, s:base01 ] ]
let s:p.normal.middle = [ [ s:base0, s:base02 ] ] let s:p.normal.middle = [ [ s:base0, s:base02 ] ]
let s:p.inactive.middle = [ [ s:base00, s:base02 ] ] let s:p.inactive.middle = [ [ s:base00, s:base02 ] ]
let s:p.tabline.left = [ [ s:base3, s:base00 ] ]
let s:p.tabline.tabsel = [ [ s:base3, s:base02 ] ]
let s:p.tabline.middle = [ [ s:base01, s:base1 ] ]
let s:p.tabline.right = copy(s:p.normal.right)
let s:p.normal.error = [ [ s:red, s:base02 ] ]
let s:p.normal.warning = [ [ s:yellow, s:base01 ] ]
function! s:flatten(p) let g:lightline#colorscheme#jellybeans#palette = lightline#colorscheme#flatten(s:p)
for k in values(a:p)
for l in values(k)
for m in range(len(l))
let l[m] = [l[m][0][0], l[m][1][0], l[m][0][1], l[m][1][1]]
endfor
endfor
endfor
return a:p
endfunction
let g:lightline#colorscheme#jellybeans#palette = s:flatten(s:p)

View File

@@ -3,10 +3,10 @@
" Version: 0.0 " Version: 0.0
" Author: itchyny " Author: itchyny
" License: MIT License " License: MIT License
" Last Change: 2013/08/26 17:54:24. " Last Change: 2013/09/07 12:26:11.
" ============================================================================= " =============================================================================
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}} let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
let s:p.normal.left = [ ['#0000ff', '#ffffff', 21, 231, 'bold' ], [ '#ffffff', '#0000ff', 231, 21 ] ] let s:p.normal.left = [ ['#0000ff', '#ffffff', 21, 231, 'bold' ], [ '#ffffff', '#0000ff', 231, 21 ] ]
let s:p.normal.right = [ [ '#303030', '#d0d0d0', 236, 252 ], [ '#303030', '#8a8a8a', 236, 245 ], [ '#bcbcbc', '#585858', 250, 240 ] ] let s:p.normal.right = [ [ '#303030', '#d0d0d0', 236, 252 ], [ '#303030', '#8a8a8a', 236, 245 ], [ '#bcbcbc', '#585858', 250, 240 ] ]
let s:p.inactive.right = [ [ '#121212', '#606060', 233, 241 ], [ '#121212', '#3a3a3a', 233, 237 ], [ '#121212', '#262626', 233, 235 ] ] let s:p.inactive.right = [ [ '#121212', '#606060', 233, 241 ], [ '#121212', '#3a3a3a', 233, 237 ], [ '#121212', '#262626', 233, 235 ] ]
@@ -16,5 +16,11 @@ let s:p.replace.left = [ [ '#af0000', '#ffffff', 124, 231, 'bold' ], [ '#ffffff'
let s:p.visual.left = [ [ '#5f00ff', '#ffffff', 57, 231, 'bold' ], [ '#ffffff', '#5f00ff', 231, 57 ] ] let s:p.visual.left = [ [ '#5f00ff', '#ffffff', 57, 231, 'bold' ], [ '#ffffff', '#5f00ff', 231, 57 ] ]
let s:p.normal.middle = [ [ '#8a8a8a', '#303030', 245, 236 ] ] let s:p.normal.middle = [ [ '#8a8a8a', '#303030', 245, 236 ] ]
let s:p.inactive.middle = [ [ '#303030', '#121212', 236, 233 ] ] let s:p.inactive.middle = [ [ '#303030', '#121212', 236, 233 ] ]
let s:p.tabline.left = [ [ '#dadada', '#606060', 253, 241 ] ]
let s:p.tabline.tabsel = [ [ '#dadada', '#121212', 253, 233 ] ]
let s:p.tabline.middle = [ [ '#3a3a3a', '#b2b2b2', 237, 249 ] ]
let s:p.tabline.right = [ [ '#dadada', '#606060', 253, 241 ] ]
let s:p.normal.error = [ [ '#d0d0d0', '#ff0000', 252, 196 ] ]
let s:p.normal.warning = [ [ '#262626', '#ffff00', 235, 226 ] ]
let g:lightline#colorscheme#landscape#palette = s:p let g:lightline#colorscheme#landscape#palette = s:p

View File

@@ -1,12 +1,12 @@
" ============================================================================= " =============================================================================
" Filename: autoload/lightline/colorscheme/default.vim " Filename: autoload/lightline/colorscheme/powerline.vim
" Version: 0.0 " Version: 0.0
" Author: itchyny " Author: itchyny
" License: MIT License " License: MIT License
" Last Change: 2013/08/27 00:18:01. " Last Change: 2013/09/07 15:54:41.
" ============================================================================= " =============================================================================
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}} let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
let s:p.normal.left = [ ['darkestgreen', 'brightgreen', 'bold'], ['white', 'gray4'] ] let s:p.normal.left = [ ['darkestgreen', 'brightgreen', 'bold'], ['white', 'gray4'] ]
let s:p.normal.right = [ ['gray5', 'gray10'], ['gray9', 'gray4'], ['gray8', 'gray2'] ] let s:p.normal.right = [ ['gray5', 'gray10'], ['gray9', 'gray4'], ['gray8', 'gray2'] ]
let s:p.inactive.right = [ ['gray1', 'gray5'], ['gray4', 'gray1'], ['gray4', 'gray0'] ] let s:p.inactive.right = [ ['gray1', 'gray5'], ['gray4', 'gray1'], ['gray4', 'gray0'] ]
@@ -15,9 +15,15 @@ let s:p.insert.left = [ ['darkestcyan', 'white', 'bold'], ['white', 'darkblue']
let s:p.insert.right = [ [ 'darkestcyan', 'mediumcyan' ], [ 'mediumcyan', 'darkblue' ], [ 'mediumcyan', 'darkestblue' ] ] let s:p.insert.right = [ [ 'darkestcyan', 'mediumcyan' ], [ 'mediumcyan', 'darkblue' ], [ 'mediumcyan', 'darkestblue' ] ]
let s:p.replace.left = [ ['white', 'brightred', 'bold'], ['white', 'gray4'] ] let s:p.replace.left = [ ['white', 'brightred', 'bold'], ['white', 'gray4'] ]
let s:p.visual.left = [ ['darkred', 'brightorange', 'bold'], ['white', 'gray4'] ] let s:p.visual.left = [ ['darkred', 'brightorange', 'bold'], ['white', 'gray4'] ]
let s:p.normal.middle = [ [ 'gray6', 'gray2' ] ] let s:p.normal.middle = [ [ 'gray7', 'gray2' ] ]
let s:p.insert.middle = [ [ 'mediumcyan', 'darkestblue' ] ] let s:p.insert.middle = [ [ 'mediumcyan', 'darkestblue' ] ]
let s:p.replace.middle = s:p.normal.middle let s:p.replace.middle = s:p.normal.middle
let s:p.replace.right = s:p.normal.right let s:p.replace.right = s:p.normal.right
let s:p.tabline.left = [ [ 'gray9', 'gray4' ] ]
let s:p.tabline.tabsel = [ [ 'gray9', 'gray1' ] ]
let s:p.tabline.middle = [ [ 'gray2', 'gray8' ] ]
let s:p.tabline.right = [ [ 'gray9', 'gray3' ] ]
let s:p.normal.error = [ [ 'gray9', 'brightestred' ] ]
let s:p.normal.warning = [ [ 'gray1', 'yellow' ] ]
let g:lightline#colorscheme#powerline#palette = lightline#colorscheme#fill(s:p) let g:lightline#colorscheme#powerline#palette = lightline#colorscheme#fill(s:p)

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/27 10:25:46. " Last Change: 2013/09/07 12:18:08.
" ============================================================================= " =============================================================================
let s:base03 = [ '#002b36', 234 ] let s:base03 = [ '#002b36', 234 ]
let s:base02 = [ '#073642', 235 ] let s:base02 = [ '#073642', 235 ]
@@ -27,7 +27,7 @@ let s:green = [ '#859900', 64 ]
" let [s:base01, s:base1] = [s:base1, s:base01] " let [s:base01, s:base1] = [s:base1, s:base01]
" let [s:base00, s:base0] = [s:base0, s:base00] " let [s:base00, s:base0] = [s:base0, s:base00]
" endif " endif
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}} let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
let s:p.normal.left = [ [ s:base3, s:blue ], [ s:base3, s:base01 ] ] let s:p.normal.left = [ [ s:base3, s:blue ], [ s:base3, s:base01 ] ]
let s:p.normal.right = [ [ s:base02, s:base0 ], [ s:base1, s:base01 ] ] let s:p.normal.right = [ [ s:base02, s:base0 ], [ s:base1, s:base01 ] ]
let s:p.inactive.right = [ [ s:base02, s:base01 ], [ s:base00, s:base02 ] ] let s:p.inactive.right = [ [ s:base02, s:base01 ], [ s:base00, s:base02 ] ]
@@ -35,17 +35,13 @@ let s:p.inactive.left = [ [ s:base0, s:base02 ], [ s:base00, s:base02 ] ]
let s:p.insert.left = [ [ s:base3, s:green ], [ s:base3, s:base01 ] ] let s:p.insert.left = [ [ s:base3, s:green ], [ s:base3, s:base01 ] ]
let s:p.replace.left = [ [ s:base3, s:red ], [ s:base3, s:base01 ] ] let s:p.replace.left = [ [ s:base3, s:red ], [ s:base3, s:base01 ] ]
let s:p.visual.left = [ [ s:base3, s:magenta ], [ s:base3, s:base01 ] ] let s:p.visual.left = [ [ s:base3, s:magenta ], [ s:base3, s:base01 ] ]
let s:p.normal.middle = [ [ s:base00, s:base02 ] ] let s:p.normal.middle = [ [ s:base1, s:base02 ] ]
let s:p.inactive.middle = [ [ s:base00, s:base02 ] ] let s:p.inactive.middle = [ [ s:base0, s:base02 ] ]
let s:p.tabline.left = [ [ s:base2, s:base01 ] ]
let s:p.tabline.tabsel = [ [ s:base2, s:base02 ] ]
let s:p.tabline.middle = [ [ s:base01, s:base2 ] ]
let s:p.tabline.right = copy(s:p.normal.right)
let s:p.normal.error = [ [ s:base2, s:red ] ]
let s:p.normal.warning = [ [ s:base02, s:yellow ] ]
function! s:flatten(p) let g:lightline#colorscheme#solarized_dark#palette = lightline#colorscheme#flatten(s:p)
for k in values(a:p)
for l in values(k)
for m in range(len(l))
let l[m] = [l[m][0][0], l[m][1][0], l[m][0][1], l[m][1][1]]
endfor
endfor
endfor
return a:p
endfunction
let g:lightline#colorscheme#solarized_dark#palette = s:flatten(s:p)

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/27 10:25:51. " Last Change: 2013/09/07 12:19:49.
" ============================================================================= " =============================================================================
let s:base03 = [ '#002b36', 234 ] let s:base03 = [ '#002b36', 234 ]
let s:base02 = [ '#073642', 235 ] let s:base02 = [ '#073642', 235 ]
@@ -27,7 +27,7 @@ let s:green = [ '#859900', 64 ]
let [s:base01, s:base1] = [s:base1, s:base01] let [s:base01, s:base1] = [s:base1, s:base01]
let [s:base00, s:base0] = [s:base0, s:base00] let [s:base00, s:base0] = [s:base0, s:base00]
" endif " endif
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}} let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
let s:p.normal.left = [ [ s:base3, s:blue ], [ s:base3, s:base01 ] ] let s:p.normal.left = [ [ s:base3, s:blue ], [ s:base3, s:base01 ] ]
let s:p.normal.right = [ [ s:base02, s:base0 ], [ s:base1, s:base01 ] ] let s:p.normal.right = [ [ s:base02, s:base0 ], [ s:base1, s:base01 ] ]
let s:p.inactive.right = [ [ s:base02, s:base01 ], [ s:base00, s:base02 ] ] let s:p.inactive.right = [ [ s:base02, s:base01 ], [ s:base00, s:base02 ] ]
@@ -35,17 +35,15 @@ let s:p.inactive.left = [ [ s:base0, s:base02 ], [ s:base00, s:base02 ] ]
let s:p.insert.left = [ [ s:base3, s:green ], [ s:base3, s:base01 ] ] let s:p.insert.left = [ [ s:base3, s:green ], [ s:base3, s:base01 ] ]
let s:p.replace.left = [ [ s:base3, s:red ], [ s:base3, s:base01 ] ] let s:p.replace.left = [ [ s:base3, s:red ], [ s:base3, s:base01 ] ]
let s:p.visual.left = [ [ s:base3, s:magenta ], [ s:base3, s:base01 ] ] let s:p.visual.left = [ [ s:base3, s:magenta ], [ s:base3, s:base01 ] ]
let s:p.normal.middle = [ [ s:base00, s:base02 ] ] let s:p.normal.middle = [ [ s:base1, s:base02 ] ]
let s:p.inactive.middle = [ [ s:base00, s:base02 ] ] let s:p.inactive.middle = [ [ s:base0, s:base02 ] ]
let s:p.tabline.left = [ [ s:base2, s:base01 ] ]
let s:p.tabline.tabsel = [ [ s:base2, s:base03 ] ]
let s:p.tabline.middle = [ [ s:base01, s:base2 ] ]
let s:p.tabline.right = copy(s:p.normal.right)
let s:p.normal.error = [ [ s:red, s:base01 ] ]
let s:p.normal.warning = [ [ s:yellow, s:base01 ] ]
let s:p.normal.error = [ [ s:base02, s:red ] ]
let s:p.normal.warning = [ [ s:base2, s:yellow ] ]
function! s:flatten(p) let g:lightline#colorscheme#solarized_light#palette = lightline#colorscheme#flatten(s:p)
for k in values(a:p)
for l in values(k)
for m in range(len(l))
let l[m] = [l[m][0][0], l[m][1][0], l[m][0][1], l[m][1][1]]
endfor
endfor
endfor
return a:p
endfunction
let g:lightline#colorscheme#solarized_light#palette = s:flatten(s:p)

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/27 00:41:15. " Last Change: 2013/09/07 12:15:17.
" ============================================================================= " =============================================================================
let s:base03 = [ '#242424', 235 ] let s:base03 = [ '#242424', 235 ]
let s:base023 = [ '#353535 ', 236 ] let s:base023 = [ '#353535 ', 236 ]
@@ -21,26 +21,21 @@ let s:magenta = [ '#f2c68a', 216 ]
let s:blue = [ '#8ac6f2', 117 ] let s:blue = [ '#8ac6f2', 117 ]
let s:cyan = s:blue let s:cyan = s:blue
let s:green = [ '#95e454', 119 ] let s:green = [ '#95e454', 119 ]
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}} let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
let s:p.normal.left = [ [ s:base02, s:blue ], [ s:base3, s:base01 ] ] let s:p.normal.left = [ [ s:base02, s:blue ], [ s:base3, s:base01 ] ]
let s:p.normal.right = [ [ s:base02, s:base0 ], [ s:base1, s:base01 ] ] let s:p.normal.right = [ [ s:base02, s:base0 ], [ s:base1, s:base01 ] ]
let s:p.inactive.right = [ [ s:base023, s:base01 ], [ s:base00, s:base02 ] ] let s:p.inactive.right = [ [ s:base023, s:base01 ], [ s:base00, s:base02 ] ]
let s:p.inactive.left = [ [ s:base1, s:base02 ], [ s:base00, s:base023 ] ] let s:p.inactive.left = [ [ s:base1, s:base02 ], [ s:base00, s:base023 ] ]
let s:p.insert.left = [ [ s:base02, s:green ], [ s:base3, s:base01 ] ] let s:p.insert.left = [ [ s:base02, s:green ], [ s:base3, s:base01 ] ]
let s:p.replace.left = [ [ s:base02, s:red ], [ s:base3, s:base01 ] ] let s:p.replace.left = [ [ s:base023, s:red ], [ s:base3, s:base01 ] ]
let s:p.visual.left = [ [ s:base02, s:magenta ], [ s:base3, s:base01 ] ] let s:p.visual.left = [ [ s:base02, s:magenta ], [ s:base3, s:base01 ] ]
let s:p.normal.middle = [ [ s:base1, s:base02 ] ] let s:p.normal.middle = [ [ s:base2, s:base02 ] ]
let s:p.inactive.middle = [ [ s:base03, s:base023 ] ] let s:p.inactive.middle = [ [ s:base1, s:base023 ] ]
let s:p.tabline.left = [ [ s:base3, s:base00 ] ]
function! s:flatten(p) let s:p.tabline.tabsel = [ [ s:base2, s:base023 ] ]
for k in values(a:p) let s:p.tabline.middle = [ [ s:base02, s:base1 ] ]
for l in values(k) let s:p.tabline.right = [ [ s:base2, s:base01 ] ]
for m in range(len(l)) let s:p.normal.error = [ [ s:base03, s:red ] ]
let l[m] = [l[m][0][0], l[m][1][0], l[m][0][1], l[m][1][1]] let s:p.normal.warning = [ [ s:base023, s:yellow ] ]
endfor
endfor
endfor
return a:p
endfunction
let g:lightline#colorscheme#wombat#palette = s:flatten(s:p)
let g:lightline#colorscheme#wombat#palette = lightline#colorscheme#flatten(s:p)

View File

@@ -1,9 +1,9 @@
" ============================================================================= " =============================================================================
" Filename: autoload/colorscheme/colortable.vim " Filename: autoload/lightline/colortable.vim
" Version: 0.0 " Version: 0.0
" Author: itchyny " Author: itchyny
" License: MIT License " License: MIT License
" Last Change: 2013/08/28 10:07:13. " Last Change: 2013/09/07 16:23:03.
" ============================================================================= " =============================================================================
function! s:load() function! s:load()

View File

@@ -0,0 +1,28 @@
" =============================================================================
" Filename: autoload/lightline/tab.vim
" Version: 0.0
" Author: itchyny
" License: MIT License
" Last Change: 2013/09/07 16:22:50.
" =============================================================================
function! lightline#tab#filename(n)
let buflist = tabpagebuflist(a:n)
let winnr = tabpagewinnr(a:n)
let _ = expand("#".buflist[winnr - 1].":t")
return strlen(_) ? _ : '[No Name]'
endfunction
function! lightline#tab#modified(n)
let winnr = tabpagewinnr(a:n)
return gettabwinvar(a:n, winnr, '&modified', 0) ? '+' : gettabwinvar(a:n, winnr, '&modifiable', 1) ? '' : '-'
endfunction
function! lightline#tab#readonly(n)
let winnr = tabpagewinnr(a:n)
return gettabwinvar(a:n, winnr, '&readonly', 0) ? 'RO' : ''
endfunction
function! lightline#tab#tabnum(n)
return a:n
endfunction

View File

@@ -1,10 +1,10 @@
*lightline.txt* A light and configurable statusline for Vim *lightline.txt* A light and configurable statusline/tabline for Vim
Version: 0.0 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/31 19:43:56. Last Change: 2013/09/07 16:27:13.
CONTENTS *lightline-contents* CONTENTS *lightline-contents*
@@ -13,6 +13,7 @@ Spirit |lightline-spirit|
Option |lightline-option| Option |lightline-option|
Font |lightline-font| Font |lightline-font|
Function |lightline-function| Function |lightline-function|
Component Expansion |lightline-component-expansion|
Examples |lightline-examples| Examples |lightline-examples|
Nice Examples |lightline-nice-examples| Nice Examples |lightline-nice-examples|
Powerful Example |lightline-powerful-example| Powerful Example |lightline-powerful-example|
@@ -22,7 +23,7 @@ Changelog |lightline-changelog|
============================================================================== ==============================================================================
INTRODUCTION *lightline-introduction* INTRODUCTION *lightline-introduction*
The *lightline* plugin is a light and configurable statusline for Vim. The *lightline* plugin is a light and configurable statusline/tabline for Vim.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
SPIRIT *lightline-spirit* SPIRIT *lightline-spirit*
@@ -31,7 +32,8 @@ SPIRIT *lightline-spirit*
The core script is very small. The core script is very small.
Configurability Configurability
You can create your own component and easily add to the statusline. You can create your own component and easily add to the
statusline/tabline.
Orthogonality Orthogonality
Any plugin should not change the settings of another plugin. Any plugin should not change the settings of another plugin.
@@ -53,7 +55,11 @@ OPTIONS *lightline-option*
g:lightline.active *g:lightline.active* g:lightline.active *g:lightline.active*
g:lightline.inactive *g:lightline.inactive* g:lightline.inactive *g:lightline.inactive*
Dictionaries to specify the status components. g:lightline.tabline *g:lightline.tabline*
Dictionaries to specify the statusline/tabline components.
The components are gathered from either |g:lightline.component|,
|g:lightline.component_function| or
|g:lightline.component_expand|.
Note that right groups of components are stored from right to Note that right groups of components are stored from right to
left. The default values are: left. The default values are:
> >
@@ -67,9 +73,23 @@ OPTIONS *lightline-option*
\ 'left': [ [ 'filename' ] ], \ 'left': [ [ 'filename' ] ],
\ 'right': [ [ 'lineinfo' ], \ 'right': [ [ 'lineinfo' ],
\ [ 'percent' ] ] } \ [ 'percent' ] ] }
let g:lightline.tabline = {
\ 'left': [ [ 'tabs' ] ],
\ 'right': [ [ 'close' ] ] }
<
g:lightline.tab *g:lightline.tab*
Dictionaries to specify the components in each tabs.
The components are gathered from either
|g:lightline.tab_component| or
|g:lightline.tab_component_function|.
The default values are:
>
let g:lightline.tab = {
\ 'active': [ 'tabnum', 'filename', 'modified' ],
\ 'inactive': [ 'tabnum', 'filename', 'modified' ] }
< <
g:lightline.component *g:lightline.component* g:lightline.component *g:lightline.component*
Dictionary for statusline components. Dictionary for statusline/tabline components.
The default value is: The default value is:
> >
let g:lightline.component = { let g:lightline.component = {
@@ -90,7 +110,8 @@ OPTIONS *lightline-option*
\ 'percentwin': '%P', \ 'percentwin': '%P',
\ 'lineinfo': '%3l:%-2v', \ 'lineinfo': '%3l:%-2v',
\ 'line': '%l', \ 'line': '%l',
\ 'column': '%c' } \ 'column': '%c'
\ 'close': '%999X X ' }
< <
g:lightline.component_visible_condition *g:lightline.component_visible_condition* g:lightline.component_visible_condition *g:lightline.component_visible_condition*
Dictionary of boolean expressions for the components. Dictionary of boolean expressions for the components.
@@ -126,16 +147,54 @@ OPTIONS *lightline-option*
function! MyReadonly() function! MyReadonly()
return &ft !~? 'help' && &readonly ? 'RO' : '' return &ft !~? 'help' && &readonly ? 'RO' : ''
endfunction endfunction
<
g:lightline.component_expand *g:lightline.component_expand*
Another dictionary for components. You can create a component
which has a special color. For example, error components or
warning components. The functions should return one of:
+ a string
+ an array of three elements:
[[ left ], [ middle ], [ right ]]
The component in this dictionary has priority over
|g:lightline.component| and |g:lightline.component_function|.
See |lightline-component-expansion| for more detail.
>
let g:lightline.component_expand = {
\ 'tabs': 'lightline#tabs' }
<
g:lightline.component_type *g:lightline.component_type*
A dictionary to specify the types for components in
|g:lightline.component_expand|. The types are used to specify
the color. Specifically, the type raw is used to specify a
component which should not be wrapped by item group: %(...%).
>
let g:lightline.component_type = {
\ 'tabs': 'tabsel',
\ 'close': 'raw' }
<
g:lightline.tab_component *g:lightline.tab_component*
A dictionary for components in one tab.
g:lightline.tab_component_function *g:lightline.tab_component_function*
Another dictionary for components in one tab.
The default value is:
>
let g:lightline.tab_component_function = {
\ 'filename': 'lightline#tab#filename',
\ 'modified': 'lightline#tab#modified',
\ 'readonly': 'lightline#tab#readonly',
\ 'tabnum': 'lightline#tab#tabnum' }
< <
g:lightline.colorscheme *g:lightline.colorscheme* g:lightline.colorscheme *g:lightline.colorscheme*
The colorscheme for lightline.vim. The colorscheme for lightline.vim.
Currently, wombat, solarized, powerline, jellybeans, Tomorrow, Currently, wombat, solarized, powerline, jellybeans, Tomorrow,
Tomorrow_Night, and landscape are available. Tomorrow_Night, Tomorrow_Night_Blue, Tomorrow_Night_Eighties
and landscape are available.
The default value is: The default value is:
> >
let g:lightline.colorscheme = 'default' let g:lightline.colorscheme = 'default'
< <
Note that the default colorscheme is exactly the same as Note that the default colorscheme is exactly the same as the
powerline theme. powerline theme.
g:lightline.mode_map *g:lightline.mode_map* g:lightline.mode_map *g:lightline.mode_map*
@@ -256,11 +315,17 @@ Exposed functions for lightline.vim.
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() *lightline#highlight()*
Set the highlight groups.
lightline#statusline({inactive}) *lightline#statusline()*
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#tabline() *lightline#tabline()*
Returns the tabline string.
lightline#concatenate({list}, {num}) *lightline#concatenate()* lightline#concatenate({list}, {num}) *lightline#concatenate()*
A string concatenation function. Concatenating all the strings A string concatenation function. Concatenating all the strings
in {list} using the sub-separator of lightline. If {num} is 0, in {list} using the sub-separator of lightline. If {num} is 0,
@@ -268,6 +333,139 @@ Exposed functions for lightline.vim.
sub-separator is used. sub-separator is used.
==============================================================================
COMPONENT EXPANSION *lightline-component-expansion*
You can create components, which have specific colors. This section gives an
example using |syntastic|.
If you want to add the |syntastic| flag to the statusline, an easy example is:
>
" Example A
let g:lightline = {
\ 'active': {
\ 'right': [ [ 'lineinfo', 'syntastic' ],
\ [ 'percent' ],
\ [ 'fileformat', 'fileencoding', 'filetype' ] ]
\ },
\ 'component_function': {
\ 'syntastic': 'SyntasticStatuslineFlag',
\ }
\ }
let g:syntastic_mode_map = { 'mode': 'passive',
\ 'active_filetypes': ['c', 'cpp'] }
<
However, the color of the syntastic component is the same as the lineinfo
component.
In order to change the syntastic component more outstanding, you have to use
|g:lightline.component_expand|. See the following example:
>
" Example B
let g:lightline = {
\ 'active': {
\ 'right': [ [ 'syntastic', 'lineinfo' ],
\ [ 'percent' ],
\ [ 'fileformat', 'fileencoding', 'filetype' ] ]
\ },
\ 'component_expand': {
\ 'syntastic': 'SyntasticStatuslineFlag',
\ },
\ 'component_type': {
\ 'syntastic': 'error',
\ }
\ }
let g:syntastic_mode_map = { 'mode': 'passive' }
augroup AutoSyntastic
autocmd!
autocmd BufWritePost *.c,*.cpp call s:syntastic()
augroup END
function! s:syntastic()
SyntasticCheck
call lightline#update()
endfunction
<
In order to understand the above codes, you firstly should know how the
colorschemes work in lightline.vim. Open the following file.
autoload/lightline/colorscheme/powerline.vim
The colorscheme is created by one dictionary: s:p (abbreviation for palette).
See the value of s:p.normal.right.
>
let s:p.normal.right = [ ['gray5', 'gray10'],
\ ['gray9', 'gray4'],
\ ['gray8', 'gray2'] ]
<
This array corresponds to the structure of g:lightline.active.right. Recall
the example A.
>
" Example A
let g:lightline.active.right = [ [ 'lineinfo', 'syntastic' ],
\ [ 'percent' ],
\ [ 'fileformat', 'fileencoding', 'filetype' ] ]
<
The colors are ([fgcolor, bgcolor):
(0) [ 'lineinfo', 'syntastic' ] --- s:p.normal.right[0] = ['gray5', 'gray10']
(1) [ 'percent' ] --- s:p.normal.right[1] = ['gray9', 'gray4']
(2) [ 'fileformat', 'fileencoding', 'filetype' ] --- s:p.normal.right[2] = ['gray8', 'gray2']
Recall the example B.
>
" Example B
let g:lightline.active.right = [ [ 'syntastic', 'lineinfo' ],
\ [ 'percent' ],
\ [ 'fileformat', 'fileencoding', 'filetype' ] ]
<
If a component is specified in |g:lightline.component_expand|, lightline.vim
expands the components before setting to statusline/tabline. In this example,
the syntastic component is expanded using the |SyntasticStatuslineFlag| function.
This function returns a {string}. Let us call it `syntastic_flag`.
>
let syntastic_flag = SyntasticStatuslineFlag()
<
The syntastic component is now expanded, so it go up to one component group.
The type of the syntastic component is error, and the palette has error
colors, the result is:
>
" Expanded result of Example B
(error) [ 'syntastic' ] --- s:p.normal.error[0] = ['gray9', 'brightestred']
(0) [ 'lineinfo' ] --- s:p.normal.right[0] = ['gray5', 'gray10']
(1) [ 'percent' ] --- s:p.normal.right[1] = ['gray9', 'gray4']
(2) [ 'fileformat', 'fileencoding', 'filetype' ] --- s:p.normal.right[2] = ['gray8', 'gray2']
<
Thus the syntastic component has the red color.
Another example for |g:lightline.component_expand| is the tabs component.
Actually, the expand feature is created for the tabs component.
>
let g:lightline.tabline.left = [ [ 'tabs' ] ]
let g:lightline.component_expand = {
\ 'tabs': 'lightline#tabs' }
<
Create three tabs and select the middle tab. Then execute
>
echo lightline#tabs()
" [['%1T%{lightline#onetab(1,0)}'],
" ['%2T%{lightline#onetab(2,1)}'],
" ['%3T%{lightline#onetab(3,0)}%T']]
<
It returns an array of three elements. The expanded result is:
>
" Expanded result of tabline
(0) ['%1T%{lightline#onetab(1,0)}'] --- s:p.tabline.left[0] = ['gray9', 'gray4']
(tabsel) ['%2T%{lightline#onetab(2,1)}'] --- s:p.tabline.tabsel[0] = ['gray9', 'gray1']
(0) ['%3T%{lightline#onetab(3,0)}%T'] --- s:p.tabline.left[0] = ['gray9', 'gray4']
<
If the tabline components is
>
let g:lightline.tabline.left = [ [ 'A', 'B', 'tabs', 'C', 'D' ] ]
<
then the expanded result is:
>
(0) ['A', 'B', '%1T%{lightline#onetab(1,0)}'] --- s:p.tabline.left[0]
(tabsel) ['%2T%{lightline#onetab(2,1)}'] --- s:p.tabline.tabsel[0]
(0) ['%3T%{lightline#onetab(3,0)}%T', 'C', 'D'] --- s:p.tabline.left[0]
<
============================================================================== ==============================================================================
EXAMPLES *lightline-examples* EXAMPLES *lightline-examples*
@@ -414,7 +612,7 @@ For users who uses lots of plugins:
\ 'colorscheme': 'wombat', \ 'colorscheme': 'wombat',
\ 'active': { \ 'active': {
\ 'left': [ [ 'mode', 'paste' ], [ 'fugitive', 'filename' ], ['ctrlpmark'] ], \ 'left': [ [ 'mode', 'paste' ], [ 'fugitive', 'filename' ], ['ctrlpmark'] ],
\ 'right': [[ 'lineinfo', 'syntastic' ], ['percent'], [ 'fileformat', 'fileencoding', 'filetype']] \ 'right': [ [ 'syntastic', 'lineinfo' ], ['percent'], [ 'fileformat', 'fileencoding', 'filetype' ] ]
\ }, \ },
\ 'component_function': { \ 'component_function': {
\ 'fugitive': 'MyFugitive', \ 'fugitive': 'MyFugitive',
@@ -423,9 +621,14 @@ For users who uses lots of plugins:
\ 'filetype': 'MyFiletype', \ 'filetype': 'MyFiletype',
\ 'fileencoding': 'MyFileencoding', \ 'fileencoding': 'MyFileencoding',
\ 'mode': 'MyMode', \ 'mode': 'MyMode',
\ 'syntastic': 'SyntasticStatuslineFlag',
\ 'ctrlpmark': 'CtrlPMark', \ 'ctrlpmark': 'CtrlPMark',
\ }, \ },
\ 'component_expand': {
\ 'syntastic': 'SyntasticStatuslineFlag',
\ },
\ 'component_type': {
\ 'syntastic': 'error',
\ },
\ 'subseparator': { 'left': '|', 'right': '|' } \ 'subseparator': { 'left': '|', 'right': '|' }
\ } \ }
@@ -521,6 +724,15 @@ For users who uses lots of plugins:
return lightline#statusline(0) return lightline#statusline(0)
endfunction endfunction
augroup AutoSyntastic
autocmd!
autocmd BufWritePost *.c,*.cpp call s:syntastic()
augroup END
function! s:syntastic()
SyntasticCheck
call lightline#update()
endfunction
let g:unite_force_overwrite_statusline = 0 let g:unite_force_overwrite_statusline = 0
let g:vimfiler_force_overwrite_statusline = 0 let g:vimfiler_force_overwrite_statusline = 0
let g:vimshell_force_overwrite_statusline = 0 let g:vimshell_force_overwrite_statusline = 0