function! gina#custom#action#alias(scheme, alias, origin) abort let preference = gina#custom#preference(a:scheme, 0) call add(preference.action.aliases, [a:alias, a:origin]) endfunction function! gina#custom#action#shorten(scheme, action_scheme, ...) abort let excludes = get(a:000, 0, []) let preference = gina#custom#preference(a:scheme, 0) call add(preference.action.shortens, [a:action_scheme, excludes]) endfunction " Private -------------------------------------------------------------------- function! s:apply_preference(preference) abort for [alias, origin] in a:preference.action.aliases call gina#action#alias(alias, origin) endfor for [action_scheme, excludes] in a:preference.action.shortens call gina#action#shorten(action_scheme, excludes) endfor endfunction function! s:FileType() abort let scheme = gina#core#buffer#param('%', 'scheme') if empty(scheme) return endif for preference in gina#custom#preferences(scheme) call s:apply_preference(preference) endfor endfunction " Autocmd -------------------------------------------------------------------- augroup gina_custom_action_internal autocmd! * autocmd FileType * call s:FileType() augroup END