Before: let g:complete_parameter_log_level = 5 call cmp#init() " {{{ parameter checker Execute (empty content): let result = cmp#parameter_position('', 0, ',', '(', ')', 1) AssertEqual [0, 0], result Execute (zero current_col): let result = cmp#parameter_position('hello', 0, ',', '(', ')', 1) AssertEqual [0, 0], result Execute (empty delim): let result = cmp#parameter_position('hello', 1, '', '(', ')', 1) AssertEqual [0, 0], result Execute (empty border_begin): let result = cmp#parameter_position('hello', 1, ',', '', ')', 1) AssertEqual [0, 0], result Execute (empty border_end): let result = cmp#parameter_position('hello', 1, ',', '(', '', 1) AssertEqual [0, 0], result Execute (empty border_end): let result = cmp#parameter_position('hello', 1, ',', '(', ')', 0) AssertEqual [0, 0], result Execute (error cul): let result = cmp#parameter_position('hello', 6, ',', '(', ')', 1) AssertEqual [0, 0], result "}}} " no parameter {{{ Execute (has no paramameter): let result = cmp#parameter_position('hello', 1, ',', '(', ')', 1) AssertEqual [0, 0], result Execute (has no paramameter backword): let result = cmp#parameter_position('hello', 2, ',', ')', '(', -1) AssertEqual [0, 0], result " }}} " zero parameter {{{ Execute (hello(), 1): let result = cmp#parameter_position('hello()', 1, ',', '(', ')', 1) AssertEqual [0, 0], result Execute (hello(), 1, -1): let result = cmp#parameter_position('hello()', 5, ',', ')', '(', -1) AssertEqual [0, 0], result Execute (hello(), 6): let result = cmp#parameter_position('hello()', 6, ',', '(', ')', 1) AssertEqual [7, 7], result Execute (hello(), 6, -1): let result = cmp#parameter_position('hello()', 6, ',', ')', '(', -1) AssertEqual [6, 6], result Execute (hello(), 7): let result = cmp#parameter_position('hello()', 7, ',', '(', ')', 1) AssertEqual [7, 7], result Execute (hello(), 7, -1): let result = cmp#parameter_position('hello()', 7, ',', ')', '(', -1) AssertEqual [6, 6], result Execute (hello( ), 5): let result = cmp#parameter_position('hello( )', 5, ',', '(', ')', 1) AssertEqual [0, 0], result Execute (hello() , 8, -1): let result = cmp#parameter_position('hello() ', 8, ',', ')', '(', -1) AssertEqual [0, 0], result Execute (hello( ), 6): let result = cmp#parameter_position('hello( )', 6, ',', '(', ')', 1) AssertEqual [8, 8], result Execute (hello( ), 7): let result = cmp#parameter_position('hello( )', 7, ',', '(', ')', 1) AssertEqual [8, 8], result Execute (hello( ), 8): let result = cmp#parameter_position('hello( )', 8, ',', '(', ')', 1) AssertEqual [8, 8], result " }}} " one parameter {{{ Execute (hello(a), 5): let result = cmp#parameter_position('hello(a)', 5, ',', '(', ')', 1) AssertEqual [0, 0], result Execute (hello(a), 8, -1): let result = cmp#parameter_position('hello(a)', 8, ',', ')', '(', -1) AssertEqual [7, 8], result Execute (hello(a), 6): let result = cmp#parameter_position('hello(a)', 6, ',', '(', ')', 1) AssertEqual [7, 8], result Execute (hello(a) , 9, -1): let result = cmp#parameter_position('hello(a) ', 9, ',', ')', '(', -1) AssertEqual [0, 0], result Execute (hello(a), 7): let result = cmp#parameter_position('hello(a)', 7, ',', '(', ')', 1) AssertEqual [8, 8], result Execute (hello( a), 5): let result = cmp#parameter_position('hello( a)', 5, ',', '(', ')', 1) AssertEqual [0, 0], result Execute (hello( a) , 9, -1): let result = cmp#parameter_position('hello( a) ', 9, ',', ')', '(', -1) AssertEqual [8, 9], result Execute (hello( a), 6): let result = cmp#parameter_position('hello( a)', 6, ',', '(', ')', 1) AssertEqual [8, 9], result Execute (hello( a), 7): let result = cmp#parameter_position('hello( a)', 7, ',', '(', ')', 1) AssertEqual [9, 9], result Execute (hello( a), 8): let result = cmp#parameter_position('hello( a)', 8, ',', '(', ')', 1) AssertEqual [9, 9], result Execute (hello( a), 9): let result = cmp#parameter_position('hello( a)', 9, ',', '(', ')', 1) AssertEqual [9, 9], result Execute (hello( a ), 5): let result = cmp#parameter_position('hello( a )', 5, ',', '(', ')', 1) AssertEqual [0, 0], result Execute (hello( a ) , 10, -1): let result = cmp#parameter_position('hello( a ) ', 10, ',', ')', '(', -1) AssertEqual [8, 9], result Execute (hello( a ), 6): let result = cmp#parameter_position('hello( a )', 6, ',', '(', ')', 1) AssertEqual [8, 9], result Execute (hello( a ) , 9, -1): let result = cmp#parameter_position('hello( a ) ', 9, ',', ')', '(', -1) AssertEqual [6, 6], result Execute (hello( a ), 7): let result = cmp#parameter_position('hello( a )', 7, ',', '(', ')', 1) AssertEqual [10, 10], result Execute (hello(aa), 5): let result = cmp#parameter_position('hello(aa)', 5, ',', '(', ')', 1) let g:complete_parameter_jump_in_scope = 0 AssertEqual [0, 0], result Execute (hello(aa) , 9, -1): let result = cmp#parameter_position('hello(aa) ', 9, ',', ')', '(', -1) AssertEqual [7, 9], result Execute (hello(aa), 6): let result = cmp#parameter_position('hello(aa)', 6, ',', '(', ')', 1) AssertEqual [7, 9], result Execute (hello(aa), 7): let result = cmp#parameter_position('hello(aa)', 7, ',', '(', ')', 1) AssertEqual [9, 9], result " }}} " 2 parameter {{{ Execute (hello(aa, bb), 5): let result = cmp#parameter_position('hello(aa, bb)', 5, ',', '(', ')', 1) AssertEqual [0, 0], result Execute (hello(aa, bb), 13, -1): let result = cmp#parameter_position('hello(aa, bb)', 13, ',', ')', '(', -1) AssertEqual [11, 13], result Execute (hello(aa, bb), 6): let result = cmp#parameter_position('hello(aa, bb)', 6, ',', '(', ')', 1) AssertEqual [7, 9], result Execute (hello(aa, bb), 11, -1): let result = cmp#parameter_position('hello(aa, bb)', 11, ',', ')', '(', -1) AssertEqual [7, 9], result Execute (hello(aa, bb), 7): let result = cmp#parameter_position('hello(aa, bb)', 7, ',', '(', ')', 1) AssertEqual [11, 13], result Execute (hello(aa, bb), 9): let result = cmp#parameter_position('hello(aa, bb)', 9, ',', '(', ')', 1) AssertEqual [11, 13], result Execute (hello(aa, bb), 10): let result = cmp#parameter_position('hello(aa, bb)', 10, ',', '(', ')', 1) AssertEqual [13, 13], result " }}} " 3 parameter {{{ Execute (hello(aa, bb, cccc), 7): let result = cmp#parameter_position('hello(aa, bb, cccc)', 7, ',', '(', ')', 1) AssertEqual [11, 13], result Execute (hello(aa, bb, cccc), 19, -1): let result = cmp#parameter_position('hello(aa, bb, cccc)', 19, ',', ')', '(', -1) AssertEqual [15, 19], result Execute (hello(aa, bb, cccc), 11): let result = cmp#parameter_position('hello(aa, bb, cccc)', 11, ',', '(', ')', 1) AssertEqual [15, 19], result Execute (hello(aa, bb, cccc), 15, -1): let result = cmp#parameter_position('hello(aa, bb, cccc)', 15, ',', ')', '(', -1) AssertEqual [11, 13], result Execute (hello(aa, bb, cccc), 15): let result = cmp#parameter_position('hello(aa, bb, cccc)', 15, ',', '(', ')', 1) AssertEqual [19, 19], result " }}} " param with () {{{ Execute (hello(foo()), 1): let result = cmp#parameter_position('hello(foo())', 1, ',', '(', ')', 1) AssertEqual [0, 0], result Execute (hello(foo()), 12, -1): let result = cmp#parameter_position('hello(foo())', 12, ',', ')', '(', -1) AssertEqual [7, 12], result Execute (hello(foo()), 6): let result = cmp#parameter_position('hello(foo())', 6, ',', '(', ')', 1) AssertEqual [7, 12], result Execute (hello(foo()), 11, -1): let result = cmp#parameter_position('hello(foo())', 11, ',', ')', '(', -1) AssertEqual [10, 10], result Execute (hello(foo()), 7): let result = cmp#parameter_position('hello(foo())', 7, ',', '(', ')', 1) AssertEqual [11, 11], result Execute (hello(foo()), 10, -1): let result = cmp#parameter_position('hello(foo())', 10, ',', ')', '(', -1) AssertEqual [6, 6], result Execute (hello(foo()), 11): let result = cmp#parameter_position('hello(foo())', 11, ',', '(', ')', 1) AssertEqual [12, 12], result Execute (hello(foo(bar)), 6): let result = cmp#parameter_position('hello(foo(bar))', 6, ',', '(', ')', 1) AssertEqual [7, 15], result Execute (hello(foo(bar)), 15, -1): let result = cmp#parameter_position('hello(foo(bar))', 15, ',', ')', '(', -1) AssertEqual [7, 15], result Execute (hello(foo(bar)), 7): let result = cmp#parameter_position('hello(foo(bar))', 7, ',', '(', ')', 1) AssertEqual [11, 14], result Execute (hello(foo(bar)), 13, -1): let result = cmp#parameter_position('hello(foo(bar))', 13, ',', ')', '(', -1) AssertEqual [6, 6], result Execute (hello(foo(bar)), 11): let result = cmp#parameter_position('hello(foo(bar))', 11, ',', '(', ')', 1) AssertEqual [15, 15], result Execute (hello(a, foo(bar)), 7): let result = cmp#parameter_position('hello(a, foo(bar))', 7, ',', '(', ')', 1) AssertEqual [10, 18], result Execute (hello(a, foo(bar)), 13, -1): let result = cmp#parameter_position('hello(a, foo(bar))', 13, ',', ')', '(', -1) AssertEqual [7, 8], result Execute (hello(a, foo(bar)), 8): let result = cmp#parameter_position('hello(a, foo(bar))', 8, ',', '(', ')', 1) AssertEqual [10, 18], result Execute (hello(a, foo(bar)), 9): let result = cmp#parameter_position('hello(a, foo(bar))', 9, ',', '(', ')', 1) AssertEqual [14, 17], result Execute (hello(a, foo(bar), b), 14): let result = cmp#parameter_position('hello(a, foo(bar), b)', 14, ',', '(', ')', 1) AssertEqual [20, 21], result Execute (hello(a, foo(bar), b), 7): let result = cmp#parameter_position('hello(a, foo(bar), b)', 7, ',', '(', ')', 1) AssertEqual [10, 18], result Execute (hello(a, foo(bar, world), b), 7): let result = cmp#parameter_position('hello(a, foo(bar, world), b)', 7, ',', '(', ')', 1) AssertEqual [10, 25], result Execute (hello(a, foo(bar, world)(g, h), b), 7): let result = cmp#parameter_position('hello(a, foo(bar, world)(g, h), b)', 7, ',', '(', ')', 1) AssertEqual [10, 31], result Execute (hello(a, foo(bar, world)(g, h)(i, j), b), 7): let result = cmp#parameter_position('hello(a, foo(bar, world)(g, h)(i, j), b)', 7, ',', '(', ')', 1) AssertEqual [10, 37], result " }}} " param has quote {{{ Execute (hello(aa, "(", ccc), 7): let result = cmp#parameter_position('hello(aa, "(", ccc)', 7, ',', '(', ')', 1) AssertEqual [11, 14], result Execute (hello(aa, "(", ccc), 16, -1): let result = cmp#parameter_position('hello(aa, "(", ccc)', 16, ',', ')', '(', -1) AssertEqual [11, 14], result Execute (hello(aa, "(", ccc), 10): let result = cmp#parameter_position('hello(aa, "(", ccc)', 10, ',', '(', ')', 1) AssertEqual [16, 19], result Execute (hello(aa, "(", ccc), 10, -1): let result = cmp#parameter_position('hello(aa, "(", ccc)', 10, ',', ')', '(', -1) AssertEqual [7, 9], result Execute (hello(aa, "(", ccc), 11): let result = cmp#parameter_position('hello(aa, "(", ccc)', 11, ',', '(', ')', 1) AssertEqual [16, 19], result Execute (hello(aa, "(", ccc), 12): let result = cmp#parameter_position('hello(aa, "(", ccc)', 12, ',', '(', ')', 1) AssertEqual [16, 19], result Execute (hello(aa, "(", ccc), 13): let result = cmp#parameter_position('hello(aa, "(", ccc)', 13, ',', '(', ')', 1) AssertEqual [16, 19], result Execute (hello(aa, "(\"", ccc)): let result = cmp#parameter_position('hello(aa, "(\"", ccc)', 7, ',', '(', ')', 1) AssertEqual [11, 16], result Execute (hello(aa, "(\"", ccc), 18, -1): let result = cmp#parameter_position('hello(aa, "(\"", ccc)', 18, ',', ')', '(', -1) AssertEqual [11, 16], result Execute (hello(`a""a`, "(\"", "ccc", d), 24): let result = cmp#parameter_position('hello(`a""a`, "(\"", "ccc", d)', 24, ',', '(', ')', 1) AssertEqual [29, 30], result Execute (hello(`a"'a`, "(\"", "ccc", d), 24): let result = cmp#parameter_position('hello(`a"''a`, "(\"", "ccc", d)', 24, ',', '(', ')', 1) AssertEqual [29, 30], result Execute (fmt.Fscanf("%s %s", "hello", "world"), jump to hello): let i = 12 while i <= 19 let result = cmp#parameter_position('fmt.Fscanf("%s %s", "hello", "world")', i, ',', '(', ')', 1) AssertEqual [21, 28], result let i += 1 endwhile Execute (fmt.Fscanf("%s %s", "hello", "world"), jump to world): let i = 21 while i <= 28 let result = cmp#parameter_position('fmt.Fscanf("%s %s", "hello", "world")', i, ',', '(', ')', 1) AssertEqual [30, 37], result let i += 1 endwhile Execute (fmt.Fscanf("%s %s", "hello", "world"), jump to end): let i = 30 while i <= 36 let result = cmp#parameter_position('fmt.Fscanf("%s %s", "hello", "world")', i, ',', '(', ')', 1) AssertEqual [37, 37], result let i += 1 endwhile Execute (fmt.Fscanf("%s %s", "hello", "world"), jump to world, -1): let result = cmp#parameter_position('fmt.Fscanf("%s %s", "hello", "world")', 37, ',', ')', '(', -1) AssertEqual [30, 37], result Execute (fmt.Fscanf("%s %s", "hello", "world"), jump to hello, -1): let i = 30 while i < 37 let result = cmp#parameter_position('fmt.Fscanf("%s %s", "hello", "world")', i, ',', ')', '(', -1) AssertEqual [21, 28], result let i += 1 endwhile Execute (fmt.Fscanf("%s %s", "hello", "world"), jump to "%s %s", -1): let i = 21 while i < 28 let result = cmp#parameter_position('fmt.Fscanf("%s %s", "hello", "world")', i, ',', ')', '(', -1) AssertEqual [12, 19], result let i += 1 endwhile "}}} " {{{param has <> Execute (hello, 1): let result = cmp#parameter_position('hello', 1, ',', "(<", ")>", 1) AssertEqual [0, 0], result Execute (hello, 7): let result = cmp#parameter_position('hello', 7, ',', "(<", ")>", 1) AssertEqual [10, 11], result Execute (hello, 7): let result = cmp#parameter_position('hello', 7, ',', "(<", ")>", 1) AssertEqual [10, 11], result Execute (hello(c, d), 10): let result = cmp#parameter_position('hello(c, d)', 10, ',', "(<", ")>", 1) AssertEqual [13, 14], result Execute (hello(c, d, func(g, h, i))), 16): let result = cmp#parameter_position('hello(c, d, func(g, h, i)))', 16, ',', "(<", ")>", 1) AssertEqual [19, 38], result "}}} "{{{ border check Execute(border left): let result = cmp#parameter_position('hello(a, b)', 5, ',', '(<', ')>', 1) AssertEqual [0, 0], result Execute(border (): let result = cmp#parameter_position('hello(a, b)', 6, ',', '(<', ')>', 1) AssertEqual [7, 8], result Execute(border )): let result = cmp#parameter_position('hello(a, b)', 11, ',', '(<', ')>', 1) AssertEqual [11, 11], result Execute(border ), -1): let result = cmp#parameter_position('hello(a, b)', 11, ',', ')>', '(<', -1) AssertEqual [10, 11], result Execute(border ) , -1): let result = cmp#parameter_position('hello(a, b) ', 12, ',', ')>', '(<', -1) AssertEqual [0, 0], result " }}} "{{{ has = Execute(=, 1, test0): let result = cmp#parameter_position('hello(a=1, b=2)', 7, ',', '(', ')', 1) AssertEqual [9, 10], result Execute(=, 1, test1): let result = cmp#parameter_position('hello(a=1, b=2)', 8, ',', '(', ')', 1) AssertEqual [9, 10], result Execute(=, 1, test2): let result = cmp#parameter_position('hello(a=1, b=2)', 9, ',', '(', ')', 1) AssertEqual [14, 15], result Execute(=, 1, test3): let result = cmp#parameter_position('hello(a=1, b=(c=1, d=2))', 9, ',', '(', ')', 1) AssertEqual [14, 24], result Execute(=, -1, test0): let result = cmp#parameter_position('hello(a=1, b=2)', 14, ',', ')', '(', -1) AssertEqual [9, 10], result Execute(=, -1, test1): let result = cmp#parameter_position('hello(a=1, b=2)', 11, ',', ')', '(', -1) AssertEqual [9, 10], result Execute(=, -1, test2): let result = cmp#parameter_position('hello(a=1, b=2)', 10, ',', ')', '(', -1) AssertEqual [9, 10], result Execute(=, -1, test3): let result = cmp#parameter_position('hello(a=1, b=(c=1, d=2))', 24, ',', ')', '(', -1) AssertEqual [14, 24], result "}}} " < > match Execute(>): let result = cmp#parameter_position('a->hello(a)', 10, ',', ')>', '(<', -1) AssertEqual [9, 9], result Execute(<): let result = cmp#parameter_position('hello(a) < hello(b)', 9, ',', '(<', ')>', 1) AssertEqual [0, 0], result