diff --git a/autoload/SpaceVim/api/data/json.vim b/autoload/SpaceVim/api/data/json.vim index acfc36e41..3d6532486 100644 --- a/autoload/SpaceVim/api/data/json.vim +++ b/autoload/SpaceVim/api/data/json.vim @@ -9,6 +9,9 @@ endfunction let s:json['json_encode'] = function('s:json_encode') function! s:json_decode(json) abort + if empty(a:json) && type(a:json) == type('') + return '' + endif " TODO " support old vim version return json_decode(a:json) diff --git a/autoload/SpaceVim/api/file.vim b/autoload/SpaceVim/api/file.vim index 5704ddcd9..48258c8fb 100644 --- a/autoload/SpaceVim/api/file.vim +++ b/autoload/SpaceVim/api/file.vim @@ -151,6 +151,30 @@ endfunction let s:file['fticon'] = function('s:filetypeIcon') +function! s:write(msg, fname) abort + let flags = filewritable(a:fname) ? 'a' : '' + call writefile([a:msg], a:fname, flags) +endfunction + +let s:file['write'] = function('s:write') + +function! s:override(msg, fname) abort + let flags = filewritable(a:fname) ? 'b' : '' + call writefile([a:msg], a:fname, flags) +endfunction + +let s:file['override'] = function('s:override') + +function! s:read(fname) abort + if filereadable(a:fname) + return readfile(a:fname, '') + else + return '' + endif +endfunction + +let s:file['read'] = function('s:read') + function! SpaceVim#api#file#get() abort return deepcopy(s:file) endfunction