<div dir="ltr"><div class="gmail_default" style="font-size:small;color:rgb(0,0,0)"><span style="font-family:verdana,sans-serif">The Nice Editor (also known as </span><font face="monospace, monospace">ne</font><font face="verdana, sans-serif">) is a user-friendly alternative to Emacs and Vim, hailed by <i>Linux Voice</i> as "the third best editor for Linux". It's simple and fast, and feels really modern, like Sublime, not like nano.</font> <font face="verdana, sans-serif">I love it, and use it</font><font face="verdana, sans-serif"> with IPython, so recently asked about adding a syntax highlighter for editing IPython blocks and </font><font face="monospace, monospace">ipy</font><font face="verdana, sans-serif"> files. The lead developer, Sebastiano Vigna (vigna), was super helpful, and implemented it.</font></div><div class="gmail_default" style="font-size:small;color:rgb(0,0,0)"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default" style="font-size:small;color:rgb(0,0,0)"><font face="verdana, sans-serif">With IPython commands, you can highlight the bang or percent character one colour and the actual command a different colour, and it works with </font><font face="monospace, monospace">=!</font><font face="verdana, sans-serif"> statements (and is not confused by Python's modulo and not-equals operators). </font><font face="verdana, sans-serif">Nice could potentially highlight the commands as shell syntax</font><font face="verdana, sans-serif">, but the simplicity of the current solution is <i>nice</i>. It looks like this:</font></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:rgb(0,0,0)"><p style="margin:0px;font-size:14px;line-height:normal;font-family:'fira code';color:rgb(255,97,94);background-color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">@line_magic</span></p>
<p style="margin:0px;font-size:14px;line-height:normal;font-family:'fira code';color:rgb(204,204,204);background-color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(255,234,231)"><b>def </b></span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(98,109,255)"><b>appserver</b></span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(247,195,136)">(args):</span></p>
<p style="margin:0px;font-size:14px;line-height:normal;font-family:'fira code';color:rgb(247,195,136);background-color:rgb(0,0,0);min-height:17px"><span style="font-variant-ligatures:no-common-ligatures"></span><br></p>
<p style="margin:0px;font-size:14px;line-height:normal;font-family:'fira code';color:rgb(247,195,136);background-color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">    path, port = server_argparse(args)</span></p>
<p style="margin:0px;font-size:14px;line-height:normal;font-family:'fira code';color:rgb(255,60,196);background-color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(247,195,136)">    </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(255,60,251)"><b>%</b></span><span style="font-variant-ligatures:no-common-ligatures"> dev_appserverpy $path --port $port</span></p>
<p style="margin:0px;font-size:14px;line-height:normal;font-family:'fira code';color:rgb(247,195,136);background-color:rgb(0,0,0);min-height:17px"><br><span style="font-variant-ligatures:no-common-ligatures"></span></p>
<p style="margin:0px;font-size:14px;line-height:normal;font-family:'fira code';color:rgb(255,97,94);background-color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">@line_magic</span></p>
<p style="margin:0px;font-size:14px;line-height:normal;font-family:'fira code';color:rgb(98,109,255);background-color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(255,234,231)"><b>def </b></span><span style="font-variant-ligatures:no-common-ligatures"><b>sonicboom</b></span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(247,195,136)">(port):</span></p>
<p style="margin:0px;font-size:14px;line-height:normal;font-family:'fira code';color:rgb(247,195,136);background-color:rgb(0,0,0);min-height:17px"><span style="font-variant-ligatures:no-common-ligatures"></span><br></p>
<p style="margin:0px;font-size:14px;line-height:normal;font-family:'fira code';color:rgb(247,195,136);background-color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(255,234,231)"><b>def </b></span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(98,109,255)"><b>kill</b></span><span style="font-variant-ligatures:no-common-ligatures">(process):</span></p>
<p style="margin:0px;font-size:14px;line-height:normal;font-family:'fira code';color:rgb(247,195,136);background-color:rgb(0,0,0);min-height:17px"><span style="font-variant-ligatures:no-common-ligatures"></span><br></p>
<p style="margin:0px;font-size:14px;line-height:normal;font-family:'fira code';color:rgb(247,195,136);background-color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">        id = process.split()[</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(255,60,196)">1</span><span style="font-variant-ligatures:no-common-ligatures">]</span></p>
<p style="margin:0px;font-size:14px;line-height:normal;font-family:'fira code';color:rgb(255,60,196);background-color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(247,195,136)">        </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(255,60,251)"><b>!</b></span><span style="font-variant-ligatures:no-common-ligatures"> kill -9 $id</span></p>
<p style="margin:0px;font-size:14px;line-height:normal;font-family:'fira code';color:rgb(247,195,136);background-color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">        </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(255,234,231)"><b>return</b></span><span style="font-variant-ligatures:no-common-ligatures"> int(id)</span></p>
<p style="margin:0px;font-size:14px;line-height:normal;font-family:'fira code';color:rgb(247,195,136);background-color:rgb(0,0,0);min-height:17px"><span style="font-variant-ligatures:no-common-ligatures"></span><br></p>
<p style="margin:0px;font-size:14px;line-height:normal;font-family:'fira code';color:rgb(255,60,196);background-color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(247,195,136)">    processes =</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(255,60,251)"><b>!</b></span><span style="font-variant-ligatures:no-common-ligatures"> lsof -i tcp:$port</span></p>
<p style="margin:0px;font-size:14px;line-height:normal;font-family:'fira code';color:rgb(247,195,136);background-color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">    graveyard = [ kill(process) </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(255,234,231)"><b>for</b></span><span style="font-variant-ligatures:no-common-ligatures"> process </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(255,234,231)"><b>in</b></span><span style="font-variant-ligatures:no-common-ligatures"> processes </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(255,234,231)"><b>if</b></span><span style="font-variant-ligatures:no-common-ligatures"> </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(49,200,92)">"(LISTEN)"</span><span style="font-variant-ligatures:no-common-ligatures"> </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(255,234,231)"><b>in</b></span><span style="font-variant-ligatures:no-common-ligatures"> process ]</span></p>
<p style="margin:0px;font-size:14px;line-height:normal;font-family:'fira code';color:rgb(247,195,136);background-color:rgb(0,0,0)"><br></p><div><span style="font-variant-ligatures:no-common-ligatures"><br></span></div><div><span style="font-variant-ligatures:no-common-ligatures"><br></span></div><div><span style="font-variant-ligatures:no-common-ligatures">If you are interested in using this at the moment, the file you need is here (as a gist):</span></div><div><span style="font-variant-ligatures:no-common-ligatures"><br></span></div><div><span style="font-variant-ligatures:no-common-ligatures"><a href="https://gist.github.com/carlsmith/fb451f9a8f5a6e699e3eaeda40d3918a">https://gist.github.com/carlsmith/fb451f9a8f5a6e699e3eaeda40d3918a</a><br></span></div><div><span style="font-variant-ligatures:no-common-ligatures"><br></span></div><div>JOE (Joe's Own Editor) uses the same syntax highlighting definitions, so the file will work with that editor too.</div><div><span style="font-variant-ligatures:no-common-ligatures"><br></span></div><div><span style="font-variant-ligatures:no-common-ligatures">There are links to HTML and PDF versions of the Nice Editor docs at </span><a href="http://ne.di.unimi.it/">http://ne.di.unimi.it</a> .</div></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:rgb(0,0,0)">Best,</div><div><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><span style="color:rgb(115,115,115);font-style:italic;line-height:18px"><font size="1" face="monospace, monospace">-- Carl Smith</font></span><br></div></div><div><span style="color:rgb(115,115,115);font-style:italic;line-height:18px"><font size="1" face="monospace, monospace"><a href="mailto:carl.input@gmail.com" target="_blank">carl.input@gmail.com</a></font></span></div></div></div></div></div></div>
<div><br></div><div><br></div></div>