mirror of
https://github.com/neovim/neovim.git
synced 2025-09-30 06:58:35 +00:00

- Remove unused variables. - Do not use helpers.nvim_feed in most cases. - Do not use helpers.nvim and helpers.nvim_eval at all. - Add helpers.funcs and helpers.\*meths special tables. Indexing such table creates functions which call helpers.call or helpers.nvim (and similar) with first argument equal to table index.
95 lines
2.1 KiB
Lua
95 lines
2.1 KiB
Lua
local helpers = require('test.functional.helpers')
|
|
local spawn, set_session, meths, nvim_prog =
|
|
helpers.spawn, helpers.set_session, helpers.meths, helpers.nvim_prog
|
|
local write_file, merge_args = helpers.write_file, helpers.merge_args
|
|
|
|
local msgpack = require('MessagePack')
|
|
|
|
local tmpname = os.tmpname()
|
|
local additional_cmd = ''
|
|
|
|
local function nvim_argv()
|
|
local ret
|
|
local nvim_argv = {nvim_prog, '-u', 'NONE', '-i', tmpname, '-N',
|
|
'--cmd', 'set shortmess+=I background=light noswapfile',
|
|
'--cmd', additional_cmd,
|
|
'--embed'}
|
|
if helpers.prepend_argv then
|
|
return merge_args(helpers.prepend_argv, nvim_argv)
|
|
else
|
|
return nvim_argv
|
|
end
|
|
end
|
|
|
|
local session = nil
|
|
|
|
local reset = function()
|
|
if session then
|
|
session:exit(0)
|
|
end
|
|
session = spawn(nvim_argv())
|
|
set_session(session)
|
|
meths.set_var('tmpname', tmpname)
|
|
end
|
|
|
|
local set_additional_cmd = function(s)
|
|
additional_cmd = s
|
|
end
|
|
|
|
local clear = function()
|
|
os.remove(tmpname)
|
|
set_additional_cmd('')
|
|
end
|
|
|
|
local get_shada_rw = function(fname)
|
|
local wshada = function(text)
|
|
write_file(fname, text, true)
|
|
end
|
|
local sdrcmd = function(bang)
|
|
return 'rshada' .. (bang and '!' or '') .. ' ' .. fname
|
|
end
|
|
local clean = function()
|
|
os.remove(fname)
|
|
local i = ('a'):byte()
|
|
while i <= ('z'):byte() do
|
|
if not os.remove(fname .. ('.tmp.%c'):format(i)) then
|
|
break
|
|
end
|
|
i = i + 1
|
|
end
|
|
end
|
|
return wshada, sdrcmd, fname, clean
|
|
end
|
|
|
|
local mpack_keys = {'type', 'timestamp', 'length', 'value'}
|
|
|
|
local read_shada_file = function(fname)
|
|
local fd = io.open(fname, 'r')
|
|
local mstring = fd:read('*a')
|
|
fd:close()
|
|
local unpacker = msgpack.unpacker(mstring)
|
|
local ret = {}
|
|
local cur
|
|
local i = 0
|
|
while true do
|
|
local off, val = unpacker()
|
|
if not off then break end
|
|
if i % 4 == 0 then
|
|
cur = {}
|
|
ret[#ret + 1] = cur
|
|
end
|
|
cur[mpack_keys[(i % 4) + 1]] = val
|
|
i = i + 1
|
|
end
|
|
return ret
|
|
end
|
|
|
|
return {
|
|
reset=reset,
|
|
set_additional_cmd=set_additional_cmd,
|
|
clear=clear,
|
|
exc_exec=exc_exec,
|
|
get_shada_rw=get_shada_rw,
|
|
read_shada_file=read_shada_file,
|
|
}
|