aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2017-04-20 08:35:50 +0200
committerMarc André Tanner <mat@brain-dump.org>2017-04-20 22:47:14 +0200
commit04fdfe6e0720cf815d0d61189fdd36872ad816f7 (patch)
tree48eaab584fd857e28373d5206b1c63f5b6811026
parentcbfdeeef7e3bd39195799331dfbbdbb476103901 (diff)
downloadvis-04fdfe6e0720cf815d0d61189fdd36872ad816f7.tar.gz
vis-04fdfe6e0720cf815d0d61189fdd36872ad816f7.tar.xz
vis: add # register to insert cursor number
-rw-r--r--man/vis.12
-rw-r--r--vis-core.h1
-rw-r--r--vis-registers.c11
-rw-r--r--vis.c1
-rw-r--r--vis.h1
5 files changed, 16 insertions, 0 deletions
diff --git a/man/vis.1 b/man/vis.1
index 66ec44f..7784af2 100644
--- 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
index 4df0cd4..51d3ae8 100644
--- 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
index f0ebb15..f5b5d7b 100644
--- 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
index 644fe08..d4031b2 100644
--- 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
index ea02307..d64c877 100644
--- 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,