summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWormHeamer2026-01-02 05:52:07 -0500
committerWormHeamer2026-01-02 05:52:07 -0500
commitd83cc235924cacceeea86c890a404f497a0a74de (patch)
tree8afc0fb92f8d7288d2791f2b57828844fea241e0
parentfb1a2bff627b64f3a5386049d8314bc225432b55 (diff)
add ! command
-rw-r--r--main.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/main.c b/main.c
index a5b0dae..e3b7784 100644
--- a/main.c
+++ b/main.c
@@ -1477,6 +1477,7 @@ void mode_key_normal(Editor *e, u32 c) {
eb->cur = txt_insert(eb->cur, e->yank.s, e->yank.n);
for (u32 i = 0; i < e->yank.n; i++) eb->cur = cprev(eb->cur);
break;
+
case 'd': {
TxtLoc before = eb->cur;
if (motion(&eb->cur, vui_key())) {
@@ -1484,6 +1485,18 @@ void mode_key_normal(Editor *e, u32 c) {
eb->cur = txt_delete_range(before, eb->cur);
}
} break;
+
+ case '!': {
+ TxtLoc before = eb->cur, after = eb->cur;
+ if (motion(&after, vui_key())) {
+ Str s = get_input_line(S("Command: "));
+ if (s.n > 0) {
+ yank_range(e, before, after);
+ shell_replace(before, after, str_to_cstr(s, &e->scratch));
+ }
+ }
+ } break;
+
case 'y': {
TxtLoc l = eb->cur;
if (motion(&l, vui_key())) yank_range(e, eb->cur, l);