*! 26jan2011 program savel version 11.1 mata: DoIt() end version 11.1 mata: void DoIt() { class prefs scalar pr syntaxl(st_local("0"),(&(path="[anything]"),&(ifin="[ifin]")), (&(keep="[keep()]"),&(cd="[cd]"),&(st="[st:config()]"),&(draft="[drop:after]"),&(make="[m:akedirs]"))) if (sub=strlen(ifin+keep)) { if (path=="") errel("To save a subset of the current data, you must include a filename.") stata("preserve") if (ifin!="") stata("keep "+ifin) keep=concat(varlist(keep)," ") if (keep!="") stata("keep "+keep) } pr.make("recentfiles","path") if (path=="") { if (!pr.r) errel("There is no CURRENT FILE to reference") else path=pp12(pr.body[pr.r])+".dta" } savel(path,make?"make":"",st) if (sub) stata("restore") if (draft&ifin!="") stata("drop "+ifin) if (subvec(pr.body,(-1,.))!=path) pr.body=subvec(pr.body\path,((pr.r-recentmax()+2)*(pr.r>recentmax()),.)) pr.write() stata(`"window man maintitle "."'+pp2(path)+(pp3(path)==".dta"?"":pp3(path))) if (cd) { //bug: stata doesn't update status bar from chdir, so might as well use stata(cd) for all stata(sprintf(`"cd "%s""',dir=pp1(path))) pr.make("recentdirs","path") if (subvec(pr.body,(-1,.))!=dir) pr.body=subvec((pr.body\dir),((pr.r-recentmax()+2)*(pr.r>recentmax()),.)) pr.write() } } end