vis

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

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

commit 20beb12580ccbc5fd2373e1f55b497b65087cd6c
parent 0d8b6db5ee6003bd3cb0b82488822ded702cb1d7
Author: Marc André Tanner <mat@brain-dump.org>
Date:   Sun,  3 Apr 2016 19:36:59 +0200

sam: support % as address denoting the whole file

Diffstat:
Msam.c | 7++++---
1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/sam.c b/sam.c @@ -31,7 +31,7 @@ typedef struct { /* used to keep context when dealing with external proce } Filter; struct Address { - char type; /* # (char) l (line) g (goto line) / ? . $ + - , ; * */ + char type; /* # (char) l (line) g (goto line) / ? . $ + - , ; % */ Regex *regex; /* NULL denotes default for x, y, X, and Y commands */ size_t number; /* line or character number */ Address *left; /* left hand side of a compound address , ; */ @@ -366,6 +366,7 @@ static Address *address_parse_simple(Vis *vis, const char **s, enum SamError *er case '.': case '+': case '-': + case '%': (*s)++; break; default: @@ -594,7 +595,7 @@ static Command *command_parse(Vis *vis, const char **s, int level, enum SamError if (cmddef->flags & CMD_ADDRESS_ALL) { if (!(cmd->address = address_new())) goto fail; - cmd->address->type = '*'; + cmd->address->type = '%'; } } @@ -704,7 +705,7 @@ static Filerange address_evaluate(Address *addr, File *file, Filerange *range, i /* TODO: enforce strict ordering? */ return text_range_union(&left, &right); } - case '*': + case '%': return text_range_new(0, text_size(file->text)); } if (text_range_valid(&ret))