aboutsummaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2016-12-20 22:07:50 +0100
committerMarc André Tanner <mat@brain-dump.org>2016-12-20 22:08:42 +0100
commit6aeb589a8acb296b15473811f6633644786c8b61 (patch)
treefb8f956756268e0b7ad067348217094684dca4cf /main.c
parentb4b2c80752f32c0cbf72727a684dfbb2094179b1 (diff)
downloadvis-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.c27
1 files changed, 6 insertions, 21 deletions
diff --git a/main.c b/main.c
index fdfe0bc..64f1132 100644
--- a/main.c
+++ b/main.c
@@ -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)