1*7556134aSSascha WildnerCopyright (c) 2009, Hugh Mahon 2*7556134aSSascha WildnerAll rights reserved. 3*7556134aSSascha Wildner 4*7556134aSSascha WildnerRedistribution and use in source and binary forms, with or without 5*7556134aSSascha Wildnermodification, are permitted provided that the following conditions 6*7556134aSSascha Wildnerare met: 7*7556134aSSascha Wildner 8*7556134aSSascha Wildner * Redistributions of source code must retain the above copyright 9*7556134aSSascha Wildner notice, this list of conditions and the following disclaimer. 10*7556134aSSascha Wildner * Redistributions in binary form must reproduce the above 11*7556134aSSascha Wildner copyright notice, this list of conditions and the following 12*7556134aSSascha Wildner disclaimer in the documentation and/or other materials provided 13*7556134aSSascha Wildner with the distribution. 14*7556134aSSascha Wildner 15*7556134aSSascha WildnerTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 16*7556134aSSascha Wildner"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 17*7556134aSSascha WildnerLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 18*7556134aSSascha WildnerFOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 19*7556134aSSascha WildnerCOPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 20*7556134aSSascha WildnerINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 21*7556134aSSascha WildnerBUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22*7556134aSSascha WildnerLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 23*7556134aSSascha WildnerCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24*7556134aSSascha WildnerLIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 25*7556134aSSascha WildnerANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26*7556134aSSascha WildnerPOSSIBILITY OF SUCH DAMAGE. 27*7556134aSSascha Wildner 28*7556134aSSascha Wildner 29*7556134aSSascha WildnerThe editor 'ee' (easy editor) is intended to be a simple, easy to use 30*7556134aSSascha Wildnerterminal-based screen oriented editor that requires no instruction to 31*7556134aSSascha Wildneruse. Its primary use would be for people who are new to computers, or who 32*7556134aSSascha Wildneruse computers only for things like e-mail. 33*7556134aSSascha Wildner 34*7556134aSSascha Wildneree's simplified interface is highlighted by the use of pop-up menus which 35*7556134aSSascha Wildnermake it possible for users to carry out tasks without the need to 36*7556134aSSascha Wildnerremember commands. An information window at the top of the screen shows 37*7556134aSSascha Wildnerthe user the operations available with control-keys. 38*7556134aSSascha Wildner 39*7556134aSSascha Wildneree allows users to use full eight-bit characters. If the host system has 40*7556134aSSascha Wildnerthe capabilities, ee can use message catalogs, which would allow users to 41*7556134aSSascha Wildnertranslate the message catalog into other languages which use eight-bit 42*7556134aSSascha Wildnercharacters. See the file ee.i18n.guide for more details. 43*7556134aSSascha Wildner 44*7556134aSSascha Wildneree relies on the virtual memory abilities of the platform it is running on 45*7556134aSSascha Wildnerand does not have its own memory management capabilities. 46*7556134aSSascha Wildner 47*7556134aSSascha WildnerI am releasing ee because I hate to see new users and non-computer types 48*7556134aSSascha Wildnerget frustrated by vi, and would like to see more intuitive interfaces for 49*7556134aSSascha Wildnerbasic tools (both character-based and graphical) become more pervasive. 50*7556134aSSascha WildnerTerminal capabilities and communication speeds have evolved considerably 51*7556134aSSascha Wildnersince the time in which vi's interface was created, allowing much more 52*7556134aSSascha Wildnerintuitive interfaces to be used. Since character-based I/O won't be 53*7556134aSSascha Wildnercompletely replaced by graphical user interfaces for at least a few more 54*7556134aSSascha Wildneryears, I'd like to do what I can to make using computers with less 55*7556134aSSascha Wildnerglamorous interfaces as easy to use as possible. If terminal interfaces 56*7556134aSSascha Wildnerare still used in ten years, I hope neophytes won't still be stuck with 57*7556134aSSascha Wildneronly vi. 58*7556134aSSascha Wildner 59*7556134aSSascha WildnerFor a text editor to be easy to use requires a certain set of abilities. In 60*7556134aSSascha Wildnerorder for ee to work, a terminal must have the ability to position the cursor 61*7556134aSSascha Wildneron the screen, and should have arrow keys that send unique sequences 62*7556134aSSascha Wildner(multiple characters, the first character is an "escape", octal code 63*7556134aSSascha Wildner'\033'). All of this information needs to be in a database called "terminfo" 64*7556134aSSascha Wildner(System V implementations) or "termcap" (usually used for BSD systems). In 65*7556134aSSascha Wildnercase the arrow keys do not transmit unique sequences, motion operations are 66*7556134aSSascha Wildnermapped to control keys as well, but this at least partially defeats the 67*7556134aSSascha Wildnerpurpose. The curses package is used to handle the I/O which deals with the 68*7556134aSSascha Wildnerterminal's capabilities. 69*7556134aSSascha Wildner 70*7556134aSSascha WildnerWhile ee is based on curses, I have included here the source code to 71*7556134aSSascha Wildnernew_curse, a subset of curses developed for use with ee. 'curses' often 72*7556134aSSascha Wildnerwill have a defect that reduces the usefulness of the editor relying upon 73*7556134aSSascha Wildnerit. 74*7556134aSSascha Wildner 75*7556134aSSascha WildnerThe file new_curse.c contains a subset of 'curses', a package for 76*7556134aSSascha Wildnerapplications to use to handle screen output. Unfortunately, curses 77*7556134aSSascha Wildnervaries from system to system, so I developed new_curse to provide 78*7556134aSSascha Wildnerconsistent behavior across systems. It works on both SystemV and BSD 79*7556134aSSascha Wildnersystems, and while it can sometimes be slower than other curses packages, 80*7556134aSSascha Wildnerit will get the information on the screen painted correctly more often 81*7556134aSSascha Wildnerthan vendor supplied curses. Unless problems occur during the building 82*7556134aSSascha Wildnerof ee, it is recommended that you use new_curse rather than the curses 83*7556134aSSascha Wildnersupplied with your system. 84*7556134aSSascha Wildner 85*7556134aSSascha WildnerIf you experience problems with data being displayed improperly, check 86*7556134aSSascha Wildneryour terminal configuration, especially if you're using a terminal 87*7556134aSSascha Wildneremulator, and make sure that you are using the right terminfo entry 88*7556134aSSascha Wildnerbefore rummaging through code. Terminfo entries often contain 89*7556134aSSascha Wildnerinaccuracies, or incomplete information, or may not totally match the 90*7556134aSSascha Wildnerterminal or emulator the terminal information is being used with. 91*7556134aSSascha WildnerComplaints that ee isn't working quite right often end up being something 92*7556134aSSascha Wildnerelse (like the terminal emulator being used). 93*7556134aSSascha Wildner 94*7556134aSSascha WildnerBoth ee and new_curse were developed using K&R C (also known as "classic 95*7556134aSSascha WildnerC"), but it can also be compiled with ANSI C. You should be able to 96*7556134aSSascha Wildnerbuild ee by simply typing "make". A make file which takes into account 97*7556134aSSascha Wildnerthe characteristics of your system will be created, and then ee will be 98*7556134aSSascha Wildnerbuilt. If there are problems encountered, you will be notified about 99*7556134aSSascha Wildnerthem. 100*7556134aSSascha Wildner 101*7556134aSSascha Wildneree is the result of several conflicting design goals. While I know that it 102*7556134aSSascha Wildnersolves the problems of some users, I also have no doubt that some will decry 103*7556134aSSascha Wildnerits lack of more features. I will settle for knowing that ee does fulfill 104*7556134aSSascha Wildnerthe needs of a minority (but still large number) of users. The goals of ee 105*7556134aSSascha Wildnerare: 106*7556134aSSascha Wildner 107*7556134aSSascha Wildner 1. To be so easy to use as to require no instruction. 108*7556134aSSascha Wildner 2. To be easy to compile and, if necessary, port to new platforms 109*7556134aSSascha Wildner by people with relatively little knowledge of C and UNIX. 110*7556134aSSascha Wildner 3. To have a minimum number of files to be dealt with, for compile 111*7556134aSSascha Wildner and installation. 112*7556134aSSascha Wildner 4. To have enough functionality to be useful to a large number of 113*7556134aSSascha Wildner people. 114*7556134aSSascha Wildner 115*7556134aSSascha WildnerHugh Mahon |___| 116*7556134aSSascha Wildnerhugh4242@yahoo.com | | 117*7556134aSSascha Wildner |\ /| 118*7556134aSSascha Wildner | \/ | 119*7556134aSSascha Wildner 120