ISLE, the Infinite-Stage List Editor
A text editor with a very simple twist...
The most basic text editor, anyone will tell you, is cat > filename. After that is, of course, ed. cat stores keyboard input directly, and ed is nice enough to let you tell it to go back a line, or to replace something. Telerin has a cat > filename-like editor, called ped; there's pretty much no reason to ever use it. Some time in mid-2005 I was starting to get the idea that Telerin's viability as a real operating environment was mostly limited by my poor decisions in writing software for it. There were no real utilities to work on code or text with, only various little tools (like cfg_edit, for editing the native database format) that had been created in the process of writing other programs (mostly MUE.) Being raised in an area of nice, fancy video editors, (and goodness gracious, GUIs) though, I wasn't exactly about to find reimplementing ed to be very appealing.
ISLE wouldn't be very important (and not deserving of a page here) if it weren't for its progeny, WinISLE. But let's go over some things.
First, the prospect of re-writing a file every time you want to change something in it is tedious. I didn't want to reimplement ed at the time because I wasn't confident in my ability to write efficient algorithms for selecting a line based on its number that wouldn't screw things up (I eventually did, of course—right into the interpreter, for sophia.) So instead of cloning its venerable interface, I took the inclusion approach: most documents have a tree-like structure, so let's make a tree of variables, save in an intermediary format, and also have a 'render' function that put it all together into a nice, normal text document. So dustal was born: the dual-stage list editor. Documents had three components: the root string, sequences, and paragraphs. Sequences could contain references (either [s:something] or [t:something]) that would be recursed into when they were processed, allowing the file to be assembled. These were the two 'stages.' Paragraphs were text-only and were not parsed for embedded codes. The original expectation was that only the root string would reference sequences, and loops would be avoided this way. I realised that recursion was more useful than dangerous, however, and adjusted things appropriately, renaming the program to infinite-stage list editor (ISLE), and a fairly useful utility was born.
This is probably extremely boring to any potential reader, but in short the use of it is to understand what kind of programs can be written with a tiny toolset, and how they can be made more useful by taking advantage of unusual paradigms like transclusion. The ISLE source is include in DHA0 images, in :prg\ecs\isle.pk.
Anyway, you'll probably be more interested in one of my other editors—
- WinISLE, the successor to ISLE, which uses Leaflet and allows extensive scripting. For Windows.
- Sophia, a vaguely vi-like screen editor for Telerin that, unlike ISLE, saw general use.
- Sappho, a pass3-based Emacs-like editor, also for Windows, which is far more interesting than ISLE in most regards.