diff options
| author | WormHeamer | 2026-01-02 05:52:07 -0500 |
|---|---|---|
| committer | WormHeamer | 2026-01-02 05:52:07 -0500 |
| commit | d83cc235924cacceeea86c890a404f497a0a74de (patch) | |
| tree | 8afc0fb92f8d7288d2791f2b57828844fea241e0 | |
| parent | fb1a2bff627b64f3a5386049d8314bc225432b55 (diff) | |
add ! command
| -rw-r--r-- | main.c | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -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); |
