1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-03-30 06:52:00 +08:00
2017-09-08 22:38:01 +00:00

58 lines
1.2 KiB
VimL

let s:self = {}
if exists('*getcmdwintype')
function! s:self.is_cmdwin() abort
return getcmdwintype() !=# ''
endfunction
else
function! s:self.is_cmdwin() abort
return bufname('%') ==# '[Command Line]'
endfunction
endif
function! s:self.open(opts) abort
let buf = get(a:opts, 'bufname', '')
let mode = get(a:opts, 'mode', 'vertical topleft split')
let Initfunc = get(a:opts, 'initfunc', '')
let cmd = get(a:opts, 'cmd', '')
if empty(buf)
exe mode | enew
else
exe mode buf
endif
if !empty(Initfunc)
call call(Initfunc, [])
endif
if !empty(cmd)
exe cmd
endif
endfunction
func! s:self.resize(size, ...) abort
let cmd = get(a:000, 0, 'vertical')
exe cmd 'resize' a:size
endf
function! s:self.listed_buffers() abort
return filter(range(1, bufnr('$')), 'buflisted(v:val)')
endfunction
function! s:self.filter_do(expr) abort
let buffers = range(1, bufnr('$'))
for f_expr in a:expr.expr
let buffers = filter(buffers, f_expr)
endfor
for b in buffers
exe printf(a:expr.do, b)
endfor
endfunction
fu! SpaceVim#api#vim#buffer#get() abort
return deepcopy(s:self)
endf