It works best with the plumber, which is to pattern matching as file name extensions are many file browsers. Plumb a uri and it opens the browser, unless you added a more specific rule to follow a different action.<p><a href="http://swtch.com/plan9port/man/man4/plumber.html" rel="nofollow">http://swtch.com/plan9port/man/man4/plumber.html</a><p>For instance in Plan 9 I mount the file system of my webserver (across the internet), tail -f /n/remote/var/log/httpd/error_log.<p>An example error would be<p>[Thu Nov 26 15:28:15 2009] [error] PHP Warning:  Invalid argument supplied for foreach() in /staging/php/restricted.class on line 286<p>For which I have a plumbing rule<p><pre><code>    type is text
    data matches '(/staging/[^ ]+) on line ([0-9]+)?'
    data set	/n/remote/var/www/$1 
    attr add	addr=$2
    plumb to edit
    plumb client $editor
</code></pre>
My apache is chrooted so I set the un-chrooted path with relation to my plan 9 (the remote server is mounted at /n/remote)<p>So in Acme I plumb the error message and Acme opens the file (if it isn't open) and scrolls to the appropriate line.<p>Ok this is nothing amazing in and of itself, other editors can do similar things - EditPlus on Windows can scan error messages) but combining simple things like this makes a bigger system.<p>Typing your own menus is also a great feature. You can whip up an awk script and apply it to selected text.<p>Here's a little one<p><a href="http://plan9.bell-labs.com/sources/contrib/maht/rc/exe" rel="nofollow">http://plan9.bell-labs.com/sources/contrib/maht/rc/exe</a><p>If I type 'exe doit' in the current window, select the text and middle click it creates the file (in the pwd of that window) , chmods it, adds the hash bang and opens it in new window.<p>Again, not amazing on it's own but one builds up such things over time and there is no restriction on what language to use, I even have a few that ssh into a remote server and run them there.<p>There is no best editor, but Acme is the best for me.<p>Oh and if you middle click Font it switches between the two specified fonts (sans and mono by default).