4
moveto(File *f, Range r)
6
Posn p1 = r.p1, p2 = r.p2;
12
outTsl(Hmoveto, f->tag, f->dot.r.p1);
21
if(f->dot.r.p1==f->tdot.p1 && f->dot.r.p2==f->tdot.p2)
23
outTsll(Hsetdot, f->tag, f->dot.r.p1, f->dot.r.p2);
30
outTS(Hsetpat, &lastpat);
37
lookorigin(File *f, Posn p0, Posn ls)
46
for(nl=nc=c=0; c!=-1 && nl<ls && nc<ls*CHARSHIFT; nc++)
47
if((c=filereadc(f, --p)) == '\n'){
60
outTsl(Horigin, f->tag, p0);
67
* Hard to get absolutely right. Use what we know about ASCII
68
* and assume anything above the Latin control characters is
69
* potentially an alphanumeric.
73
if(0x7F<=c && c<=0xA0)
75
if(utfrune("!\"#$%&'()*+,-./:;<=>?@[\\]^`{|}~", c))
81
clickmatch(File *f, int cl, int cr, int dir, Posn *p)
90
c = filereadc(f, (*p)++);
94
c = filereadc(f, --(*p));
102
return cl=='\n' && nest==1;
106
strrune(Rune *s, Rune c)
123
doubleclick(File *f, Posn p1)
131
f->dot.r.p1 = f->dot.r.p2 = p1;
132
for(i=0; left[i]; i++){
140
c = filereadc(f, p - 1);
142
if(clickmatch(f, c, r[strrune(l, c)-l], 1, &p)){
144
f->dot.r.p2 = p-(c!='\n');
148
/* try right match */
155
if(clickmatch(f, c, l[strrune(r, c)-r], -1, &p)){
157
if(c!='\n' || p!=0 || filereadc(f, 0)=='\n')
159
f->dot.r.p2 = p1+(p1<f->b.nc && c=='\n');
164
/* try filling out word to right */
166
while(p < f->b.nc && alnum(filereadc(f, p++)))
168
/* try filling out word to left */
170
while(--p >= 0 && alnum(filereadc(f, p)))