mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-11 10:03:39 +08:00
44 lines
1.2 KiB
VimL
44 lines
1.2 KiB
VimL
" ============================================================================
|
|
" File: api.vim
|
|
" Description: SpaceVim api core file
|
|
" Author: Shidong Wang <wsdjeg@outlook.com>
|
|
" Website: https://spacevim.org
|
|
" License: GPLv3
|
|
" ============================================================================
|
|
|
|
""
|
|
" @section API, api
|
|
" SpaceVim contains a variety of public apis. here is a list of all the apis.
|
|
" @subsection usage
|
|
" This is just an example, and it works well in old version vim.
|
|
" >
|
|
" let s:json = SpaceVim#api#import('data#json')
|
|
" let rst = s:json.json_encode(onject)
|
|
" let rst = s:json.json_decode(string)
|
|
" <
|
|
|
|
let s:apis = {}
|
|
|
|
function! SpaceVim#api#import(name) abort
|
|
if has_key(s:apis, a:name)
|
|
return deepcopy(s:apis[a:name])
|
|
endif
|
|
let p = {}
|
|
try
|
|
let p = SpaceVim#api#{a:name}#get()
|
|
let s:apis[a:name] = p
|
|
catch /^Vim\%((\a\+)\)\=:E117/
|
|
endtry
|
|
return p
|
|
endfunction
|
|
|
|
function! SpaceVim#api#register(name, api) abort
|
|
if !empty(SpaceVim#api#import(a:name))
|
|
echoerr '[SpaceVim api] Api : ' . a:name . ' already existed!'
|
|
else
|
|
let s:apis[a:name] = deepcopy(a:api)
|
|
endif
|
|
endfunction
|
|
|
|
" vim:set fdm=marker sw=2 nowrap:
|