<br><br><div class="gmail_quote">On Sun, Aug 5, 2012 at 4:03 PM, Michael McNeil Forbes <span dir="ltr">&lt;<a href="mailto:michael.forbes+ipython@gmail.com" target="_blank">michael.forbes+ipython@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 2 Aug 2012, at 5:23 PM, Michael McNeil Forbes wrote:<br>
&lt;some code and instructions to swap enter and shift-enter (included<br>
below)&gt;<br>
<br>
Hi everyone. Please don&#39;t take my &quot;solution&quot; seriously.  I Tricked<br>
myself<br>
into thinking it worked, but it has some problems:<br>
<br>
1) You need to modify files in your ~/.ipython directory on the server<br>
machine.<br>
    (You do not need to modify the server, but I don&#39;t yet see how to<br>
inject js<br>
     code from the client... but I virtually no js experience so maybe<br>
there is a<br>
     way).<br>
2) My solution of negating the shift flag is not a complete solution:<br>
in particular<br>
    after swapping, pressing &quot;enter&quot; will indeed execute the block,<br>
but it will also<br>
    insert a newline (I don&#39;t know how to suppress that yet).<br>
<br>
I probably need to do the swap earlier (in cellmirror maybe?) but in<br>
any case, this<br>
needs more work... Suggestions welcome:-)  I will drop a note if I<br>
make progress<br>
and/or a Pull Request when I get a chance to delve deep into javascript<br>
(won&#39;t happen in the near future though).<br></blockquote><div><br></div><div>Indeed, and someone at SciPy had proposed to sprint on exactly this, though I don&#39;t know what kind of progress they made.  It is *definitely* the right approach, and a giant if/elif tree we have now is really never the way to go.</div>

<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Thanks for the suggestions.  With some tweaks, I think notebook will<br>
be a<br>
killer addition to the python arsenal. (I have yet to play with the<br>
parallel<br>
features but am very excited.)<br>
<br>
Michael.<br>
<div><div class="h5"><br>
&gt; Le 3 août 2012 à 02:23, Michael McNeil Forbes a écrit :<br>
&gt;<br>
&gt;&gt; On 2 Aug 2012, at 12:39 AM, Matthias Bussonnier wrote:<br>
&gt;&gt;&gt; Sorry for the brievty, answer from my phone.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; If you use 0.14 dev. you can overwrite ipython file without touching<br>
&gt;&gt;&gt; the server.<br>
&gt;&gt;&gt; Just add them into .ipython/profile/profile_xxx/<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; This seems to work fine:<br>
&gt;&gt; 1) Install IPython 0.14-dev from github on server.<br>
&gt;&gt; 2) Copy notebook.js and codecell.js to ~/.ipython/profile/<br>
&gt;&gt; profile_xxx/<br>
&gt;&gt; static/js/ from<br>
&gt;&gt;   <a href="https://raw.github.com/ipython/ipython/master/IPython/" target="_blank">https://raw.github.com/ipython/ipython/master/IPython/</a><br>
&gt;&gt;   Note: this profile name must match the name of the profile on the<br>
&gt;&gt; server. This is a<br>
&gt;&gt;   little strange in terms of UI since the name of this profile is<br>
&gt;&gt; not even visible<br>
&gt;<br>
&gt; usually you start your notebook with --profile=whatever<br>
&gt; if you don&#39;t say anything it will use…default<br>
&gt;<br>
&gt;<br>
&gt;&gt;   from the web interface, but probably makes sense from a dev.<br>
&gt;&gt; perspective to localize<br>
&gt;&gt;   the effects.<br>
&gt;&gt; 3) Swap the shift-flag near as follows<br>
&gt;&gt;<br>
&gt;&gt;        if (event.which == key.ENTER) {<br>
&gt;&gt;            // MMF Customization: swap enter and shift-enter<br>
&gt;&gt;            event.shiftKey = !event.shiftKey;<br>
&gt;&gt;        }<br>
&gt;&gt;<br>
&gt;&gt;    Do this near the start of the following function in codecell.js<br>
&gt;&gt;<br>
&gt;&gt;       CodeCell.prototype.handle_codemirror_keyevent = function<br>
&gt;&gt; (editor, event) {<br>
&gt;&gt;<br>
&gt;&gt;    and near the start of the following block in notebook.js<br>
&gt;&gt;<br>
&gt;&gt;       $(document).keydown(function (event) {<br>
&gt;&gt;<br>
&gt;&gt; While I am at it I might add a sequence for joining two adjacent<br>
&gt;&gt; blocks.  Is there<br>
&gt;&gt; a function that will do this simply?<br>
&gt;<br>
&gt; IPython.notebook.merge_cell_above();<br>
&gt; IPython.notebook.merge_cell_below();<br>
&gt;<br>
&gt; is IMHO what you want.<br>
</div></div>Thanks.  Will try.<br>
<div class="im"><br>
&gt; if you ever want to refactor the javascript and<br>
&gt; make something that allows to easily configure the keybindings (dict<br>
&gt; of {key:function}) for example<br>
&gt; we love Pull requests.<br>
<br>
</div>This will require some javascript retooling on my part, so won&#39;t<br>
happen in the near future, but when<br>
I have some time, I will attempt this.  I love github&#39;s code review<br>
feature for PR&#39;s which is a<br>
strong motivation to contribute:-)<br>
<div class="HOEnZb"><div class="h5"><br>
_______________________________________________<br>
IPython-User mailing list<br>
<a href="mailto:IPython-User@scipy.org">IPython-User@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-user" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-user</a><br>
</div></div></blockquote></div><br>