commit 611cf11c03d8ff854c716802ec627b115a4343fc from: Peter Canning date: Sun Jul 20 07:14:55 2008 UTC acme: Dump and Load tag contents commit - 69d1259cf9af6d288b34c4452db4c418e739f750 commit + 611cf11c03d8ff854c716802ec627b115a4343fc blob - 50990d784bdd62fd70de4d6ba947cea4dafb631d blob + 32ffeab9d097a89fe468803056112cb245fc5b62 --- src/cmd/acme/rows.c +++ src/cmd/acme/rows.c @@ -354,6 +354,21 @@ rowdump(Row *row, char *file) c = row->col[i]; for(j=0; jnw; j++) c->w[j]->body.file->dumpid = 0; + } + m = min(RBUFSIZE, row->tag.file->b.nc); + bufread(&row->tag.file->b, 0, r, m); + n = 0; + while(nncol; i++){ + c = row->col[i]; + m = min(RBUFSIZE, c->tag.file->b.nc); + bufread(&c->tag.file->b, 0, r, m); + n = 0; + while(nncol; i++){ c = row->col[i]; @@ -494,7 +509,7 @@ rowloadfonts(char *file) int rowload(Row *row, char *file, int initing) { - int i, j, line, y, nr, nfontr, n, ns, ndumped, dumpid, x, fd; + int i, j, line, y, nr, nfontr, n, ns, ndumped, dumpid, x, fd, done; double percent; Biobuf *b, *bout; char *buf, *l, *t, *fontname; @@ -573,10 +588,45 @@ rowload(Row *row, char *file, int initing) if(i >= row->ncol) rowadd(row, nil, x); } - for(;;){ + done = 0; + while(!done){ l = rdline(b, &line); if(l == nil) break; + switch(l[0]){ + case 'c': + l[Blinelen(b)-1] = 0; + i = atoi(l+1+0*12); + r = bytetorune(l+1*12, &nr); + ns = -1; + for(n=0; ncol[i]->tag, 0, row->col[i]->tag.file->b.nc, TRUE); + textinsert(&row->col[i]->tag, 0, r+n+1, nr-(n+1), TRUE); + break; + case 'w': + l[Blinelen(b)-1] = 0; + r = bytetorune(l+2, &nr); + ns = -1; + for(n=0; ntag, 0, row->tag.file->b.nc, TRUE); + textinsert(&row->tag, 0, r, nr, TRUE); + break; + default: + done = 1; + break; + } + } + for(;;){ dumpid = 0; switch(l[0]){ case 'e': @@ -719,6 +769,9 @@ rowload(Row *row, char *file, int initing) q0 = q1 = 0; textshow(&w->body, q0, q1, 1); w->maxlines = min(w->body.fr.nlines, max(w->maxlines, w->body.fr.maxlines)); + l = rdline(b, &line); + if(l == nil) + break; } Bterm(b); fbuffree(buf);