55 lines
2.1 KiB
VimL
55 lines
2.1 KiB
VimL
|
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
|
|||
|
" vim: et ts=2 sts=2 sw=2
|
|||
|
|
|||
|
if !get(g:, 'loaded_nrrw_rgn', 0)
|
|||
|
finish
|
|||
|
endif
|
|||
|
|
|||
|
function! airline#extensions#nrrwrgn#apply(...)
|
|||
|
if exists(":WidenRegion") == 2
|
|||
|
let spc = g:airline_symbols.space
|
|||
|
if !exists("*nrrwrgn#NrrwRgnStatus()") || empty(nrrwrgn#NrrwRgnStatus())
|
|||
|
call a:1.add_section('airline_a', printf('%s[Narrowed%s#%d]', spc, spc, b:nrrw_instn))
|
|||
|
let bufname=(get(b:, 'orig_buf', 0) ? bufname(b:orig_buf) : substitute(bufname('%'), '^Nrrwrgn_\zs.*\ze_\d\+$', submatch(0), ''))
|
|||
|
call a:1.add_section('airline_c', spc.bufname.spc)
|
|||
|
call a:1.split()
|
|||
|
else
|
|||
|
let dict=nrrwrgn#NrrwRgnStatus()
|
|||
|
let vmode = { 'v': 'Char ', 'V': 'Line ', '': 'Block '}
|
|||
|
let mode = dict.visual ? vmode[dict.visual] : vmode['V']
|
|||
|
let winwidth = winwidth(0)
|
|||
|
if winwidth < 80
|
|||
|
let mode = mode[0]
|
|||
|
endif
|
|||
|
let title = (winwidth < 80 ? "Nrrw" : "Narrowed ")
|
|||
|
let multi = (winwidth < 80 ? 'M' : 'Multi')
|
|||
|
call a:1.add_section('airline_a', printf('[%s%s%s#%d]%s', (dict.multi ? multi : ""),
|
|||
|
\ title, mode, b:nrrw_instn, spc))
|
|||
|
let name = dict.fullname
|
|||
|
if name !=# '[No Name]'
|
|||
|
if winwidth > 100
|
|||
|
" need some space
|
|||
|
let name = fnamemodify(dict.fullname, ':~')
|
|||
|
if strlen(name) > 8
|
|||
|
" shorten name
|
|||
|
let name = substitute(name, '\(.\)[^/\\]*\([/\\]\)', '\1\2', 'g')
|
|||
|
endif
|
|||
|
else
|
|||
|
let name = fnamemodify(dict.fullname, ':t')
|
|||
|
endif
|
|||
|
endif
|
|||
|
let range=(dict.multi ? '' : printf("[%d-%d]", dict.start[1], dict.end[1]))
|
|||
|
call a:1.add_section('airline_c', printf("%s %s %s", name, range, dict.enabled ? "\u2713" : '!'))
|
|||
|
call a:1.split()
|
|||
|
call a:1.add_section('airline_x', get(g:, 'airline_section_x').spc)
|
|||
|
call a:1.add_section('airline_y', spc.get(g:, 'airline_section_y').spc)
|
|||
|
call a:1.add_section('airline_z', spc.get(g:, 'airline_section_z'))
|
|||
|
endif
|
|||
|
return 1
|
|||
|
endif
|
|||
|
endfunction
|
|||
|
|
|||
|
function! airline#extensions#nrrwrgn#init(ext)
|
|||
|
call a:ext.add_statusline_func('airline#extensions#nrrwrgn#apply')
|
|||
|
endfunction
|