mirror of
https://github.com/boxpositron/absolute-dotfiles.git
synced 2026-10-24 08:23:19 +00:00
feat(omo): quit with :q, :q!, :qa or :wq
A small extension catches Enter while the editor holds :q, :q!, :qa or :wq and shuts omo down, after the running turn if there is one. It reads the key through onTerminalInput rather than the input event, so typing :q never fires UserPromptSubmit hooks, which used to leave the blue working marker behind. setup-mac.sh links it into ~/.omo/agent/extensions.
This commit is contained in:
@@ -0,0 +1,27 @@
|
|||||||
|
// Enter is caught before the editor submits, where omo handles /quit, so :q never fires prompt hooks
|
||||||
|
// such as UserPromptSubmit. ctx.shutdown() waits for the agent to go idle, so :q mid-turn quits after it.
|
||||||
|
import type { ExtensionAPI } from "@code-yeongyu/senpi";
|
||||||
|
import { Key, matchesKey } from "@earendil-works/pi-tui";
|
||||||
|
|
||||||
|
const QUIT_COMMANDS = new Set([":q", ":q!", ":qa", ":wq"]);
|
||||||
|
|
||||||
|
export default function (pi: ExtensionAPI) {
|
||||||
|
let unsubscribe: (() => void) | undefined;
|
||||||
|
|
||||||
|
pi.on("session_start", (_event, ctx) => {
|
||||||
|
unsubscribe?.();
|
||||||
|
unsubscribe = ctx.ui.onTerminalInput((data) => {
|
||||||
|
if (!matchesKey(data, Key.enter) || !QUIT_COMMANDS.has(ctx.ui.getEditorText().trim())) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
ctx.ui.setEditorText("");
|
||||||
|
ctx.shutdown();
|
||||||
|
return { consume: true };
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
pi.on("session_shutdown", () => {
|
||||||
|
unsubscribe?.();
|
||||||
|
unsubscribe = undefined;
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -48,6 +48,7 @@ local_servers
|
|||||||
.config/zed/settings.json
|
.config/zed/settings.json
|
||||||
.config/omo/hooks.json:.omo/agent/hooks.json
|
.config/omo/hooks.json:.omo/agent/hooks.json
|
||||||
.config/omo/keybindings.json:.omo/agent/keybindings.json
|
.config/omo/keybindings.json:.omo/agent/keybindings.json
|
||||||
|
.config/omo/extensions/vim-quit.ts:.omo/agent/extensions/vim-quit.ts
|
||||||
.config/omo/prompts:.omo/agent/prompts
|
.config/omo/prompts:.omo/agent/prompts
|
||||||
"
|
"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user