Commit Diff


commit - acb880af1ce5169b0280eb9b8fa256942ab77bed
commit + de1168dd9caa73403e11de015b6f33323372c505
blob - fc03c93ca88c510563a78c73d835d05992f5bdc9
blob + a078a698dfa32c7c47a85f53adc1e44511ffb64d
--- src/cmd/acme/rows.c
+++ src/cmd/acme/rows.c
@@ -319,7 +319,7 @@ rowdump(Row *row, char *file)
 	uint q0, q1;
 	Biobuf *b;
 	char *buf, *a, *fontname;
-	Rune *r;
+	Rune *r, *rp;
 	Column *c;
 	Window *w, *w1;
 	Text *t;
@@ -417,11 +417,17 @@ rowdump(Row *row, char *file)
 			Bwrite(b, buf, strlen(buf));
 			m = min(RBUFSIZE, w->tag.file->b.nc);
 			bufread(&w->tag.file->b, 0, r, m);
-			n = 0;
-			while(n<m && r[n]!='\n')
+			if(dodollarsigns && r[0] == '$'){
+				rp = runestrdup(r);
+				expandenv(&rp, (uint*)&m);
+			}else
+				rp = r;
+			n = 0;
+			while(n<m && rp[n]!='\n')
 				n++;
-			r[n++] = '\n';
-			Bprint(b, "%.*S", n, r);
+			Bprint(b, "%.*S\n", n, rp);
+			if(rp != r)
+				free(rp);
 			if(dumped){
 				q0 = 0;
 				q1 = t->file->b.nc;