xref: /dragonfly/contrib/ee/README.ee (revision 7556134a)
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