mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-03 17:00:05 +08:00
63 lines
1.6 KiB
VimL
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
|