aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZyX <kp-pav@yandex.ru>2016-01-31 02:28:53 +0300
committerZyX <kp-pav@yandex.ru>2016-04-18 02:44:03 +0300
commit6e5498c3e32ecc7adfedc3f47b876f82de90fff8 (patch)
tree78748e183ddca17feeb293c6552cd9a9a82e07a1
parentd70a322c40e849f98ad573d2a37dc680c5616b26 (diff)
downloadrneovim-6e5498c3e32ecc7adfedc3f47b876f82de90fff8.tar.gz
rneovim-6e5498c3e32ecc7adfedc3f47b876f82de90fff8.tar.bz2
rneovim-6e5498c3e32ecc7adfedc3f47b876f82de90fff8.zip
runtime/msgpack: Add support for special values
-rw-r--r--runtime/autoload/msgpack.vim4
-rw-r--r--test/functional/plugin/msgpack_spec.lua21
2 files changed, 24 insertions, 1 deletions
diff --git a/runtime/autoload/msgpack.vim b/runtime/autoload/msgpack.vim
index 2bb7ec5b02..2e2697c57f 100644
--- a/runtime/autoload/msgpack.vim
+++ b/runtime/autoload/msgpack.vim
@@ -356,6 +356,8 @@ let s:MSGPACK_STANDARD_TYPES = {
\type(''): 'binary',
\type([]): 'array',
\type({}): 'map',
+ \type(v:true): 'boolean',
+ \type(v:null): 'nil',
\}
""
@@ -379,7 +381,7 @@ endfunction
""
" Dump boolean value.
function s:msgpack_dump_boolean(v) abort
- return a:v._VAL ? 'TRUE' : 'FALSE'
+ return (a:v is v:true || (a:v isnot v:false && a:v._VAL)) ? 'TRUE' : 'FALSE'
endfunction
""
diff --git a/test/functional/plugin/msgpack_spec.lua b/test/functional/plugin/msgpack_spec.lua
index 90cc2af9c0..197a1a92e5 100644
--- a/test/functional/plugin/msgpack_spec.lua
+++ b/test/functional/plugin/msgpack_spec.lua
@@ -1,4 +1,5 @@
local helpers = require('test.functional.helpers')
+local meths = helpers.meths
local eq, nvim_eval, nvim_command, exc_exec =
helpers.eq, helpers.eval, helpers.command, helpers.exc_exec
local ok = helpers.ok
@@ -409,6 +410,12 @@ describe('In autoload/msgpack.vim', function()
string_eq('nan', '(1.0/0.0-1.0/0.0)')
string_eq('nan', '-(1.0/0.0-1.0/0.0)')
end)
+
+ it('works for special v: values like v:true', function()
+ string_eq('TRUE', 'v:true')
+ string_eq('FALSE', 'v:false')
+ string_eq('NIL', 'v:null')
+ end)
end)
describe('function msgpack#deepcopy', function()
@@ -523,6 +530,20 @@ describe('In autoload/msgpack.vim', function()
eq(2.0, nvim_eval('flt2'))
eq('abc', nvim_eval('bin2'))
end)
+
+ it('works for special v: values like v:true', function()
+ meths.set_var('true', true)
+ meths.set_var('false', false)
+ nvim_command('let nil = v:null')
+
+ nvim_command('let true2 = msgpack#deepcopy(true)')
+ nvim_command('let false2 = msgpack#deepcopy(false)')
+ nvim_command('let nil2 = msgpack#deepcopy(nil)')
+
+ eq(true, meths.get_var('true'))
+ eq(false, meths.get_var('false'))
+ eq(nil, meths.get_var('nil'))
+ end)
end)
describe('function msgpack#eval', function()