From 3ccc7effa376ea2b9206c272f3087c882f347c9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Wed, 16 Nov 2016 22:22:49 +0100 Subject: test/vis: convert vis specific tests to use the Lua API Instead of using the keys utility to convert the textual key representation into something a terminal would send and then pipe it to vis' standard input use the Lua API to directly feed the keys into vis' input queue. This has a number of advantages: - it is less fragile: the keys utility is incomplete and only handles the most common keys - it is faster because there is no need to artificially delay input after an key to give vis a chance to distinguish between a single and the start of an escape sequence --- vis/visrc.lua | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 vis/visrc.lua (limited to 'vis/visrc.lua') diff --git a/vis/visrc.lua b/vis/visrc.lua new file mode 100644 index 0000000..909aa00 --- /dev/null +++ b/vis/visrc.lua @@ -0,0 +1,17 @@ +vis.events = {} +vis.events.win_open = function(win) + -- test.in file passed to vis + local name = win.file.name + if name then + -- use the corresponding test.lua file + name = string.gsub(name, '%.in$', '') + local file = assert(io.popen(string.format("cpp -P '%s.keys'", name), 'r')) + local keys = file:read('*all') + keys = string.gsub(keys, '', ' ') + keys = string.gsub(keys, '\n', '') + file:close() + vis:feedkeys(keys..'') + vis:command(string.format("w! '%s.out'", name)) + end + vis:command('q!') +end -- cgit v1.2.3