From ce14602c3bd22b1b2793da18dda49f921c72cf88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Tue, 3 Nov 2015 16:34:37 +0100 Subject: vis: make single character replace (r command) repeatable --- main.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'main.c') diff --git a/main.c b/main.c index 4cc00cd..36b9bcd 100644 --- a/main.c +++ b/main.c @@ -1195,14 +1195,16 @@ static const char *replace(Vis *vis, const char *keys, const Arg *arg) { if (!keys[0]) return NULL; const char *next = vis_key_next(vis, keys); + if (!next) + return NULL; size_t len = next - keys; - /* TODO: fix - action_reset(vis, &vis->action_prev); - vis->action_prev.op = &ops[OP_REPEAT_REPLACE]; - buffer_put(&vis->buffer_repeat, keys, len); - */ - vis_replace_key(vis, keys, len); - text_snapshot(vis_text(vis)); + char key[len+1]; + memcpy(key, keys, len); + key[len] = '\0'; + vis_operator(vis, OP_REPLACE); + vis_motion(vis, MOVE_NOP); + vis_keys_inject(vis, next, key); + vis_keys_inject(vis, next+len, ""); return next; } -- cgit v1.2.3