<?xml version='1.0' encoding='utf-8' ?>
<rss version='2.0' xmlns:dc='http://purl.org/dc/elements/1.1/'>
  <channel>
    <title>Wolfmans Howlings: Epsilon Programmers Editor</title>
    <link>http://blog.wolfman.com/articles/2006/9/30/epsilon-programmers-editor</link>
    <description>A programmers Blog about Ruby, Rails and a few other issue</description>
    <language>en-us</language>
    <ttl>40</ttl>
    <item>
      <title>Epsilon Programmers Editor</title>
      <description>
        &lt;p&gt;I use &lt;a href=&quot;http://www.lugaru.com&quot;&gt;Lugarus&lt;/a&gt; excellent Epsilon Editor for most of my
        programming editing needs, on Win32 and Linux.&lt;/p&gt;
        
        &lt;p&gt;(An exception is for Java programming where I use Eclipse).&lt;/p&gt;
        
        &lt;p&gt;I have spent some time writing extensions to Epsilon to handle Ruby
        and Rails programming, inspired mostly by Textmate on Mac/OSX, and
        Eclipse for Java. I tried using the Eclipse for Ruby, but I was very
        disappointed, also the developers have made some design decisions I
        can't live with (like no auto indent after opening braces etc).&lt;/p&gt;
        
        &lt;p&gt;I have tried Komodo Pro as described 
        &lt;a href=&quot;http://blog.wolfman.com/articles/2006/08/09/experiences-with-komodo-pro-and-ruby&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
        
        &lt;p&gt;OK the Epsilon editor is not free, it costs about $250 ($99 for an
        upgrade) which includes all platforms, and the license lets you use it
        on your Laptop and Desktop, in fact you can use any version of Epsilon
        on up to four computers you own.  The result is a professional, solid,
        stable Editor, that is what you get when you pay for something. (This
        editor has been around at least 20 years, which is when I started
        using it on DOS!). In addition to running as an X Windows program and
        a console program on windows and Linux it also runs on Mac OS X,
        FreeBSD, OS/2 and DOS.&lt;/p&gt;
        
        &lt;p&gt;The Editor is an Emacs clone out of the box, it also has CUA and Brief
        emulations (well key bindings). The best feature IMHO is the fact you
        get most of the source code for the editor which is written in its own
        c-like language called eel. This makes it much easier to write
        extensions and customizations for the editor if you are familiar with
        C. (I never could wrap my brain around Lisp which is why I don't use
        GNU Emacs). It also runs in console mode as well as windows mode,
        which is useful if you have to login via ssh etc to edit files.&lt;/p&gt;
        
        &lt;p&gt;Seeing how every programmer has their own ideas of what an editor
        should do and its look and feel, easy customization is crucial.&lt;/p&gt;
        
        &lt;p&gt;The extensions I have written for Epsilon are all freely available, as
        are extensions written by other users. (Various language modes,
        template extensions, SCM extensions etc).&lt;/p&gt;
        
        &lt;p&gt;In the past I wrote a java help extension that tried to do context
        sensitive help, this worked OK but not as well as Eclipse.&lt;/p&gt;
        
        &lt;p&gt;Recently I wrote a bunch of extensions for Ruby and Rails, thanks to
        the ruby mode extension written by Timothy Byrd (available on Lugaru's
        download page) I was able to get syntax highlighting and formatting
        already done. I added some simple help extensions, a snippet facility
        (ala Textmate), and some convenience actions for Rails development. I
        also extended Timothy's ruby mode extension with something that
        completes the &lt;code&gt;#{}&lt;/code&gt; when # is typed in a string. (I first saw this in
        Textmate and hated it, but it grew on me, until I had to have it on
        Linux). I have avoided the temptation to also do the automatic closing
        of &lt;code&gt;{ ( &quot;&lt;/code&gt; etc that you find in Textmate because I still hate those, but
        they are easy to do using the same technique I used for &lt;code&gt;#{}&lt;/code&gt;.&lt;/p&gt;
        
        &lt;p&gt;I've also added the ability to run the current buffer through the ruby
        interpreter and show the results in a pop up window, also to run a
        specific unit test if the file is a Ruby test case.&lt;/p&gt;
        
        &lt;p&gt;The key strokes any command uses is easily modified, as well as the
        colors used for syntax highlighting.&lt;/p&gt;
        
        &lt;p&gt;The version of ruby_mode.e on Lugarus site does not currently have the
        latest changes I have made, so it can be downloaded from the link below...&lt;/p&gt;
        
        &lt;p&gt;The other extensions can also be downloaded from my site...&lt;/p&gt;
        
        &lt;ul&gt;
        &lt;li&gt;&lt;a href=&quot;http://blog.wolfman.com/files/snippets.tar.gz&quot;&gt;snippets&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;http://blog.wolfman.com/files/rubyhelp1.e&quot;&gt;Ruby Help&lt;/a&gt; &lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;http://blog.wolfman.com/files/rename_in_place.e&quot;&gt;Rename in Place&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;http://blog.wolfman.com/files/ruby_mode1.e&quot;&gt;Ruby Mode (latest)&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
        
        &lt;p&gt;These can be installed by copying them to your ~/.epsilon folder, and
        adding a load line to your einit.ecm file, see the comments in the
        source file.  The snippets should be un-tarred into the ~/.epsilon
        folder. The README explains how to load them.&lt;/p&gt;
        
        &lt;p&gt;eg add this to your einit.ecm file:&lt;/p&gt;
        
        &lt;pre&gt;&lt;code&gt;(load-eel-from-path &quot;ruby_mode.e&quot; 2)
        (load-eel-from-path &quot;rubyhelp.e&quot; 2)
        (load-eel-from-path &quot;snippets.e&quot; 2)
        (load-eel-from-path &quot;rename_in_place.e&quot; 2)
        &lt;/code&gt;&lt;/pre&gt;
        
        &lt;p&gt;Also here are the color codes I use for ruby_mode, these are designed
        by Timothy: (Change the window-black to whatever color set you are using)&lt;/p&gt;
        
        &lt;pre&gt;&lt;code&gt;&amp;amp;window-black color class for ruby-brace: [0x725CEB on 0x0]
        &amp;amp;window-black color class for ruby-class: [0xD9D240 on 0x0]
        &amp;amp;window-black color class for ruby-comment: [0xC0C0C0 on 0x0]
        &amp;amp;window-black color class for ruby-global: [0xFFB737 on 0x0]
        &amp;amp;window-black color class for ruby-keyword: [0xFF8000 on 0x0]
        &amp;amp;window-black color class for ruby-number: [0xFF9090 on 0x0]
        &amp;amp;window-black color class for ruby-punctuation: yellow on black
        &amp;amp;window-black color class for ruby-regexp: [0x007FFF on 0x0]
        &amp;amp;window-black color class for ruby-shell-cmd: [0x8FFF2F on 0x0]
        &amp;amp;window-black color class for ruby-shell-subst: [0x8FFF8F on 0x0]
        &amp;amp;window-black color class for ruby-str-subst: [0xFFC0C8 on 0x0]
        &amp;amp;window-black color class for ruby-string: cyan on black
        &amp;amp;window-black color class for ruby-perl-var: red on black
        &lt;/code&gt;&lt;/pre&gt;
        
        &lt;p&gt;Although you can browse for files that epsilon has currently open and
        switch between these buffers, the method is fairly crude by todays
        standards of tabbed windows etc, so I wrote a little graphical helper
        called
        &lt;a href=&quot;http://blog.wolfman.com/files/project_browser.rb&quot;&gt;project_browser.rb&lt;/a&gt;
        that uses the fox window toolkit. It just shows a tree of the
        directory it was given on the command line, and if you click on any of
        the files they open in the epsilon window. This is a lot like the
        project browser windows you find in Textmate, Eclipse and others.  You
        need to install fox version 1.4 and the fox14 gem too to use this.  It
        also allows you to exclude files and directories from display in the
        tree, by putting a YAML file called &lt;code&gt;.proj_exclude.yaml&lt;/code&gt; in the
        project directory, I'll document this further if there is any interest
        in it (Leave a comment if you are interested). It allows multiple
        project directories to be open and shows them in tabs at the top. I'm
        also working on integrating subversion into it. It could also be
        adapted to work with virtually any editor that allows files to be sent
        to the editor by a separate process.&lt;/p&gt;
        
        &lt;p&gt;&lt;img src=&quot;/files/project_browser1.png&quot; alt=&quot;project browser&quot; title=&quot;Project Browser&quot;/&gt;&lt;/p&gt;
        
        &lt;p&gt;&lt;a href=&quot;http://technorati.com/tag/epsilon+editor&quot; rel=&quot;tag&quot;&gt;&lt;/a&gt;
        &lt;a href=&quot;http://technorati.com/tag/programming+editor&quot; rel=&quot;tag&quot;&gt;&lt;/a&gt;
        &lt;a href=&quot;http://technorati.com/tag/project+browser&quot; rel=&quot;tag&quot;&gt;&lt;/a&gt;&lt;/p&gt;
      </description>
      <author>Jim Morris</author>
      <pubDate>Sat, 30 Sep 2006 17:20:15 -0700</pubDate>
      <link>http://blog.wolfman.com/articles/2006/9/30/epsilon-programmers-editor</link>
      <guid isPermaLink='false'>urn:uuid:f1232cb6-f81f-4587-9300-46bc0b741fc7</guid>
    </item>
  </channel>
</rss>
