aboutsummaryrefslogtreecommitdiff
path: root/vis.c
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2015-05-15 23:44:24 +0200
committerMarc André Tanner <mat@brain-dump.org>2015-05-17 12:48:03 +0200
commit11129f3f47b6481621a2705847af68b7cea3bb3e (patch)
treed8dbad19217c4ffa8f24c74c2ae7e558265fdefc /vis.c
parentc651f730bcf60b3c963e21203221cc98990afc28 (diff)
downloadvis-11129f3f47b6481621a2705847af68b7cea3bb3e.tar.gz
vis-11129f3f47b6481621a2705847af68b7cea3bb3e.tar.xz
Implement :substitute by invoking sed as a filter
Diffstat (limited to 'vis.c')
-rw-r--r--vis.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/vis.c b/vis.c
index 6998f5e..a554081 100644
--- a/vis.c
+++ b/vis.c
@@ -1560,8 +1560,11 @@ static bool cmd_read(Filerange *range, enum CmdOpt opt, const char *argv[]) {
}
static bool cmd_substitute(Filerange *range, enum CmdOpt opt, const char *argv[]) {
- // TODO
- return true;
+ char pattern[255];
+ if (!text_range_valid(range))
+ range = &(Filerange){ .start = 0, .end = text_size(vis->win->file->text) };
+ snprintf(pattern, sizeof pattern, "s%s", argv[1]);
+ return cmd_filter(range, opt, (const char*[]){ argv[0], "sed", pattern, NULL});
}
static bool openfiles(const char **files) {