vim-airline/autoload/airline/parts.vim

110 lines
2.9 KiB
VimL
Raw Normal View History

2016-01-14 21:38:38 -05:00
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
2013-08-26 22:55:11 -04:00
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
2013-08-30 17:51:10 -04:00
let s:parts = {}
2013-08-31 12:07:56 -04:00
" PUBLIC API {{{
2013-08-30 17:51:10 -04:00
function! airline#parts#define(key, config)
let s:parts[a:key] = get(s:parts, a:key, {})
if exists('g:airline#init#bootstrapping')
call extend(s:parts[a:key], a:config, 'keep')
else
call extend(s:parts[a:key], a:config, 'force')
endif
2013-08-30 17:51:10 -04:00
endfunction
function! airline#parts#define_function(key, name)
call airline#parts#define(a:key, { 'function': a:name })
endfunction
function! airline#parts#define_text(key, text)
call airline#parts#define(a:key, { 'text': a:text })
endfunction
function! airline#parts#define_raw(key, raw)
call airline#parts#define(a:key, { 'raw': a:raw })
endfunction
function! airline#parts#define_minwidth(key, width)
call airline#parts#define(a:key, { 'minwidth': a:width })
endfunction
function! airline#parts#define_condition(key, predicate)
call airline#parts#define(a:key, { 'condition': a:predicate })
endfunction
function! airline#parts#define_accent(key, accent)
call airline#parts#define(a:key, { 'accent': a:accent })
endfunction
function! airline#parts#define_empty(keys)
for key in a:keys
call airline#parts#define_raw(key, '')
endfor
endfunction
2013-08-30 17:51:10 -04:00
function! airline#parts#get(key)
return get(s:parts, a:key, {})
endfunction
2013-08-31 12:07:56 -04:00
" }}}
function! airline#parts#mode()
2016-10-20 16:57:26 -04:00
return airline#util#shorten(get(w:, 'airline_current_mode', ''), 79, 1)
endfunction
function! airline#parts#crypt()
return g:airline_detect_crypt && exists("+key") && !empty(&key) ? g:airline_symbols.crypt : ''
endfunction
2013-08-27 14:08:50 -04:00
function! airline#parts#paste()
return g:airline_detect_paste && &paste ? g:airline_symbols.paste : ''
2013-08-26 23:07:14 -04:00
endfunction
2016-03-22 02:52:04 -04:00
function! airline#parts#spell()
let spelllang = g:airline_detect_spelllang ? printf(" [%s]", toupper(substitute(&spelllang, ',', '/', 'g'))) : ''
if g:airline_detect_spell && &spell
if winwidth(0) >= 90
return g:airline_symbols.spell . spelllang
elseif winwidth(0) >= 70
return g:airline_symbols.spell
else
return split(g:airline_symbols.spell, '\zs')[0]
endif
endif
return ''
2016-03-22 02:52:04 -04:00
endfunction
2013-08-27 14:08:50 -04:00
function! airline#parts#iminsert()
2013-08-26 23:07:14 -04:00
if g:airline_detect_iminsert && &iminsert && exists('b:keymap_name')
return toupper(b:keymap_name)
2013-08-26 23:07:14 -04:00
endif
return ''
2013-08-26 22:55:11 -04:00
endfunction
2013-08-27 14:08:50 -04:00
function! airline#parts#readonly()
2017-09-01 03:19:39 -04:00
if &readonly && !filereadable(bufname('%'))
return '[noperm]'
else
return &readonly ? g:airline_symbols.readonly : ''
endif
2013-08-26 23:34:02 -04:00
endfunction
function! airline#parts#filetype()
return winwidth(0) < 90 && strlen(&filetype) > 3 ? matchstr(&filetype, '...'). (&encoding is? 'utf-8' ? '…' : '>') : &filetype
endfunction
2013-09-07 14:14:41 -04:00
function! airline#parts#ffenc()
let expected = get(g:, 'airline#parts#ffenc#skip_expected_string', '')
let bomb = &l:bomb ? '[BOM]' : ''
let ff = strlen(&ff) ? '['.&ff.']' : ''
if expected is# &fenc.bomb.ff
return ''
else
return &fenc.bomb.ff
endif
2013-09-07 14:14:41 -04:00
endfunction