<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Dear all,</div><div><br></div>I work regular office hours developing commercial software using DrScheme. I find the indentation engine to be mostly fine.&nbsp;There are a couple of mildly annoying cases that I've noticed, which I've mentioned at the bottom of this email in case anyone is thinking of tackling the issue. However, I don't consider these issues to be show-stoppers by any means.<div><div><br></div><div>There are some features which I would like to see in DrScheme (in roughly this order):</div><div><br></div><div>&nbsp;&nbsp;- add regular expression search and replace;</div><div>&nbsp;&nbsp;- make pressing TAB in the "find" or "replace" boxes move you to the next box (rather than inserting a tab character);</div><div>&nbsp;&nbsp;- make the tab list scroll or compress or show all the tabs when you have more tabs than the width of the window</div><div>&nbsp;&nbsp; &nbsp; &nbsp;(or add a vertical tab list feature that can list more stuff);</div><div>&nbsp;&nbsp;- make every entry on the "indenting" preference pane a regular expression (make it easier to add rules);</div><div>&nbsp;&nbsp; &nbsp; &nbsp;(or maybe allow the definition of extra indentation rules in PLaneT packages).</div><div><br></div><div>I'd be happy to help out implementing some of these where I'm able. I tried the regular expression search and replace a while back but I didn't get very far (I may try again in the future).&nbsp;I personally have never been able to make Emacs more of a help rather than a hinderance (goodbye, programmer street cred), so I am very glad DrScheme exists and is such a viable editor for "real" programmers as well as being a teaching tool.</div><div><br></div><div>Cheers,</div><div><br></div><div>-- Dave</div><div><br></div><div>----- for/fold -----</div><div><br></div><div><font class="Apple-style-span" face="Monaco">&nbsp;&nbsp;(for/fold ([accum null])</font><div><font class="Apple-style-span" face="Monaco">&nbsp;&nbsp; &nbsp;([i (in-range 1 10)])</font></div><div><font class="Apple-style-span" face="Monaco">&nbsp;&nbsp; &nbsp;(cons i accum))</font></div><div><br></div><div>should probably be:</div><div><br></div><div><div><font class="Apple-style-span" face="Monaco">(for/fold ([accum null])</font></div><div><font class="Apple-style-span" face="Monaco">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;([i (in-range 1 10)])</font></div><div><font class="Apple-style-span" face="Monaco">&nbsp;&nbsp; &nbsp; (cons i accum))</font></div><div><br></div></div><div>----- ->* with long lists of keyword arguments -----</div><div><br></div><div><div><font class="Apple-style-span" face="Monaco">(provide/contract</font></div><div><font class="Apple-style-span" face="Monaco">&nbsp;[some-procedure (->* () (#:key1 integer?</font></div><div><font class="Apple-style-span" face="Monaco">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #:key2 integer?</font></div><div><font class="Apple-style-span" face="Monaco">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #:key3 integer?)</font></div><div><span class="Apple-style-span" style="font-family: Monaco; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;integer?)])</span></div></div><div><br></div><div>instead of:</div><div><br></div><div><div><div><font class="Apple-style-span" face="Monaco">(provide/contract</font></div><div><font class="Apple-style-span" face="Monaco">&nbsp;[some-procedure (->* () (#:key1 integer?</font></div><div><font class="Apple-style-span" face="Monaco">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#:key2 integer?</font></div><div><font class="Apple-style-span" face="Monaco">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#:key3 integer?)</font></div><div><span class="Apple-style-span" style="font-family: Monaco; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;integer?)])</span></div><div><font class="Apple-style-span" face="Monaco"><br></font></div></div></div><div>----- quasiquote when producing HTML output -----</div><div><br></div><div><div><font class="Apple-style-span" face="Monaco">`("Hi, my name is " ,name</font></div><div><font class="Apple-style-span" face="Monaco">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"and I am " ,age "years old.")</font></div><div><br></div><div>would be better as:</div><div><br></div></div><div><div><font class="Apple-style-span" face="Monaco">`("Hi, my name is " ,name</font></div><div><font class="Apple-style-span" face="Monaco">&nbsp;&nbsp;"and I am " ,age "years old.")</font></div><div><br></div></div></div></div></body></html>