summaryrefslogtreecommitdiff
path: root/sys/src/cmd/acme/wind.c
diff options
context:
space:
mode:
authorRoberto E. Vargas Caballero <k0ga@shike2.com>2020-01-19 19:18:12 +0100
committerRoberto E. Vargas Caballero <k0ga@shike2.com>2020-01-19 19:18:12 +0100
commit47bae09b33f677b9e1f5b45190ec5216f5d988e0 (patch)
treecf80c1f135fa3167953cc5c1ad517a1cc8402398 /sys/src/cmd/acme/wind.c
parentb099753597d2c3b3d150c686df5c16310168477e (diff)
Apply http://www.9paste.net/qrstuv/patch/acme-movetodelmesg/
Diffstat (limited to 'sys/src/cmd/acme/wind.c')
-rw-r--r--sys/src/cmd/acme/wind.c31
1 files changed, 18 insertions, 13 deletions
diff --git a/sys/src/cmd/acme/wind.c b/sys/src/cmd/acme/wind.c
index 7c222a17c..a624f50d3 100644
--- a/sys/src/cmd/acme/wind.c
+++ b/sys/src/cmd/acme/wind.c
@@ -90,20 +90,23 @@ wininit(Window *w, Window *clone, Rectangle r)
}
int
-delrunepos(Window *w)
+tagrunepos(Window *w, Rune *s)
{
int n;
- Rune rune;
-
- for(n=0; n<w->tag.file->nc; n++) {
- bufread(w->tag.file, n, &rune, 1);
- if(rune == ' ')
- break;
- }
- n += 2;
- if(n >= w->tag.file->nc)
+ Rune *r, *rr;
+
+ if(s == nil)
return -1;
- return n;
+
+ n = w->tag.file->nc;
+ r = runemalloc(n+1);
+ bufread(w->tag.file, 0, r, n);
+ r[n] = L'\0';
+
+ rr = runestrstr(r, s);
+ if(rr == nil || rr == r)
+ return -1;
+ return rr - r;
}
void
@@ -111,7 +114,9 @@ movetodel(Window *w)
{
int n;
- n = delrunepos(w);
+ n = tagrunepos(w, delcmd);
+ free(delcmd);
+ delcmd = nil;
if(n < 0)
return;
moveto(mousectl, addpt(frptofchar(&w->tag, n), Pt(4, w->tag.font->height-4)));
@@ -138,7 +143,7 @@ wintaglines(Window *w, Rectangle r)
if(!w->tagexpand) {
/* use just as many lines as needed to show the Del */
- n = delrunepos(w);
+ n = tagrunepos(w, delcmd);
if(n < 0)
return 1;
p = subpt(frptofchar(&w->tag, n), w->tag.r.min);