[piping within led]

Screen shot of led in a MacOS Terminal window about to pipe some data thru a Unix tool.


It's sort of standing joke with my colleagues that I wrote my own editor. This page is in defense of this venture, and also tells you just a little bit about it.

Archeology

As most of you surely know, "vi" stands for VeryIrritating. How Unix could become so popular with such an editor would make an interesting research topic in psychology. Well, rather than complain, it seemed that it would be better to do something about it. This project was started as an exercise to learn both Unix and C.

led is based mainly on three editors (in order of importance): IBM's PE2 (for PCs - a great editor), XMS's editor, and (could it be otherwise) IBM's XEDIT. It borrows very little from vi (the yank buffer is temporary pending PE2-style marks which never happened).

That was started in 1989. It didn't take long before the new editor could edit itself. The rest is history: led has never stopped growing (eg. around 2000, with a port to Windows over the Win32 API).

Overview

led is a small, simple-to-use, full-screen text editor supporting multiple files, one or two views, piping into and out of the editor, paragraph reflow, a stable sort, hex editing, etc.. It runs on a number of Unix platforms (Linux, Sun, HP, Apollo, DEC, SGI, Xenix, DVIX, AIX, SVR4, Linux, BSD, MacOS X) as well as VAX/VMS and, later, as a full application, on Win9x/NT/2K/XP... Having a single editor on all platforms I use regularly is a very significant advantage (avoids a lot of finger problems).

Except for the Windows version (where it manages its own window) it works only within VT100 terminals and emulations thereof (in particular xterms, MacOS Terminal -- but not most MS telnets). It also ran on DVIX M4020 terminals, but that's pretty irrelevant now.

It uses the VT100 keypad (for general functions) and c-keys (for editing). It has no regular-expression searching, no user-definable keys (although emulators might help here), and processes tabs and RETURNs in an unusual way. On xterm, it will be necessary to provide the keypad mappings. Beta release was summer '89 and it is has evolved ever since as needs dictated.

At its hottest, the WWLUG (world-wide led users group) had as many as 10 members!

Basic philosophy: unconstrained (move cursor anywhere, no jagged cursor moves), and WYSIWYG (strips trailing blanks for example).

Of all its features, I think the most important (as I discovered when I ported led to Windows) is system access from within the editor. It allows to extend the editor as much as desired with the tools of the system. This goes hand-in-hand with the Unix toolbox approach. For example, one can prepare batch files and submit them directly to the shell, pipe command output into the editor (eg. $ ls -lt | led), compare the file in the editor with the current version on disk, do finds, greps, directory lists and manipulate them. On Windows, this works best with a Cygnus (Unix-like) environment.

led is also the only editor I know of that can (in both its Unix, Windows, and the Mac versions) edit Unix, Mac and Windows text files, taking care not only of the different end-of-line conventions, but also of the ISO 8859-1 mappings!

Jul

Editor writing is a passion (which is perhaps not so surprising when you think of the time you spend in this tool!). As a learning exercise in Java (and a very good one), I also worked on a Unicode editor (with support for R2L languages). This got to the point of working (my colleague Fadi actually wrote some Arab with it), but this was never really completed (unfortunately, I had little time, and esp. little need for such an editor -- led already supports the few languages I speak as they are all latin 1).

Epilog

The above text (plus a few minor edits) dates back to the turn of the century. Now retired since 2016, in 2020, I still use led on a daily basis. It's certainly the one piece of software I wrote that I've used the most, and I'm really happy I wrote it. It's been ported to 64 bits, and I now use it in the Terminal environment of MacOS, an environment that is full UTF-8. However, internally, it still works only with 8-bit characters, so it's showing its age! It does have filters that can be used on file input and output to deal with UTF-8 files, but that only works for files that map to ISO 8859-1, so it can't edit text files in most of the world's languages.