flipturn.org - stuff. things. other stuff.
dvorak | pantera | hacks


This editor is an attempt to displace my dependency on XEmacs. My goal is to produce a work-alike based on wxPython and wxSTC (Scintilla), written in and extensible through Python. I love XEmacs, but my basic problem is this: I don't want to keep space in my brain to remember Emacs Lisp. I tend not to write elisp code very much, so when I want to go back and write an enhancement to XEmacs, I have to try to relearn it. (This doesn't even begin to address the fundamental lack of documentation for elisp methods.) Delving into elisp gets less and less appealing as time goes on and my brain gets filled up with other stuff.

If the editor were written in Python, I'd have no problem blasting out the enhancement. Problem is, there are no Python editors that are enough like XEmacs to make me switch. There are some IDEs out there that I like, including SPE and PyPE, but for one reason or another they haven't convinced me to switch. For instance, they all want to constrain me to a single window, and I like the multi-window, multi-tab interface like Firefox or XEmacs itself.

When I talk about XEmacs feel, I mean the usability of the editor itself; I'm not going for any sort of compatibility with elisp or any of the naming conventions of the inner workings of XEmacs. I don't aim to support the multitude of elisp packages out there, especially those not related to editing text like reading email or news or showing phases of the moon or crazy quotes from Zippy.

Well, maybe Zippy should be there. And maybe Psychoanalyze Zippy! But, that's it. No Towers of Hanoi or Tetris or Hypertext Coffee Pot Control Protocol or RFC 1149. At least, not for a while.


Driving requirements:

  • multiple top level windows with tabs
  • multiple views of the same document
  • object oriented "major modes" for editing different types of files
  • buffers may be edited with different major modes simultaneously
  • minor modes to extend the functionality of the major modes
  • plugins
  • minibuffer
  • configurable keybindings with emacs-like multi-key bindings
  • dynamic menubars and toolbars depending on major mode

Other requirements:

  • stuff we get for free using Scintilla:
    • syntax highlighting
    • drag and drop
    • undo and redo
  • IDE features:
    • debugger (integrate with winpdb or Stani's debugger?)
    • refactoring support
    • filesystem browsing

Why not existing editors?

The editor that I'll end up building is really a byproduct of what I'm trying to demonstrate. The point of this project is to see what this whole modern process thingie is all about because I couldn't find any good examples in the public domain. This is going to take a long time, since it's a free-time project, and I wanted to find something that I wouldn't lose interest in. I have continually looked for an XEmacs replacement because of my aversion to elisp, but I've not found it. Maybe it just isn't out there. Only with wxPython and the STC have I ever been this close to trying to create the editor myself.

But, I keep telling myself this editor is really an excuse to create an example of the modern software development process, which utilizes an iterative approach to development. In all my time working at various companies, none of them had a modern process. They were still stuck in the big design up front mode where all the requirements had to be completed before we'd start coding. The problem was that we'd start coding to these rigid requirements and then the requirements would change. Our deadlines wouldn't change, but what we had to deliver just got bigger or different or more complicated.

I intend to show the planning process and lifecycles as I go through the development of peppy. Doing research for papers I had to write in my graduate class showed just how few examples there were of publicly available projects developed using the modern process. Plenty of them may have been designed iteratively, but I couldn't find examples of how they used the process.

I really do like SPE and PyPE quite a bit, and in fact I will probably borrow quite heavily from both of them since they are also based on scintilla. There's going to be a lot of borrowing going on here -- the benefits of open source projects.

An open source project that I tuned into was a Python editor framework set up by Stani (SPE's creator). He created some momentum in early 2006 to combine forces and collaborate, but it seems to have stalled. I was busy with master's degree coursework at the time and couldn't contribute. Now I have a little more time and intend to spend it scratching this itch of mine.

erection pharmacy erection pills new york erection pills california erection pills new york
cialis online cialis over the counter cialis professional online cialis online