vim-airline/autoload/airline/parts.vim

119 lines
3.2 KiB
VimL
Raw Normal View History

2021-01-01 20:57:00 +08:00
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
2013-08-27 10:55:11 +08:00
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
2013-08-31 05:51:10 +08:00
let s:parts = {}
2013-09-01 00:07:56 +08:00
" PUBLIC API {{{
2013-08-31 05:51:10 +08: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-31 05:51:10 +08: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-31 05:51:10 +08:00
function! airline#parts#get(key)
return get(s:parts, a:key, {})
endfunction
2013-09-01 00:07:56 +08:00
" }}}
function! airline#parts#mode()
2016-10-21 04:57:26 +08: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-28 02:08:50 +08:00
function! airline#parts#paste()
return g:airline_detect_paste && &paste ? g:airline_symbols.paste : ''
2013-08-27 11:07:14 +08:00
endfunction
2016-03-22 14:52:04 +08:00
function! airline#parts#spell()
let spelllang = g:airline_detect_spelllang ? printf(" [%s]", toupper(substitute(&spelllang, ',', '/', 'g'))) : ''
if g:airline_detect_spell && &spell
let winwidth = airline#util#winwidth()
if winwidth >= 90
return g:airline_symbols.spell . spelllang
elseif winwidth >= 70
return g:airline_symbols.spell
else
return split(g:airline_symbols.spell, '\zs')[0]
endif
endif
return ''
2016-03-22 14:52:04 +08:00
endfunction
2013-08-28 02:08:50 +08:00
function! airline#parts#iminsert()
2013-08-27 11:07:14 +08:00
if g:airline_detect_iminsert && &iminsert && exists('b:keymap_name')
return toupper(b:keymap_name)
2013-08-27 11:07:14 +08:00
endif
return ''
2013-08-27 10:55:11 +08:00
endfunction
2013-08-28 02:08:50 +08:00
function! airline#parts#readonly()
2018-10-15 20:35:28 +08:00
" only consider regular buffers (e.g. ones that represent actual files,
" but not special ones like e.g. NERDTree)
if !empty(&buftype) || airline#util#ignore_buf(bufname('%'))
return ''
endif
2017-09-01 15:19:39 +08:00
if &readonly && !filereadable(bufname('%'))
return '[noperm]'
else
return &readonly ? g:airline_symbols.readonly : ''
endif
2013-08-27 11:34:02 +08:00
endfunction
function! airline#parts#filetype()
return (airline#util#winwidth() < 90 && strlen(&filetype) > 3)
\ ? matchstr(&filetype, '...'). (&encoding is? 'utf-8' ? '…' : '>')
\ : &filetype
endfunction
2013-09-08 02:14:41 +08:00
function! airline#parts#ffenc()
let expected = get(g:, 'airline#parts#ffenc#skip_expected_string', '')
let bomb = &bomb ? '[BOM]' : ''
let noeolf = &eol ? '' : '[!EOL]'
let ff = strlen(&ff) ? '['.&ff.']' : ''
if expected is# &fenc.bomb.noeolf.ff
return ''
else
return &fenc.bomb.noeolf.ff
endif
2013-09-08 02:14:41 +08:00
endfunction