1192914SedCopyright (c) 2009, Hugh Mahon 2192914SedAll rights reserved. 3192830Sed 4192914SedRedistribution and use in source and binary forms, with or without 5192914Sedmodification, are permitted provided that the following conditions 6192914Sedare met: 7192830Sed 8192914Sed * Redistributions of source code must retain the above copyright 9192914Sed notice, this list of conditions and the following disclaimer. 10192914Sed * Redistributions in binary form must reproduce the above 11192914Sed copyright notice, this list of conditions and the following 12192914Sed disclaimer in the documentation and/or other materials provided 13192914Sed with the distribution. 14192830Sed 15192914SedTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 16192914Sed"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 17192914SedLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 18192914SedFOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 19192914SedCOPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 20192914SedINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 21192914SedBUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22192914SedLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 23192914SedCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24192914SedLIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 25192914SedANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26192914SedPOSSIBILITY OF SUCH DAMAGE. 27192830Sed 28192830Sed 29192830SedThe editor 'ee' (easy editor) is intended to be a simple, easy to use 30192830Sedterminal-based screen oriented editor that requires no instruction to 31192830Seduse. Its primary use would be for people who are new to computers, or who 32192830Seduse computers only for things like e-mail. 33192830Sed 34192830Sedee's simplified interface is highlighted by the use of pop-up menus which 35192830Sedmake it possible for users to carry out tasks without the need to 36192830Sedremember commands. An information window at the top of the screen shows 37192830Sedthe user the operations available with control-keys. 38192830Sed 39192830Sedee allows users to use full eight-bit characters. If the host system has 40192830Sedthe capabilities, ee can use message catalogs, which would allow users to 41192830Sedtranslate the message catalog into other languages which use eight-bit 42192830Sedcharacters. See the file ee.i18n.guide for more details. 43192830Sed 44192830Sedee relies on the virtual memory abilities of the platform it is running on 45192830Sedand does not have its own memory management capabilities. 46192830Sed 47192830SedI am releasing ee because I hate to see new users and non-computer types 48192830Sedget frustrated by vi, and would like to see more intuitive interfaces for 49192830Sedbasic tools (both character-based and graphical) become more pervasive. 50192830SedTerminal capabilities and communication speeds have evolved considerably 51192830Sedsince the time in which vi's interface was created, allowing much more 52192830Sedintuitive interfaces to be used. Since character-based I/O won't be 53192830Sedcompletely replaced by graphical user interfaces for at least a few more 54192830Sedyears, I'd like to do what I can to make using computers with less 55192830Sedglamorous interfaces as easy to use as possible. If terminal interfaces 56192830Sedare still used in ten years, I hope neophytes won't still be stuck with 57192914Sedonly vi. 58192830Sed 59192830SedFor a text editor to be easy to use requires a certain set of abilities. In 60192830Sedorder for ee to work, a terminal must have the ability to position the cursor 61192830Sedon the screen, and should have arrow keys that send unique sequences 62192830Sed(multiple characters, the first character is an "escape", octal code 63192830Sed'\033'). All of this information needs to be in a database called "terminfo" 64192830Sed(System V implementations) or "termcap" (usually used for BSD systems). In 65192830Sedcase the arrow keys do not transmit unique sequences, motion operations are 66192830Sedmapped to control keys as well, but this at least partially defeats the 67192830Sedpurpose. The curses package is used to handle the I/O which deals with the 68192830Sedterminal's capabilities. 69192830Sed 70192830SedWhile ee is based on curses, I have included here the source code to 71192830Sednew_curse, a subset of curses developed for use with ee. 'curses' often 72192830Sedwill have a defect that reduces the usefulness of the editor relying upon 73192830Sedit. 74192830Sed 75192830SedThe file new_curse.c contains a subset of 'curses', a package for 76192830Sedapplications to use to handle screen output. Unfortunately, curses 77192830Sedvaries from system to system, so I developed new_curse to provide 78192830Sedconsistent behavior across systems. It works on both SystemV and BSD 79192830Sedsystems, and while it can sometimes be slower than other curses packages, 80192830Sedit will get the information on the screen painted correctly more often 81192830Sedthan vendor supplied curses. Unless problems occur during the building 82192830Sedof ee, it is recommended that you use new_curse rather than the curses 83192830Sedsupplied with your system. 84192830Sed 85192830SedIf you experience problems with data being displayed improperly, check 86192830Sedyour terminal configuration, especially if you're using a terminal 87192830Sedemulator, and make sure that you are using the right terminfo entry 88192830Sedbefore rummaging through code. Terminfo entries often contain 89192830Sedinaccuracies, or incomplete information, or may not totally match the 90192830Sedterminal or emulator the terminal information is being used with. 91192830SedComplaints that ee isn't working quite right often end up being something 92192830Sedelse (like the terminal emulator being used). 93192830Sed 94192830SedBoth ee and new_curse were developed using K&R C (also known as "classic 95192830SedC"), but it can also be compiled with ANSI C. You should be able to 96192830Sedbuild ee by simply typing "make". A make file which takes into account 97192830Sedthe characteristics of your system will be created, and then ee will be 98192830Sedbuilt. If there are problems encountered, you will be notified about 99192830Sedthem. 100192830Sed 101192830Sedee is the result of several conflicting design goals. While I know that it 102192830Sedsolves the problems of some users, I also have no doubt that some will decry 103192830Sedits lack of more features. I will settle for knowing that ee does fulfill 104192830Sedthe needs of a minority (but still large number) of users. The goals of ee 105192830Sedare: 106192830Sed 107192830Sed 1. To be so easy to use as to require no instruction. 108192830Sed 2. To be easy to compile and, if necessary, port to new platforms 109192830Sed by people with relatively little knowledge of C and UNIX. 110192830Sed 3. To have a minimum number of files to be dealt with, for compile 111192830Sed and installation. 112192830Sed 4. To have enough functionality to be useful to a large number of 113192830Sed people. 114192830Sed 115192830SedHugh Mahon |___| 116192914Sedhugh4242@yahoo.com | | 117192830Sed |\ /| 118192830Sed | \/ | 119192830Sed 120