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