diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2016-11-16 22:22:49 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2016-11-16 23:36:45 +0100 |
| commit | 3ccc7effa376ea2b9206c272f3087c882f347c9b (patch) | |
| tree | e4a17c05abfee035dc2a1fed1c47a0c8b229a9fd /vis/visrc.lua | |
| parent | 1288db6bdeb0d5f9b24b208603e16871ff59cffc (diff) | |
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 <Escape> key to give vis a chance to distinguish between
a single <Escape> and the start of an escape sequence
Diffstat (limited to 'vis/visrc.lua')
| -rw-r--r-- | vis/visrc.lua | 17 |
1 files changed, 17 insertions, 0 deletions
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, '<Space>', ' ') + keys = string.gsub(keys, '\n', '') + file:close() + vis:feedkeys(keys..'<Escape>') + vis:command(string.format("w! '%s.out'", name)) + end + vis:command('q!') +end |
