<p dir="ltr">I use balanced parents.  Agree with current annoyance.  Agree with the proposal - simple, effective.</p>
<div class="gmail_quote">On Nov 22, 2012 7:29 PM, &quot;Nadeem Abdul Hamid&quot; &lt;<a href="mailto:nadeem@acm.org">nadeem@acm.org</a>&gt; wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>Hello all,</div><div><br></div><div>I&#39;ve been discussing with Robby a possible improvement of DrRacket&#39;s &quot;automatic parentheses&quot; behavior and would like to get a sense of others&#39; general opinion about this. What follows is a description of my proposal and then some concrete questions.</div>


<div><br></div><div>;;</div><div>The idea is to have DrRacket automatically skip over automatically-inserted closing parens if the user types one while the cursor is right in front of one. (The Eclipse Java IDE does this with various types of braces and parens, and in the past I&#39;ve found this very nice and have observed others (my students) interact well with such a feature.)</div>


<div><br></div><div>A concrete example: suppose you are in the process of typing the expression &quot;(+ <span style="font-family:arial,sans-serif;font-size:13px">4 </span><span style="font-family:arial,sans-serif;font-size:13px">(- 1 2) 3)&quot;. After you type the first opening parentheses and the characters following it up to the &quot;2&quot;, the expression in the editor looks like:</span></div>


<div><span style="font-family:arial,sans-serif;font-size:13px">  (+ 4 (- 1 2|))</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">where the | represents the cursor&#39;s position. Note the two automatically-inserted closing parens that are after the cursor right now. </span><span style="font-family:arial,sans-serif;font-size:13px">With the current implementation, </span><span style="font-family:arial,sans-serif;font-size:13px">you have to then use the right arrow key to make the cursor skip past </span><span style="font-family:arial,sans-serif;font-size:13px">the first auto-inserted &quot;)&quot; and then you can type &quot;3&quot;. </span><span style="font-family:arial,sans-serif;font-size:13px">However, that really </span><span style="font-family:arial,sans-serif;font-size:13px">disrupts the typing process because even if you don&#39;t</span><span style="font-family:arial,sans-serif;font-size:13px"> </span><span style="font-family:arial,sans-serif;font-size:13px">type a ) as a habit and then realize you have to delete the extra one, you still </span><span style="font-family:arial,sans-serif;font-size:13px">have to lift and move your finger to the arrow keys area of the </span><span style="font-family:arial,sans-serif;font-size:13px">keyboard or type some other key combination to skip the cursor forward.</span></div>


<div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">My proposal would be to have it so that if you type &quot;)&quot; in the editor state above, it becomes:</span></div>


<div><span style="font-size:13px;font-family:arial,sans-serif">  (+ 4 (- 1 2)|)</span><br style="font-size:13px;font-family:arial,sans-serif"></div><div><span style="font-size:13px;font-family:arial,sans-serif">and now you continue typing a space and the 3. Of course, the same thing should apply for other types of parens - ( [ { etc.</span></div>


<div><span style="font-size:13px;font-family:arial,sans-serif"><br></span></div><div><span style="font-size:13px;font-family:arial,sans-serif">I don&#39;t know about others, but I actually get annoyed with the curent automatic parens feature to the point of disabling it. </span><span style="font-family:arial,sans-serif;font-size:13px">That is, I like the auto-parens feature not because it relieves me from having to type closing parentheses - I don&#39;t mind that, and I actually tend to do that automatically as I&#39;m typing expressions; but the benefit is that it always keeps parens balanced while I&#39;m still in the middle of typing an expression. However, with the current behavior, it tends to make me type extra closing parentheses and have to go back and delete parens to balance things up again.</span></div>


<div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">;;</span></div><div><span style="font-family:arial,sans-serif;font-size:13px">So, the questions:</span></div>


<div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">1. Do you use the automatic parentheses feature of DrRacket?</span></div><div>


<span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">2a. If yes, does the proposal above resonate well with you? </span></div><div><span style="font-family:arial,sans-serif;font-size:13px">2b. And, do you think this &quot;smart skipping&quot; of auto-inserted closing parentheses should become the intrinsic behavior of the automatic parentheses mode, or should it be a separate preference? (i.e. have two preference options - the current automatic parentheses one and then a subordinate option that enables/disables this skipping over of auto-inserted closing parentheses as the user types them)</span></div>


<div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">3. If your answer to #1 is &quot;No&quot;, why not? (Is it because you find its current behavior awkward in some way?)</span></div>


<div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">Thanks,</span></div><div><span style="font-family:arial,sans-serif;font-size:13px"><br>


</span></div><div><span style="font-family:arial,sans-serif;font-size:13px">nadeem</span></div><div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div>
<br>_________________________<br>
  Racket Developers list:<br>
  <a href="http://lists.racket-lang.org/dev" target="_blank">http://lists.racket-lang.org/dev</a><br>
<br></blockquote></div>