diff /sys/src/cmd/acme/exec.c . 643c643 < if(et==nil || et->w==nil || et->w->isdir) --- > if(et==nil || et->w==nil) 645a646 > w->isdir = FALSE; diff /sys/src/cmd/acme/text.c . 58c58 < if(t->what==Body && t->w->isdir && odx!=Dx(t->all)){ --- > if(t->what==Body && t->w->isdir && !t->w->dirty && odx!=Dx(t->all)){ 215d214 < t->w->filemenu = FALSE; 251d249 < t->w->filemenu = TRUE; diff /sys/src/cmd/acme/wind.c . 100c100 < if(w->body.file->mod && !w->isdir && !w->isscratch) --- > if(!w->isscratch && w->dirty) 262a263 > w->isdir = FALSE; 266a268,270 > else if(n>=1 && runeeq(L"/", 1, name+(n-1), 1)) > w->isdir = TRUE; > w->filemenu = !w->isscratch; 347a352,355 > if(w->isdir){ > runemove(new+i, L" Get", 4); > i += 4; > } 358c366 < if(!w->isdir && dirty){ --- > if(!w->isdir && !w->isscratch && dirty){ 363,366d370 < if(w->isdir){ < runemove(new+i, L" Get", 4); < i += 4; < } 411c415 < if(!w->isdir && !w->isscratch && (w->body.file->mod || w->body.ncache)) --- > if(!w->isscratch && w->dirty) diff /sys/src/cmd/acme/xfid.c . 117c117 < if(!w->isdir && w->col!=nil){ --- > if(w->col!=nil){