vis

a vi-like editor based on Plan 9's structural regular expressions

git clone https://9o.is/git/vis.git

commit d68a3bb4b84102a1710dfb40e7a966a90118826f
parent b2ab53e42dd35b00b6cd722c5f22066a5e4103e0
Author: Marc André Tanner <mat@brain-dump.org>
Date:   Thu, 20 Apr 2017 08:35:50 +0200

vis: add # register to insert cursor number

Diffstat:
Mman/vis.1 | 2++
Mvis-core.h | 1+
Mvis-registers.c | 11+++++++++++
Mvis.c | 1+
Mvis.h | 1+
5 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/man/vis.1 b/man/vis.1 @@ -152,6 +152,8 @@ command register, most recently executed command black hole .Pq Pa /dev/null register, ignore content is always empty +.It Ic \(dq# +cursor number (readonly) .El .Pp If no explicit register is specified a default register is used. diff --git a/vis-core.h b/vis-core.h @@ -45,6 +45,7 @@ typedef struct { bool append; enum { REGISTER_NORMAL, + REGISTER_NUMBER, REGISTER_BLACKHOLE, REGISTER_CLIPBOARD, } type; diff --git a/vis-registers.c b/vis-registers.c @@ -56,6 +56,16 @@ const char *register_slot_get(Vis *vis, Register *reg, size_t slot, size_t *len) *len = buffer_length0(buf); return buffer_content0(buf); } + case REGISTER_NUMBER: + { + Buffer *buf = array_get(&reg->values, 0); + if (!buf) + return NULL; + buffer_printf(buf, "%zu", slot+1); + if (len) + *len = buffer_length0(buf); + return buffer_content0(buf); + } case REGISTER_CLIPBOARD: { Buffer buferr; @@ -246,4 +256,5 @@ const RegisterDef vis_registers[] = { [VIS_REG_SEARCH] = { '/', VIS_HELP("Last search pattern") }, [VIS_REG_COMMAND] = { ':', VIS_HELP("Last :-command") }, [VIS_REG_SHELL] = { '!', VIS_HELP("Last shell command given to either <, >, |, or !") }, + [VIS_REG_NUMBER] = { '#', VIS_HELP("Cursor number") }, }; diff --git a/vis.c b/vis.c @@ -652,6 +652,7 @@ Vis *vis_new(Ui *ui, VisEvent *event) { register_init(&vis->registers[i]); vis->registers[VIS_REG_BLACKHOLE].type = REGISTER_BLACKHOLE; vis->registers[VIS_REG_CLIPBOARD].type = REGISTER_CLIPBOARD; + vis->registers[VIS_REG_NUMBER].type = REGISTER_NUMBER; array_init(&vis->operators); array_init(&vis->motions); array_init(&vis->textobjects); diff --git a/vis.h b/vis.h @@ -440,6 +440,7 @@ enum VisRegister { VIS_REG_SEARCH, /* last used search pattern "/ */ VIS_REG_COMMAND, /* last used :-command ": */ VIS_REG_SHELL, /* last used shell command given to either <, >, |, or ! */ + VIS_REG_NUMBER, /* cursor number */ VIS_REG_a, VIS_REG_b, VIS_REG_c, VIS_REG_d, VIS_REG_e, VIS_REG_f, VIS_REG_g, VIS_REG_h, VIS_REG_i, VIS_REG_j, VIS_REG_k, VIS_REG_l, VIS_REG_m, VIS_REG_n, VIS_REG_o,