<div class="gmail_quote">On Fri, Sep 21, 2012 at 9:31 AM, Matthias BUSSONNIER wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">
<div><br><div>Yes, it is hard coded, not related to the qtconsole size. </div><div>You would have to update the width of the completion_widget when resizing windows for the number of columns.</div><div>This should not be too hard, just to bind the correct signal.</div>
<div>The number of rows could just be made a Trait to be configurable[*]. </div><div><br></div><div>One of the reason to keep a &quot;low&quot; number of column is that with ultra wide qtconsole navigation become a pain. </div>
<div>For example, with 16 completions, with 4 by 4 any item is at Manhattan distance of less than 4 than any other, instead of 8 for 1x16</div><div>But I guess the current behavior could be improved for sure.</div></div></div>
</blockquote><div><br>I looked in &quot;completion_widget.py&quot; but can&#39;t see anything that I can change.<br>I expected that maybe number of rows (which is now 8) can be tweaked, as trying with columns sounds complicated.<br>
<br><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><div>I assure you that is would not be as you more easily see the differences when items are order vertically.</div>
<div><br></div><div><br></div><div>=====================================</div><div>api.getString                   api.getStrings</div><div>=====================================</div><div><br></div><div>vs</div><div>=====================================</div>
<div>api.getString</div><div>api.getStrings</div><div>=====================================</div><div><br></div><div>especially for non native english readers. </div><div><br></div><div>It would have been much more easier on implementation side to do so, but common shell like bash or zsh</div>
<div>came across the same problem and decided to do it by column so I think this is the good choice. </div></div></div></blockquote><div><br>If auto-complete functions were sorted alphabetically by row we would have seen full 3 columns with 24 functions, while currently we see just 2 items in 3rd column (in posted qtconsole example). For me it&#39;s easier to read alphabetically sorted table by row in this case when table is clipped<br>
 <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><div class="im"><blockquote type="cite">as that&#39;s how cursor TAB interaction has been made.<br>
</blockquote><div><br></div></div>There is no good answer with how tab works. </div><div>The behavior I came up with is quite tricky</div><div><br></div><div><div>you might have seen that when going over the</div><div>(1) edge on right it goes to next line, </div>
<div>(2) at the end of a column with arrow it goes to next column.</div></div><div><br></div><div>The problem here, is that when you have few completion (one line).</div><div>You obviously want tab to cycle through your completions. </div>
<div><br></div><div>So either you have it go horizontally, or vertically. </div><div>Well obviously if vertical you want (2) otherwise you are stuck with the current completion when pressing tab.</div><div><br></div><div>
But this come with 2 drawbacks. </div><div>  * First is that sometime tab make the cursor go horizontally (one completion line) , sometime vertically (several line completion), </div><div>              and trust me your brain get confused and your visual memory hurts a lot. </div>
<div>  * with several line completion (lets say 30) keeping tab press make the completion scroll, so it&#39;s unreadable</div><div><br></div><div>But his is what zsh does, and it drives (at least me) crazy.</div><div><br>
</div><div>Horizontal does indeed not cycle alphabetically, but is it really useful when you look for something ?</div><div>You can still use the arrow keys if you want to move vertically.</div><div><br></div><div>Writing this was much more complicated to do than I first thought, but I&#39;ll be happy if you find a better solution than mine. </div>
</div></blockquote><div><br>I get you. I don&#39;t speak English too ;)<br>It&#39;s tricky when you think more about it. If I look for a function I can&#39;t remember it&#39;s name I usually &quot;know/suspect&quot; the beginning and using TAB to move through available function which aren&#39;t alphabetically sorted is unintuitive for sure. But hey, I didn&#39;t know that arrow keys work, so that&#39;s good thing to know ;)<br>
</div><div><br><br> If you wan&#39;t to give a shot a making things configurable, or write your on completer-gui, take a look at </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word"><div>ipython/IPython/frontend/qt/console/completion_html.py</div><div>ipython/IPython/frontend/qt/console/console_widget.py  :  L96</div><div><div class="im"><div><br></div></div></div></div>
</blockquote><div><br>Yet another tip. That&#39;s great. I also didn&#39;t know about it.<br>So plain mode is just like auto-completion in terminal console, while there is also drop-down control available!<br><br>Thanks again Matthias for your always insightful support<br>
<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><div class="im"><div></div><div><br></div><blockquote type="cite">
Anyhow, can I configure qtconsole to roll more candidates on auto-completion?
</blockquote></div><div>Well, for now you will have to digg in the code a little.</div><div>but keep us informed or send a PR if you get something, or need more pointers. </div><span class="HOEnZb"><font color="#888888"><div>
-- </div><div>Matthias</div></font></span></div></div></blockquote><div> </div><div>Case closed<br><br>Cheers :)<br> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word"><div><span class="HOEnZb"><font color="#888888"><div></div><br><div><br></div><div>[*] I&#39;m not sure it will be strait forward to make it configurable as it inherit from QWidget, and you will have to set the metaclass to something like  MetaQObjectHasTraits</div>
</font></span><br></div></div></blockquote></div>