"============================================================================= " FILE: custom.vim " AUTHOR: Shougo Matsushita " 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