From 4738a2572fcbe492df4d0fbc8b7dbdd0f1d4d840 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Fri, 27 Jan 2017 15:22:45 +0100 Subject: vis-lua: introduce vis:insert function --- vis-lua.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'vis-lua.c') diff --git a/vis-lua.c b/vis-lua.c index 842a979..e42f867 100644 --- a/vis-lua.c +++ b/vis-lua.c @@ -1024,6 +1024,25 @@ static int feedkeys(lua_State *L) { return 0; } +/*** + * Insert keys at all cursor positions of active window. + * + * This function behaves as if the keys were entered in insert mode, + * but in contrast to @{Vis:feedkeys} it bypasses the input queue, + * meaning mappings do not apply and the keys will not be recorded in macros. + * + * @function insert + * @tparam string keys the keys to insert + * @see Vis:feedkeys + */ +static int insert(lua_State *L) { + Vis *vis = obj_ref_check(L, 1, "vis"); + size_t len; + const char *keys = luaL_checklstring(L, 2, &len); + vis_insert_key(vis, keys, len); + return 0; +} + /*** * Currently active window. * @tfield Window win @@ -1101,6 +1120,7 @@ static const struct luaL_Reg vis_lua[] = { { "textobject_register", textobject_register }, { "command_register", command_register }, { "feedkeys", feedkeys }, + { "insert", insert }, { "action_register", action_register }, { "__index", vis_index }, { "__newindex", vis_newindex }, -- cgit v1.2.3