linux-qubasis

linux oasis port as a qubes template

git clone https://9o.is/git/linux-qubasis.git

commit 918ba9c78490614f2b93d72c1d2dbc45eeec1e00
parent f8480e5f6987febed76082e78c0da63da1bbf154
Author: Jul <jul@9o.is>
Date:   Sat, 11 Oct 2025 22:41:51 +0800

add vis:command_unregister() command

Diffstat:
Apkg/vis/patch/0002-add-vis-command_unregister-allow-unregistering-built.patch | 77+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 77 insertions(+), 0 deletions(-)

diff --git a/pkg/vis/patch/0002-add-vis-command_unregister-allow-unregistering-built.patch b/pkg/vis/patch/0002-add-vis-command_unregister-allow-unregistering-built.patch @@ -0,0 +1,77 @@ +From cb2d881ae199684a6bf6d97a3f34c66168ea43f6 Mon Sep 17 00:00:00 2001 +From: Jul <jul@qh.is> +Date: Sat, 11 Oct 2025 22:39:18 +0800 +Subject: [PATCH] add vis:command_unregister() - allow unregistering builtin + commands + +--- + vis-cmds.c | 25 ++++++++++++++++--------- + vis-lua.c | 9 +++++++++ + 2 files changed, 25 insertions(+), 9 deletions(-) + +diff --git a/vis-cmds.c b/vis-cmds.c +index 892f5a5..ed9be52 100644 +--- a/vis-cmds.c ++++ b/vis-cmds.c +@@ -51,15 +51,22 @@ err: + bool vis_cmd_unregister(Vis *vis, const char *name) { + if (!name) + return true; +- CmdUser *cmd = map_get(vis->usercmds, name); +- if (!cmd) +- return false; +- if (!map_delete(vis->cmds, name)) +- return false; +- if (!map_delete(vis->usercmds, name)) +- return false; +- cmdfree(cmd); +- return true; ++ CmdUser *cmduser = map_get(vis->usercmds, name); ++ if (cmduser) { ++ if (!map_delete(vis->cmds, name)) ++ return false; ++ if (!map_delete(vis->usercmds, name)) ++ return false; ++ cmdfree(cmduser); ++ return true; ++ } ++ CommandDef *cmddef = map_get(vis->cmds, name); ++ if (cmddef) { ++ if (!map_delete(vis->cmds, name)) ++ return false; ++ return true; ++ } ++ return false; + } + + static void option_free(OptionDef *opt) { +diff --git a/vis-lua.c b/vis-lua.c +index f7e9001..3c233fa 100644 +--- a/vis-lua.c ++++ b/vis-lua.c +@@ -1146,6 +1146,14 @@ static int command_register(lua_State *L) { + return 1; + } + ++static int command_unregister(lua_State *L) { ++ Vis *vis = obj_ref_check(L, 1, "vis"); ++ const char *name = luaL_checkstring(L, 2); ++ bool ret = vis_cmd_unregister(vis, name); ++ lua_pushboolean(L, ret); ++ return 1; ++} ++ + /*** + * Push keys to input queue and interpret them. + * +@@ -1559,6 +1567,7 @@ static const struct luaL_Reg vis_lua[] = { + { "option_register", option_register }, + { "option_unregister", option_unregister }, + { "command_register", command_register }, ++ { "command_unregister", command_unregister }, + { "feedkeys", feedkeys }, + { "insert", insert }, + { "replace", replace }, +-- +2.51.0 +