vis

a vi-like editor based on Plan 9's structural regular expressions

git clone https://9o.is/git/vis.git

commit 22681295ca6d6def3ab14f19f65b528153db09c9
parent 722733db9f1d1665e31c6c16327d5ca05e19f498
Author: Marc André Tanner <mat@brain-dump.org>
Date:   Wed, 17 Feb 2016 21:10:34 +0100

vis-lua: expose vis:textobject(id)

Diffstat:
Mvis-lua.c | 8++++++++
Mvis-text-objects.c | 4+++-
Mvis.h | 2+-
3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/vis-lua.c b/vis-lua.c @@ -397,6 +397,13 @@ err: return 1; } +static int textobject(lua_State *L) { + Vis *vis = obj_ref_check(L, 1, "vis"); + enum VisTextObject id = luaL_checkunsigned(L, 2); + lua_pushboolean(L, vis && vis_textobject(vis, id)); + return 1; +} + static int vis_index(lua_State *L) { Vis *vis = obj_ref_check(L, 1, "vis"); if (!vis) { @@ -461,6 +468,7 @@ static const struct luaL_Reg vis_lua[] = { { "map", map }, { "motion", motion }, { "motion_register", motion_register }, + { "textobject", textobject }, { "__index", vis_index }, { "__newindex", vis_newindex }, { NULL, NULL }, diff --git a/vis-text-objects.c b/vis-text-objects.c @@ -2,11 +2,13 @@ #include "text-objects.h" #include "util.h" -void vis_textobject(Vis *vis, enum VisTextObject id) { +bool vis_textobject(Vis *vis, enum VisTextObject id) { if (id < LENGTH(vis_textobjects)) { vis->action.textobj = &vis_textobjects[id]; action_do(vis, &vis->action); + return true; } + return false; } static Filerange search_forward(Vis *vis, Text *txt, size_t pos) { diff --git a/vis.h b/vis.h @@ -315,7 +315,7 @@ enum VisTextObject { VIS_TEXTOBJECT_INVALID, }; -void vis_textobject(Vis*, enum VisTextObject); +bool vis_textobject(Vis*, enum VisTextObject); /* macro REPEAT and INVALID should be considered as implementation details (TODO: hide them?) */ enum VisMacro {