Working on the new IDE
So. Creating an IDE. Sounds easy right? Just slap open a form, add some project stuff and bob’s your uncle? Sadly that is not the reality of writing a good IDE. Especially one that should be flexible, adaptable and easy to use.
Take, for example, the relationship between an open project file, a tab, and the editor reserved for an open pascal file. How do you link these 3 entities together in a meaningful way? Also, the IDE should respond fairly quickly, meaning it should be easy for you (or me in this case) to find an open unit, to locate the interface section of an open unit, to insert and modify the sourcecode – well the list of “must have” features grows on you.
Using generics this time I was able to cut through a lot of the old reinvention of the wheel, and in just 3 hours of work the basic project/unit/editor functionality is up and running. And the code is at least 40% faster than my previous product- so the IDE is snappy as hell. And yes! No skins this time 🙂
Another side of the IDE that was lacking earlier – was that of generating units. When you press “new unit”, where should the code come from? Well, I decided that templates was the way to go (just like native delphi does it) and implemented a nice and juicy based system. Took about an hour to setup, but now PASTA (yes that is the codename of the project) can already create a bunch of different projects, unit types and structures – all based on files and keywords. Much faster than my previous product and much more flexible. As a bonus: the user can now create new project types using notepad, which can only be a bonus.
Not much to say here (or not much i want to share is more like it), but let’s just say that pipes and commandline is the way to go. Been playing around with mono C# and Gnu C++ for some time now.
This is the big one, the “meat” on the bones of any good system. Im not going to write much about this part. Let’s just say that this time — i wont let anyone touch the core. It will be abstract from the platform, portable, easy to adapt – no matter if you want to run stuff on iOS, XBox or the desktop. KISS — keep stuff simple.
There are many ways to skin a cat. From the inside or the outside. Playing around with an intermediate bytecode structure, but brute force tend to be more efficient 😉