diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2015-04-21 08:52:49 +0200 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2015-04-21 11:06:10 +0200 |
| commit | d941d9cbc8891c745c11edfd6211c3bb69626991 (patch) | |
| tree | b50c3fdcff18af7eb937916cd9d9c44529fb6281 /vis.c | |
| parent | aca46a0da8969f15d9356c149687f961b6852516 (diff) | |
| download | vis-d941d9cbc8891c745c11edfd6211c3bb69626991.tar.gz vis-d941d9cbc8891c745c11edfd6211c3bb69626991.tar.xz | |
Implement ';' and ','
This fixes #45
Diffstat (limited to 'vis.c')
| -rw-r--r-- | vis.c | 32 |
1 files changed, 32 insertions, 0 deletions
@@ -303,6 +303,10 @@ static void join(const Arg *arg); static void cmd(const Arg *arg); /* perform last action i.e. action_prev again */ static void repeat(const Arg *arg); +/* repeat last to/till movement */ +static void totill_repeat(const Arg *arg); +/* repeat last to/till movement but in opposite direction */ +static void totill_reverse(const Arg *arg); /* replace character at cursor with one read form keyboard */ static void replace(const Arg *arg); /* adjust action.count by arg->i */ @@ -774,6 +778,33 @@ static void repeat(const Arg *arg) { action_do(&vis->action); } +static void totill_repeat(const Arg *arg) { + if (!vis->last_totill) + return; + movement(&(const Arg){ .i = vis->last_totill }); +} + +static void totill_reverse(const Arg *arg) { + int type = vis->last_totill; + switch (type) { + case MOVE_RIGHT_TO: + type = MOVE_LEFT_TO; + break; + case MOVE_LEFT_TO: + type = MOVE_RIGHT_TO; + break; + case MOVE_RIGHT_TILL: + type = MOVE_LEFT_TILL; + break; + case MOVE_LEFT_TILL: + type = MOVE_RIGHT_TILL; + break; + default: + return; + } + movement(&(const Arg){ .i = type }); +} + static void replace(const Arg *arg) { Key k = getkey(); if (!k.str[0]) @@ -843,6 +874,7 @@ static void movement_key(const Arg *arg) { return; } strncpy(vis->search_char, k.str, sizeof(vis->search_char)); + vis->last_totill = arg->i; vis->action.movement = &moves[arg->i]; action_do(&vis->action); } |
