Lines Matching refs:vim
3 source check.vim
16 let [s:major, s:minor, s:patch] = luaeval('vim.lua_version')->split('\.')->map({-> str2nr(v:val)})
38 luado vim.command("new")
43 " Test vim.command()
47 luado vim.command("1,2d_")
61 \ "[string \"vim chunk\"]:1: bad argument #1 to 'format' (string expected, got no value)")
63 let msg = "[string \"vim chunk\"]:1: global 'func' is not callable (a nil value)"
65 let msg = "[string \"vim chunk\"]:1: attempt to call a nil value (global 'func')"
67 let msg = "[string \"vim chunk\"]:1: attempt to call global 'func' (a nil value)"
70 call assert_fails('luado error("failed")', "[string \"vim chunk\"]:1: failed")
73 " Test vim.eval()
76 lua v = vim.eval('123')
77 call assert_equal('number', luaeval('vim.type(v)'))
81 lua v = vim.eval('"abc"')
82 call assert_equal('string', 'vim.type(v)'->luaeval())
86 lua v = vim.eval("['a']")
87 call assert_equal('list', luaeval('vim.type(v)'))
91 lua v = vim.eval("{'a':'b'}")
92 call assert_equal('dict', luaeval('vim.type(v)'))
96 lua v = vim.eval("0z00112233.deadbeef")
97 call assert_equal('blob', luaeval('vim.type(v)'))
101 lua v = vim.eval('3.14')
102 call assert_equal('number', luaeval('vim.type(v)'))
106 lua v = vim.eval('v:true')
107 call assert_equal('number', luaeval('vim.type(v)'))
109 lua v = vim.eval('v:false')
110 call assert_equal('number', luaeval('vim.type(v)'))
114 lua v = vim.eval('v:null')
115 call assert_equal('nil', luaeval('vim.type(v)'))
118 call assert_fails('lua v = vim.eval(nil)',
119 \ "[string \"vim chunk\"]:1: bad argument #1 to 'eval' (string expected, got nil)")
120 call assert_fails('lua v = vim.eval(true)',
121 \ "[string \"vim chunk\"]:1: bad argument #1 to 'eval' (string expected, got boolean)")
122 call assert_fails('lua v = vim.eval({})',
123 \ "[string \"vim chunk\"]:1: bad argument #1 to 'eval' (string expected, got table)")
124 call assert_fails('lua v = vim.eval(print)',
125 \ "[string \"vim chunk\"]:1: bad argument #1 to 'eval' (string expected, got function)")
126 call assert_fails('lua v = vim.eval(vim.buffer())',
127 \ "[string \"vim chunk\"]:1: bad argument #1 to 'eval' (string expected, got userdata)")
141 " Test vim.window()
148 call assert_equal('Xfoo1', luaeval('vim.window(1):buffer().name'))
149 call assert_equal('Xfoo2', luaeval('vim.window(2):buffer().name'))
151 " Window 3 does not exist so vim.window(3) should return nil
152 call assert_equal('nil', luaeval('tostring(vim.window(3))'))
161 call assert_fails("let n = luaeval('vim.window().xyz()')", msg)
162 call assert_fails('lua vim.window().xyz = 1',
163 \ "[string \"vim chunk\"]:1: invalid window property: `xyz'")
168 " Test vim.window().height
171 lua vim.window().height = 2
173 lua vim.window().height = vim.window().height + 1
178 " Test vim.window().width
181 lua vim.window().width = 2
183 lua vim.window().width = vim.window().width + 1
188 " Test vim.window().line and vim.window.col
192 lua vim.window().line = 2
193 lua vim.window().col = 4
195 lua vim.window().line = vim.window().line + 1
196 lua vim.window().col = vim.window().col - 1
199 call assert_fails('lua vim.window().line = 10',
200 \ '[string "vim chunk"]:1: line out of range')
204 " Test vim.call
206 call assert_equal(has('lua'), luaeval('vim.call("has", "lua")'))
207 call assert_equal(printf("Hello %s", "vim"), luaeval('vim.call("printf", "Hello %s", "vim")'))
210 …call assert_fails("call luaeval('vim.call(\"min\", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, …
215 call assert_fails("call luaeval('vim.call(\"type\", co)')",
220 call assert_fails("call luaeval('vim.call(\"abc\")')",
225 " Test vim.fn.*
227 call assert_equal(has('lua'), luaeval('vim.fn.has("lua")'))
228 call assert_equal(printf("Hello %s", "vim"), luaeval('vim.fn.printf("Hello %s", "vim")'))
234 lua w1 = vim.window()
236 lua w2 = vim.window()
248 " Test vim.window().buffer
251 lua w1 = vim.window()
254 lua w2 = vim.window()
266 " Test vim.window():previous() and vim.window():next()
273 call assert_equal('Xfoo2', luaeval('vim.window().buffer().name'))
274 call assert_equal('Xfoo1', luaeval('vim.window():next():buffer().name'))
275 call assert_equal('Xfoo3', luaeval('vim.window():previous():buffer().name'))
280 " Test vim.window():isvalid()
283 lua w = vim.window()
293 " Test vim.buffer() with and without argument
300 " Test vim.buffer() without argument.
301 call assert_equal('Xfoo2', luaeval("vim.buffer().name"))
303 " Test vim.buffer() with string argument.
304 call assert_equal('Xfoo1', luaeval("vim.buffer('Xfoo1').name"))
305 call assert_equal('Xfoo2', luaeval("vim.buffer('Xfoo2').name"))
307 " Test vim.buffer() with integer argument.
308 call assert_equal('Xfoo1', luaeval("vim.buffer(" . bn1 . ").name"))
309 call assert_equal('Xfoo2', luaeval("vim.buffer(" . bn2 . ").name"))
315 " Test vim.buffer().name and vim.buffer().fname
318 call assert_equal('', luaeval('vim.buffer().name'))
319 call assert_equal('', luaeval('vim.buffer().fname'))
323 call assert_equal('Xfoo', luaeval('vim.buffer().name'))
324 call assert_equal(expand('%:p'), luaeval('vim.buffer().fname'))
328 " Test vim.buffer().number
331 call assert_equal(bufnr('%'), float2nr(luaeval('vim.buffer().number')))
337 lua vim.buffer()[1] = '3'
338 lua vim.buffer():insert('1', 0)
339 lua vim.buffer():insert('2', 1)
340 lua vim.buffer():insert('4', 10)
343 call assert_equal('4', luaeval('vim.buffer()[4]'))
344 call assert_equal(v:null, luaeval('vim.buffer()[5]'))
345 call assert_equal(v:null, luaeval('vim.buffer()[{}]'))
347 let msg = "[string \"vim chunk\"]:1: method 'xyz' is not callable (a nil value)"
349 let msg = "[string \"vim chunk\"]:1: attempt to call a nil value (method 'xyz')"
351 let msg = "[string \"vim chunk\"]:1: attempt to call method 'xyz' (a nil value)"
353 call assert_fails('lua vim.buffer():xyz()', msg)
354 call assert_fails('lua vim.buffer()[1] = {}',
355 \ '[string "vim chunk"]:1: wrong argument to change')
364 lua vim.buffer()[2] = nil
367 call assert_fails('lua vim.buffer()[3] = nil',
368 \ '[string "vim chunk"]:1: invalid line number')
372 " Test #vim.buffer() i.e. number of lines in buffer
376 call assert_equal(3, luaeval('#vim.buffer()'))
380 " Test vim.buffer():next() and vim.buffer():previous()
389 lua bn = vim.buffer():next()
390 lua bp = vim.buffer():previous()
392 call assert_equal('Xfoo2', luaeval('vim.buffer().name'))
399 call assert_equal('Xfoo3', luaeval('vim.buffer().name'))
403 call assert_equal('Xfoo1', luaeval('vim.buffer().name'))
410 " Test vim.buffer():isvalid()
413 lua b = vim.buffer()
424 call assert_equal([], luaeval('vim.list()'))
427 lua l = vim.eval('l')
433 lua l:add(vim.eval("[1, 2, 3]"))
434 lua l:add(vim.eval("{'a':1, 'b':2, 'c':3}"))
444 \ '[string "vim chunk"]:1: invalid position')
448 call assert_fails('lua l:add("x")', '[string "vim chunk"]:1: list is locked')
449 call assert_fails('lua l:insert(2)', '[string "vim chunk"]:1: list is locked')
450 call assert_fails('lua l[9] = 1', '[string "vim chunk"]:1: list is locked')
454 lua ll = vim.eval('l')
472 " See :help lua-vim
476 call assert_equal([3.14, 'hello', v:false, v:true], luaeval('vim.list(t)'))
479 call assert_fails('lua vim.list(1)', '[string "vim chunk"]:1: table expected, got number')
480 call assert_fails('lua vim.list("x")', '[string "vim chunk"]:1: table expected, got string')
481 call assert_fails('lua vim.list(print)', '[string "vim chunk"]:1: table expected, got function')
482 call assert_fails('lua vim.list(true)', '[string "vim chunk"]:1: table expected, got boolean')
491 lua t = vim.eval('l')
509 lua l = vim.list():add('foo'):add('bar')
518 lua l = vim.list():add(1):add(2)
542 call assert_equal({}, luaeval('vim.dict()'))
545 lua d = vim.eval('d')
550 lua d[4] = vim.eval("[1, 2, 3]")
551 lua d[5] = vim.eval("{'a':1, 'b':2, 'c':3}")
564 call assert_fails('lua d[6] = 1', '[string "vim chunk"]:1: dict is locked')
570 call assert_fails("let t = luaeval('vim.dict(d)')",
575 lua x = vim.eval('d')
576 call assert_fails("lua x[''] = 10", '[string "vim chunk"]:1: empty key')
581 lua x = vim.eval('g:')
582 call assert_fails("lua x['min'] = vim.funcref('max')",
583 \ '[string "vim chunk"]:1: cannot assign funcref to builtin scope')
591 \ luaeval('vim.dict(t)'))
593 " Same example as in :help lua-vim.
599 "call assert_equal({'say' : 'hi'}, luaeval('vim.dict(t)'))
602 call assert_fails('lua vim.dict(1)', '[string "vim chunk"]:1: table expected, got number')
603 call assert_fails('lua vim.dict("x")', '[string "vim chunk"]:1: table expected, got string')
604 call assert_fails('lua vim.dict(print)', '[string "vim chunk"]:1: table expected, got function')
605 call assert_fails('lua vim.dict(true)', '[string "vim chunk"]:1: table expected, got boolean')
611 lua d = vim.eval('d')
620 call assert_equal(0z, luaeval('vim.blob("")'))
621 call assert_equal(0z31326162, luaeval('vim.blob("12ab")'))
622 call assert_equal(0z00010203, luaeval('vim.blob("\x00\x01\x02\x03")'))
623 call assert_equal(0z8081FEFF, luaeval('vim.blob("\x80\x81\xfe\xff")'))
625 lua b = vim.blob("\x00\x00\x00\x00")
633 call assert_fails('lua b[#b+1] = 0x80', '[string "vim chunk"]:1: index out of range')
637 call assert_fails('lua b:add(nil)', '[string "vim chunk"]:1: string expected, got nil')
638 call assert_fails('lua b:add(true)', '[string "vim chunk"]:1: string expected, got boolean')
639 call assert_fails('lua b:add({})', '[string "vim chunk"]:1: string expected, got table')
643 lua lb = vim.eval('b')
660 call assert_fails('lua lb[1] = 2', '[string "vim chunk"]:1: blob is locked')
661 call assert_fails('lua lb:add("12")', '[string "vim chunk"]:1: blob is locked')
665 call assert_fails('lua b = vim.blob(t)',
666 \ '[string "vim chunk"]:1: string expected, got table')
674 lua i1 = vim.funcref"I"
675 lua i2 = vim.eval"R"
677 lua msg = vim.funcref"tr"(msg, "|", " ")
681 call assert_fails('lua f1 = vim.funcref("")',
682 \ '[string "vim chunk"]:1: invalid function name: ')
683 call assert_fails('lua f1 = vim.funcref("10")',
684 \ '[string "vim chunk"]:1: invalid function name: 10')
686 call assert_fails('lua f1 = vim.funcref(fname)',
687 \ "[string \"vim chunk\"]:1: bad argument #1 to 'funcref' (string expected, got nil)")
688 call assert_fails('lua vim.funcref("abc")()',
689 \ ['E117:', '\[string "vim chunk"]:1: cannot call funcref'])
697 lua d = vim.eval"mydict"
698 lua d.len = vim.funcref"Mylen" -- assign d as 'self'
699 lua res = (d.len() == vim.funcref"len"(vim.eval"l")) and "OK" or "FAIL"
706 " Test vim.type()
709 call assert_equal('string', luaeval('vim.type("foo")'))
710 call assert_equal('number', luaeval('vim.type(1)'))
711 call assert_equal('number', luaeval('vim.type(1.2)'))
712 call assert_equal('function', luaeval('vim.type(print)'))
713 call assert_equal('table', luaeval('vim.type({})'))
714 call assert_equal('boolean', luaeval('vim.type(true)'))
715 call assert_equal('boolean', luaeval('vim.type(false)'))
716 call assert_equal('nil', luaeval('vim.type(nil)'))
719 call assert_equal('window', luaeval('vim.type(vim.window())'))
720 call assert_equal('buffer', luaeval('vim.type(vim.buffer())'))
721 call assert_equal('list', luaeval('vim.type(vim.list())'))
722 call assert_equal('dict', luaeval('vim.type(vim.dict())'))
723 call assert_equal('funcref', luaeval('vim.type(vim.funcref("Test_type"))'))
726 " Test vim.open()
731 lua b = vim.open('XOpen1')
739 lua b = vim.open('XOpen2')()
753 let l:message = a:Concat("hello", "vim")
761 vim.funcref('Vim_func_call_lua_callback')(
769 call assert_equal("hello vim", luaeval("pass_lua_callback_to_vim_from_lua_result"))
777 …let result = luaeval("vim.funcref('Vim_func_call_metatable_lua_callback')(setmetatable({ space = '…
781 " Test vim.line()
786 call assert_equal('first line', luaeval('vim.line()'))
788 call assert_equal('second line', luaeval('vim.line()'))
792 " Test vim.beep()
794 call assert_beeps('lua vim.beep()')
876 lua k = vim.buffer(vim.eval('bufnr()'))
888 w = vim.window()
902 vim.command('let s = "A"')
905 vim.command('let s ..= "B"')
908 vim.command('let s ..= "C"')
911 vim.command('let s ..= "D"')
914 vim.command('let s ..= "E"')
919 " Test for adding, accessing and removing global variables using the vim.g
928 call assert_equal(10, luaeval('vim.g.Var1'))
929 call assert_equal('Hello', luaeval('vim.g.Var2'))
930 call assert_equal(['a', 'b'], luaeval('vim.g.Var3'))
931 call assert_equal(#{x: 'edit', y: 'run'}, luaeval('vim.g.Var4'))
932 call assert_equal(2, luaeval('vim.g.Var5')([5, 9, 2]))
937 call assert_equal([#{a: 10}, #{b: 20}], luaeval('vim.g.Var1'))
938 call assert_equal(#{p: [5, 6], q: [1.1, 2.2]}, luaeval('vim.g.Var2'))
943 vim.g.Var1 = 34
944 vim.g.Var2 = 'World'
945 vim.g.Var3 = vim.list({'#', '$'})
946 vim.g.Var4 = vim.dict({model='honda', year=2020})
947 vim.g.Var5 = vim.funcref('max')
958 vim.g.Var1 = vim.list({vim.dict({a=10}), vim.dict({b=20})})
959 vim.g.Var2 = vim.dict({p=vim.list({5, 6}), q=vim.list({1.1, 2.2})})
961 call assert_equal([#{a: 10}, #{b: 20}], luaeval('vim.g.Var1'))
962 call assert_equal(#{p: [5, 6], q: [1.1, 2.2]}, luaeval('vim.g.Var2'))
968 vim.g.Var1[2] = Nil
969 vim.g.Var1[3] = 15
970 vim.g.Var2['two'] = Nil
971 vim.g.Var2['three'] = 'earth'
983 vim.g.Var1 = Nil
984 vim.g.Var2 = Nil
985 vim.g.Var3 = Nil
986 vim.g.Var4 = Nil
987 vim.g.Var5 = Nil
998 call assert_fails('lua vim.g.Var1 = 20', 'variable is locked')
999 call assert_fails('lua vim.g.Var1 = Nil', 'variable is locked')
1003 lua vim.g.Var2[2] = Nil
1004 lua vim.g.Var2[3] = 21
1005 call assert_fails('lua vim.g.Var2 = Nil', 'variable is locked')
1008 call assert_fails('lua vim.g.Var2[2] = Nil', 'list is locked')
1009 call assert_fails('lua vim.g.Var2[3] = 21', 'list is locked')
1013 call assert_fails('lua vim.g.func = vim.g.TestFunc', ['E704:', 'Couldn''t add to dictionary'])
1017 call assert_equal(v:null, luaeval('vim.g.NonExistingVar'))
1018 lua vim.g.NonExisting = Nil
1023 " Test for accessing and modifying predefined vim variables using the vim.v
1026 call assert_equal(v:progpath, luaeval('vim.v.progpath'))
1028 call assert_equal('SomeError', luaeval('vim.v.errmsg'))
1029 lua vim.v.errmsg = 'OtherError'
1031 call assert_fails('lua vim.v.errmsg = Nil', 'variable is fixed')
1033 call assert_equal(['one', 'two'], luaeval('vim.v.oldfiles'))
1034 lua vim.v.oldfiles = vim.list({})
1036 call assert_equal(v:null, luaeval('vim.v.null'))
1037 call assert_fails('lua vim.v.argv[1] = Nil', 'list is locked')
1038 call assert_fails('lua vim.v.newvar = 1', 'Dictionary is locked')
1042 " vim.w Lua table
1052 call assert_equal(10, luaeval('vim.w.wvar1'))
1053 call assert_equal('edit', luaeval('vim.w.wvar2'))
1054 call assert_equal(3.14, luaeval('vim.w.wvar3'))
1055 call assert_equal(0zdeadbeef, luaeval('vim.w.wvar4'))
1056 call assert_equal(['a', 'b'], luaeval('vim.w.wvar5'))
1057 call assert_equal(#{action: 'run'}, luaeval('vim.w.wvar6'))
1058 call assert_equal(v:null, luaeval('vim.w.NonExisting'))
1061 lua vim.w.wvar2 = 'paste'
1066 lua vim.w.wvar2 = vim.dict({a=10, b=20})
1070 lua vim.w.wvar7 = vim.dict({a=vim.list({1, 2}), b=20})
1074 lua vim.w.wvar2 = Nil
1078 call assert_equal(v:null, luaeval('vim.w.wvar1'))
1079 call assert_equal(v:null, luaeval('vim.w.wvar2'))
1084 " vim.b Lua table
1093 call assert_equal(10, luaeval('vim.b.bvar1'))
1094 call assert_equal('edit', luaeval('vim.b.bvar2'))
1095 call assert_equal(3.14, luaeval('vim.b.bvar3'))
1096 call assert_equal(0zdeadbeef, luaeval('vim.b.bvar4'))
1097 call assert_equal(['a', 'b'], luaeval('vim.b.bvar5'))
1098 call assert_equal(#{action: 'run'}, luaeval('vim.b.bvar6'))
1099 call assert_equal(v:null, luaeval('vim.b.NonExisting'))
1102 lua vim.b.bvar2 = 'paste'
1107 lua vim.b.bvar2 = vim.dict({a=10, b=20})
1111 lua vim.b.bvar7 = vim.dict({a=vim.list({1, 2}), b=20})
1115 lua vim.b.bvar2 = Nil
1119 call assert_equal(v:null, luaeval('vim.b.bvar1'))
1120 call assert_equal(v:null, luaeval('vim.b.bvar2'))
1125 " vim.t Lua table
1134 call assert_equal(10, luaeval('vim.t.tvar1'))
1135 call assert_equal('edit', luaeval('vim.t.tvar2'))
1136 call assert_equal(3.14, luaeval('vim.t.tvar3'))
1137 call assert_equal(0zdeadbeef, luaeval('vim.t.tvar4'))
1138 call assert_equal(['a', 'b'], luaeval('vim.t.tvar5'))
1139 call assert_equal(#{action: 'run'}, luaeval('vim.t.tvar6'))
1140 call assert_equal(v:null, luaeval('vim.t.NonExisting'))
1143 lua vim.t.tvar2 = 'paste'
1148 lua vim.t.tvar2 = vim.dict({a=10, b=20})
1152 lua vim.t.tvar7 = vim.dict({a=vim.list({1, 2}), b=20})
1156 lua vim.t.tvar2 = Nil
1160 call assert_equal(v:null, luaeval('vim.t.tvar1'))
1161 call assert_equal(v:null, luaeval('vim.t.tvar2'))
1165 " Test for vim.version()
1168 vimver = vim.version()
1174 " Test for running multiple commands using vim.command()
1177 vim.command([[
1197 " vim: shiftwidth=2 sts=2 expandtab