summaryrefslogtreecommitdiffstats
path: root/autoload/crystal_lang.vim
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2018-01-10 23:50:02 +0100
committerAdam Stankiewicz <sheerun@sher.pl>2018-01-10 23:50:02 +0100
commit58709c49f6b6ede81dcf87752b09b8f64d84f1fc (patch)
tree3d9a50b80abee303e4663475b7c1e9e6fd4b7f2c /autoload/crystal_lang.vim
parent3d5b784fa59b0e70e0174174ba894054aa5b02bc (diff)
downloadvim-polyglot-58709c49f6b6ede81dcf87752b09b8f64d84f1fc.tar.gz
vim-polyglot-58709c49f6b6ede81dcf87752b09b8f64d84f1fc.zip
Update
Diffstat (limited to 'autoload/crystal_lang.vim')
-rw-r--r--autoload/crystal_lang.vim19
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