diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2016-12-20 22:07:50 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2016-12-20 22:08:42 +0100 |
| commit | 6aeb589a8acb296b15473811f6633644786c8b61 (patch) | |
| tree | fb8f956756268e0b7ad067348217094684dca4cf /main.c | |
| parent | b4b2c80752f32c0cbf72727a684dfbb2094179b1 (diff) | |
| download | vis-6aeb589a8acb296b15473811f6633644786c8b61.tar.gz vis-6aeb589a8acb296b15473811f6633644786c8b61.tar.xz | |
vis: improve literal insertion via <C-v> in insert mode
Diffstat (limited to 'main.c')
| -rw-r--r-- | main.c | 27 |
1 files changed, 6 insertions, 21 deletions
@@ -1879,28 +1879,13 @@ static const char *insert_verbatim(Vis *vis, const char *keys, const Arg *arg) { const char *next = vis_keys_next(vis, keys); if (!next) return NULL; - size_t keylen = next - keys; - char key[keylen+1]; - memcpy(key, keys, keylen); - key[keylen] = '\0'; - - static const char *keysym[] = { - "<Enter>", "\n", - "<Tab>", "\t", - "<Backspace>", "\b", - "<Escape>", "\x1b", - "<DEL>", "\x7f", - NULL, - }; - - for (const char **k = keysym; k[0]; k += 2) { - if (strcmp(k[0], key) == 0) { - data = k[1]; - len = strlen(data); - keys = next; - break; - } + if ((rune = vis_keys_codepoint(vis, keys)) != (Rune)-1) { + len = runetochar(buf, &rune); + data = buf; + } else { + vis_info_show(vis, "Unknown key"); } + keys = next; } if (len > 0) |
