diff options
| author | Jeremy Bobbin <jer@jer.cx> | 2020-07-11 09:17:00 -0700 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2020-07-17 15:30:39 +0200 |
| commit | 9cb69f746312efa7c01c1dd4185bface3b30bb6d (patch) | |
| tree | 802abcd76e734f500b9f72aaf7fd6dc2a6efe0c6 /vis-registers.c | |
| parent | f34f6d968e711f3cab019a12bb60da1bbf52161f (diff) | |
| download | vis-9cb69f746312efa7c01c1dd4185bface3b30bb6d.tar.gz vis-9cb69f746312efa7c01c1dd4185bface3b30bb6d.tar.xz | |
support for primary clipboard
Diffstat (limited to 'vis-registers.c')
| -rw-r--r-- | vis-registers.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/vis-registers.c b/vis-registers.c index 503c50b..58fc7ec 100644 --- a/vis-registers.c +++ b/vis-registers.c @@ -69,16 +69,21 @@ const char *register_slot_get(Vis *vis, Register *reg, size_t slot, size_t *len) case REGISTER_CLIPBOARD: { Buffer buferr; + enum VisRegister id = reg - vis->registers; + const char *cmd[] = { VIS_CLIPBOARD, "--paste", "--selection", NULL, NULL }; buffer_init(&buferr); Buffer *buf = array_get(®->values, slot); if (!buf) return NULL; buffer_clear(buf); + if (id == VIS_REG_PRIMARY) + cmd[3] = "primary"; + else + cmd[3] = "clipboard"; int status = vis_pipe(vis, vis->win->file, &(Filerange){ .start = 0, .end = 0 }, - (const char*[]){ VIS_CLIPBOARD, "--paste", NULL }, - buf, read_buffer, &buferr, read_buffer); + cmd, buf, read_buffer, &buferr, read_buffer); if (status != 0) vis_info_show(vis, "Command failed %s", buffer_content0(&buferr)); @@ -152,11 +157,17 @@ bool register_slot_put_range(Vis *vis, Register *reg, size_t slot, Text *txt, Fi case REGISTER_CLIPBOARD: { Buffer buferr; + const char *cmd[] = { VIS_CLIPBOARD, "--copy", "--selection", NULL, NULL }; + enum VisRegister id = reg - vis->registers; buffer_init(&buferr); + if (id == VIS_REG_PRIMARY) + cmd[3] = "primary"; + else + cmd[3] = "clipboard"; + int status = vis_pipe(vis, vis->win->file, range, - (const char*[]){ VIS_CLIPBOARD, "--copy", NULL }, - NULL, NULL, &buferr, read_buffer); + cmd, NULL, NULL, &buferr, read_buffer); if (status != 0) vis_info_show(vis, "Command failed %s", buffer_content0(&buferr)); @@ -187,7 +198,6 @@ bool register_resize(Register *reg, size_t count) { enum VisRegister vis_register_from(Vis *vis, char reg) { switch (reg) { - case '+': return VIS_REG_CLIPBOARD; case '@': return VIS_MACRO_LAST_RECORDED; } @@ -275,7 +285,8 @@ const RegisterDef vis_registers[] = { [VIS_REG_9] = { '9', VIS_HELP("9th sub-expression match") }, [VIS_REG_AMPERSAND] = { '&', VIS_HELP("Last regex match") }, [VIS_REG_BLACKHOLE] = { '_', VIS_HELP("/dev/null register") }, - [VIS_REG_CLIPBOARD] = { '*', VIS_HELP("System clipboard register, see vis-clipboard(1)") }, + [VIS_REG_PRIMARY] = { '*', VIS_HELP("Primary clipboard register, see vis-clipboard(1)") }, + [VIS_REG_CLIPBOARD] = { '+', VIS_HELP("System clipboard register, see vis-clipboard(1)") }, [VIS_REG_DOT] = { '.', VIS_HELP("Last inserted text") }, [VIS_REG_SEARCH] = { '/', VIS_HELP("Last search pattern") }, [VIS_REG_COMMAND] = { ':', VIS_HELP("Last :-command") }, |
