The window above implements a version of Ecce similar to the version that was used on the PDP9/15 systems in the late 70's. This demo implementation is written in Javascript and is here just to let you try a few commands and get a feel for the syntax. The C version which can be downloaded at this site has been extended beyond the version above.A brief introduction.
It is quite easy to learn how to use ECCE - half a dozen commands can get you started, and the rest can be learned as you go along. Lets look at some examples:p Print the current line m Move down a line g Get a new line k Kill the current line'Move' is obvious... 'Get' gives you a ':' prompt, and you type a line of text at it. When you press return, that line is inserted in your file. 'Kill' deletes the entire current line. Two more concepts are needed and you will be able to edit any file with these commands: firstly, if you put a number after a command, the command will be executed that number of times, e.g.p23 Print the next 23 lines m10 Move down ten lines g5 Make space for and accept 5 new lines of textSecondly, any command which can sensibly be done in reverse (such as Move) will do so if invoked with a '-', as in:m-10 Move back up 10 linesThese are the simplest commands of ECCE, and let you get started editing a file. Lots of editors look like this, and there is nothing really special here. Here are a few others which are self-explanatory and the sort of thing you will be used to in your own editor.i/text/ Insert a text string here in the line. f/text/ Find the quoted text. r Move Right one character on the current line l ditto Left e Erase one character on this lineSimilarly, all these can take repeat counts where appropriate:f/text/4 Find the 4th occurance of "text" r40 Move Right 40 charactersAnd can be strung together quite happily:m23 f/text/ p3Where ECCE comes in to its own is in its more advanced features:Failures, Conditionals, and Repeat groups.
Any of the commands above can fail - for instance, if you try to print 25 lines, and you are only ten lines from the end of the file, then the print command will fail with an error after those ten lines have been printed. The smart bit about ECCE is that it allows you to test for such a failure, and if one has happened, let you do something else instead. The epitome of this condition testing is the Verify command:v/text/ Verify that the quoted text is at the current point in the line.This command does nothing at all if the text is present, and does nothing but issue a failure message if it is not! However, rather than print a failure message and abandon the command, we can test whether the command worked and do something else instead.v/text 1/ i/First text: /, i/Not first text: /Finally the above can be executed multiple times by enclosing any command in brackets, such as:r0 (l v/ / e)*which will remove all trailing spaces from a line, andm-* (r0 (l v/ /e)* m, m)*will remove all trailing spaces from all lines in the file. Experienced ECCE users will have a repertoire of these combined sequences which they can routinely used to perform complex edits. For instance the following will align all "//" comments in a C++ file to column 50:(f.//. l50m, l0f1.//. i/ /50l0r50(v/ /e)0 m, m)0Once you get to the stage that you understand the line above on first reading, you can award yourself an Ecce Certificate of Merit, and I have nothing more I can teach you!Ecce was written by Hamish Dewar
This document was written by Graham Toal