diff options
author | Adam Stankiewicz <sheerun@sher.pl> | 2018-01-10 23:50:02 +0100 |
---|---|---|
committer | Adam Stankiewicz <sheerun@sher.pl> | 2018-01-10 23:50:02 +0100 |
commit | 58709c49f6b6ede81dcf87752b09b8f64d84f1fc (patch) | |
tree | 3d9a50b80abee303e4663475b7c1e9e6fd4b7f2c /autoload/crystal_lang.vim | |
parent | 3d5b784fa59b0e70e0174174ba894054aa5b02bc (diff) | |
download | vim-polyglot-58709c49f6b6ede81dcf87752b09b8f64d84f1fc.tar.gz vim-polyglot-58709c49f6b6ede81dcf87752b09b8f64d84f1fc.zip |
Update
Diffstat (limited to 'autoload/crystal_lang.vim')
-rw-r--r-- | autoload/crystal_lang.vim | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/autoload/crystal_lang.vim b/autoload/crystal_lang.vim index 01244746..94cc9db3 100644 --- a/autoload/crystal_lang.vim +++ b/autoload/crystal_lang.vim @@ -3,11 +3,21 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1 let s:save_cpo = &cpo set cpo&vim -let s:V = vital#of('crystal') +let s:V = vital#crystal#new() let s:P = s:V.import('Process') -let s:J = s:V.import('Web.JSON') let s:C = s:V.import('ColorEcho') +if exists('*json_decode') + function! s:decode_json(text) abort + return json_decode(a:text) + endfunction +else + let s:J = s:V.import('Web.JSON') + function! s:decode_json(text) abort + return s:J.decode(a:text) + endfunction +endif + function! s:echo_error(msg, ...) abort echohl ErrorMsg if a:0 == 0 @@ -102,7 +112,7 @@ function! crystal_lang#jump_to_definition(file, pos) abort return s:echo_error(cmd_result.output) endif - let impl = s:J.decode(cmd_result.output) + let impl = s:decode_json(cmd_result.output) if impl.status !=# 'ok' return s:echo_error(impl.message) endif @@ -149,7 +159,6 @@ endfunction function! crystal_lang#complete(findstart, base) abort if a:findstart - echom 'find start' return s:find_completion_start() endif @@ -158,7 +167,7 @@ function! crystal_lang#complete(findstart, base) abort return endif - let contexts = s:J.decode(cmd_result.output) + let contexts = s:decode_json(cmd_result.output) if contexts.status !=# 'ok' return endif |