<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. 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> - add regular expression search and replace;</div><div> - make pressing TAB in the "find" or "replace" boxes move you to the next box (rather than inserting a tab character);</div><div> - 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> (or add a vertical tab list feature that can list more stuff);</div><div> - make every entry on the "indenting" preference pane a regular expression (make it easier to add rules);</div><div> (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). 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"> (for/fold ([accum null])</font><div><font class="Apple-style-span" face="Monaco"> ([i (in-range 1 10)])</font></div><div><font class="Apple-style-span" face="Monaco"> (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"> ([i (in-range 1 10)])</font></div><div><font class="Apple-style-span" face="Monaco"> (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"> [some-procedure (->* () (#:key1 integer?</font></div><div><font class="Apple-style-span" face="Monaco"> #:key2 integer?</font></div><div><font class="Apple-style-span" face="Monaco"> #:key3 integer?)</font></div><div><span class="Apple-style-span" style="font-family: Monaco; "> 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"> [some-procedure (->* () (#:key1 integer?</font></div><div><font class="Apple-style-span" face="Monaco"> #:key2 integer?</font></div><div><font class="Apple-style-span" face="Monaco"> #:key3 integer?)</font></div><div><span class="Apple-style-span" style="font-family: Monaco; "> 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"> "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"> "and I am " ,age "years old.")</font></div><div><br></div></div></div></div></body></html>