1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-03 10:00:06 +08:00
SpaceVim/bundle/defx.nvim/autoload/defx/custom.vim
2020-06-13 14:06:35 +08:00

63 lines
1.6 KiB
VimL

"=============================================================================
" FILE: custom.vim
" AUTHOR: Shougo Matsushita <Shougo.Matsu at gmail.com>
" License: MIT license
"=============================================================================
function! defx#custom#_get() abort
if !exists('s:custom')
call defx#custom#_init()
endif
return s:custom
endfunction
function! defx#custom#_init() abort
let s:custom = {}
let s:custom.column = {}
let s:custom.option = {}
let s:custom.source = {}
endfunction
function! defx#custom#column(column_name, name_or_dict, ...) abort
let custom = defx#custom#_get().column
for key in defx#util#split(a:column_name)
if !has_key(custom, key)
let custom[key] = {}
endif
call s:set_custom(custom[key], a:name_or_dict, get(a:000, 0, ''))
endfor
endfunction
function! defx#custom#option(buffer_name, name_or_dict, ...) abort
let custom = defx#custom#_get().option
for key in defx#util#split(a:buffer_name)
if !has_key(custom, key)
let custom[key] = {}
endif
call s:set_custom(custom[key], a:name_or_dict, get(a:000, 0, ''))
endfor
endfunction
function! defx#custom#source(source_name, name_or_dict, ...) abort
let custom = defx#custom#_get().source
for key in defx#util#split(a:source_name)
if !has_key(custom, key)
let custom[key] = {}
endif
call s:set_custom(custom[key], a:name_or_dict, get(a:000, 0, ''))
endfor
endfunction
function! s:set_custom(dest, name_or_dict, value) abort
if type(a:name_or_dict) == v:t_dict
call extend(a:dest, a:name_or_dict)
else
let a:dest[a:name_or_dict] = a:value
endif
endfunction