diff options
-rw-r--r-- | runtime/autoload/remote/define.vim | 4 | ||||
-rw-r--r-- | test/functional/provider/define_spec.lua | 33 |
2 files changed, 35 insertions, 2 deletions
diff --git a/runtime/autoload/remote/define.vim b/runtime/autoload/remote/define.vim index dcf773d215..b04a5d2280 100644 --- a/runtime/autoload/remote/define.vim +++ b/runtime/autoload/remote/define.vim @@ -157,7 +157,7 @@ endfunction function! remote#define#FunctionOnChannel(channel, method, sync, name, opts) let rpcargs = [a:channel, '"'.a:method.'"', 'a:000'] - if has_key(a:opts, 'range') && a:opts.range != '0' + if has_key(a:opts, 'range') call add(rpcargs, '[a:firstline, a:lastline]') endif call s:AddEval(rpcargs, a:opts) @@ -222,7 +222,7 @@ endfunction function! s:GetFunctionPrefix(name, opts) let res = "function! ".a:name."(...)" - if has_key(a:opts, 'range') && a:opts.range != '0' + if has_key(a:opts, 'range') let res = res." range" endif return res."\n" diff --git a/test/functional/provider/define_spec.lua b/test/functional/provider/define_spec.lua index 6e8a3b89cd..4a8c68350f 100644 --- a/test/functional/provider/define_spec.lua +++ b/test/functional/provider/define_spec.lua @@ -333,6 +333,39 @@ local function function_specs_for(fn, sync, first_arg_factory, init) runx(sync, handler, on_setup) end) end) + + describe('with range', function() + it('ok', function() + call(fn, args..[[, {'range': ''}]]) + local function on_setup() + command('%call TestFunction(1, "a", ["b", "c"])') + end + + local function handler(method, arguments) + eq('test-handler', method) + eq({{1, 'a', {'b', 'c'}}, {1, 1}}, arguments) + return 'rv' + end + + runx(sync, handler, on_setup) + end) + end) + describe('with eval/range', function() + it('ok', function() + call(fn, args..[[, {'eval': '4', 'range': ''}]]) + local function on_setup() + command('%call TestFunction(1, "a", ["b", "c"])') + end + + local function handler(method, arguments) + eq('test-handler', method) + eq({{1, 'a', {'b', 'c'}}, {1, 1}, 4}, arguments) + return 'rv' + end + + runx(sync, handler, on_setup) + end) + end) end) end) end |