I started my programming career on an Amiga500 with an interpreted language called AMOS, a multimedia BASIC clone! It had a nice IDE that supported folding and code-beautifying. Later I switched to a 486-66MHz and started coding Pascal using BorlandPascal7.0. When we started the CryOS operating system project I learned C++ and was using BC31/djgpp. Today I use FreeBSD and VIM. I still havn't found any worthy GUI based editor replacement.
My intent is to develop a worthy GUI editor replacement for the above, so that I can do my jobs efficiently and with pleasure.
It is the shortest description of what I'm trying to achieve. I have 4 ring binders in my book shelves full of ideas which could be useful. So I cannot provide a complete list of thoughts here, instead I will give a reduced list.
Ambitions promote innovation. This helps me to think in new ways. Many projects lacks or has boring visions. Why not aim for something high?
A non-bloated, customizable, well written/intuitive, modular, low resource consuming, highly responsive, plugin based editor. That provide his master with overview of his projects, allows him to restructure the code. When doing extreme programming it supports the observer. Folding, debuging, code insight, diff, i18n ...
I am 100% serious about this.
It does not necessarily mean that the wheel has to be re-invented.
The heart of an editor is its editor-widget, which is responsable for providing a view of a buffer through which you can edit. This seems like a natual place to start applying my ideas.
I chose to write my own editor-widget. I had no internet so I was not aware any of possible projects that I could build upon.
When I got internet I saw: rhide, scintilla, kwrite. They were coded in C++, the only language I do. I could not use them, but I got very inspired and continued working on my editor-widget.
I need to finish the editor-widget before I can proceed. This widget could be combined with a mature editor like: eclipse, anjuta, kde-studio, Free-RIDE. Or I could start from scratch :-) I have lots of ideas for improvement. What to do at that time is uncertain.
I'm right now working on the third incarnation of this project. My first incarnation and experiments were hopeless, in that time I was living in the stoneage. I had for a long time been working on my second incarnation, when I got internet and discovered design patterns, I began refactoring. My main datastructure was inadequate. I realized that a third incarnation was needed. It takes time to consolidate ideas and it requires experiments. This time I hope I'm on the right track.
What differs from previous incarnation is that this version is not focused on the visual output. In the old incarnation I could do syntax-hiliting, folding and other nice things, but editing was not possible! Editing is the primary target for this incarnation, when it works I can easily add those visual features. What I have learned is the importance of havning a rock-solid foundation, before you start building a skyscraper.
Basic editing is working. Markers is being implemented. When it is done the foundation should be ready for more visual extensions.
I have conducted a few experiments, how to do Ruby-extensions in C++ and how to use the QT/Fox/Gtk toolkits. This will hopefully end up with a custom widget that can be used within Ruby.
I'm looking forward to that day where I can start using the editor for development on the editor itself!
I must admit that I'm a code junkie and without anything meaningful to do I get restless. I seriously need a good editor, so I am devoting all my time to work on this project.
I am very interested in hearing from you, what are your opinions on this topic. Do you have a wish? I invite you to contribute? Take a look at the code and suggest improvements. I will not let you down, there is always room for improvement.
It is my duty to contribute to the open source world before I get too old and exits this world. At that time I wish to be proud of myself. Thats my philosophy of life. I hope this project will prove useful for others. Thank you for your time.