vis

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

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

commit fa2d7612f12ae488c890b013ed4e9db03a08c713
parent d004e04500e7e08d3c0c6817a8ff1800df5cbf84
Author: Marc André Tanner <mat@brain-dump.org>
Date:   Fri, 17 Nov 2017 12:29:38 +0100

vis-lua: do not enumerate internal windows

This for example skips the command prompt window.

Diffstat:
Mvis-lua.c | 13++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/vis-lua.c b/vis-lua.c @@ -618,8 +618,9 @@ static const char *keymapping(Vis *vis, const char *keys, const Arg *arg) { static int windows_iter(lua_State *L); static int windows(lua_State *L) { Vis *vis = obj_ref_check(L, 1, "vis"); - Win **handle = lua_newuserdata(L, sizeof *handle); - *handle = vis->windows; + Win **handle = lua_newuserdata(L, sizeof *handle), *next; + for (next = vis->windows; next && next->file->internal; next = next->next); + *handle = next; lua_pushcclosure(L, windows_iter, 1); return 1; } @@ -628,9 +629,11 @@ static int windows_iter(lua_State *L) { Win **handle = lua_touserdata(L, lua_upvalueindex(1)); if (!*handle) return 0; - Win *win = obj_ref_new(L, *handle, VIS_LUA_TYPE_WINDOW); - if (win) - *handle = win->next; + Win *win = obj_ref_new(L, *handle, VIS_LUA_TYPE_WINDOW), *next; + if (win) { + for (next = win->next; next && next->file->internal; next = next->next); + *handle = next; + } return 1; }