priority -50 snippet s "String" b "${1:key}": "${0:value}", endsnippet snippet n "Number" b "${1:key}": ${0:value}, endsnippet snippet a "Array" b [ ${VISUAL}$0 ], endsnippet snippet na "Named array" b "${1:key}": [ ${VISUAL}$0 ], endsnippet snippet o "Object" b { ${VISUAL}$0 }, endsnippet snippet no "Named object" b "${1:key}": { ${VISUAL}$0 }, endsnippet snippet null "Null" b "${0:key}": null, endsnippet global !p def compB(t, opts): if t: opts = [m[len(t):] for m in opts if m.startswith(t)] if len(opts) == 1: return opts[0] return "(" + '|'.join(opts) + ')' endglobal snippet b "Bool" b "${1:key}": $2`!p snip.rv=compB(t[2], ['true', 'false'])`, endsnippet