Add dollarsign support.
diff --git a/src/cmd/acme/look.c b/src/cmd/acme/look.c
index a673545..65ee15c 100644
--- a/src/cmd/acme/look.c
+++ b/src/cmd/acme/look.c
@@ -455,10 +455,12 @@
 	b = nil;
 	if(t==nil || t->w==nil)
 		goto Rescue;
+	if(dodollarsigns && n>=1 && r[0]=='$')
+		expandenv(&r, &n);
 	nt = t->w->tag.file->b.nc;
 	if(nt == 0)
 		goto Rescue;
-	if(n>=1 &&  r[0]=='/')
+	if(n>=1 && r[0]=='/')
 		goto Rescue;
 	b = runemalloc(nt+n+1);
 	bufread(&t->w->tag.file->b, 0, b, nt);
@@ -472,9 +474,12 @@
 	}
 	if(slash < 0)
 		goto Rescue;
-	runemove(b+slash+1, r, n);
+	slash++;
+	if(dodollarsigns && expandenv(&b, &slash))
+		b = runerealloc(b, slash+n);
+	runemove(b+slash, r, n);
 	free(r);
-	return cleanrname(runestr(b, slash+1+n));
+	return cleanrname(runestr(b, slash+n));
 
     Rescue:
 	free(b);
@@ -535,7 +540,7 @@
 	if(n == 0)
 		return FALSE;
 	/* see if it's a file name */
-	r = runemalloc(n);
+	r = runemalloc(n+1);	/* +1 for possible $ below */
 	bufread(&t->file->b, q0, r, n);
 	/* first, does it have bad chars? */
 	nname = -1;
@@ -551,9 +556,12 @@
 	}
 	if(nname == -1)
 		nname = n;
-	for(i=0; i<nname; i++)
+	for(i=0; i<nname; i++){
+		if(dodollarsigns && i==0 && r[0]=='$')
+			continue;
 		if(!isfilec(r[i]))
 			goto Isntfile;
+	}
 	/*
 	 * See if it's a file name in <>, and turn that into an include
 	 * file name if so.  Should probably do it for "" too, but that's not
@@ -568,9 +576,13 @@
 	else if(amin == q0)
 		goto Isfile;
 	else{
-		rs = dirname(t, r, nname);
-		r = rs.r;
-		nname = rs.nr;
+		if(dodollarsigns && r[0] == '$')
+			expandenv(&r, &nname);
+		else{
+			rs = dirname(t, r, nname);
+			r = rs.r;
+			nname = rs.nr;
+		}
 	}
 	e->bname = runetobyte(r, nname);
 	/* if it's already a window name, it's a file */