init
This commit is contained in:
176
docs/README.old
Normal file
176
docs/README.old
Normal file
@@ -0,0 +1,176 @@
|
||||
|
||||
|
||||
Joe's Own Editor 3.6
|
||||
|
||||
A Free ASCII-Text Screen Editor for UNIX
|
||||
by Joseph Allen (<= 2.8)
|
||||
Marek 'Marx' Grac (=> 2.9)
|
||||
by Joseph Allen again (=>3.0)
|
||||
|
||||
Get it from:
|
||||
http://sourceforge.net/projects/joe-editor
|
||||
|
||||
If you have questions, problems or suggestions,
|
||||
Use sourceforge: mailing list, bug tracker, discussion groups.
|
||||
|
||||
JOE is the professional freeware ASCII text screen editor for UNIX.
|
||||
It makes full use of the power and versatility of UNIX, but lacks the steep
|
||||
learning curve and basic nonsense you have to deal with in every other UNIX
|
||||
editor. JOE has the feel of most IBM PC text editors: The key-sequences are
|
||||
reminiscent of WordStar and Turbo-C. JOE is much more powerful than those
|
||||
editors, however. JOE has all of the features a UNIX user should expect:
|
||||
full use of termcap/terminfo, excellent screen update optimizations (JOE is
|
||||
fully usable at 2400 baud), simple installation, and all of the
|
||||
UNIX-integration features of VI.
|
||||
|
||||
JOE's initialization file determines much of JOE's personality and
|
||||
the name of the initialization file is simply the name of the editor
|
||||
executable followed by "rc". JOE comes with four "rc" files in addition to
|
||||
the basic "joerc", which allow it to emulate these editors:
|
||||
|
||||
JPICO - An enhanced version of the Pine mailer system's PICO
|
||||
editor.
|
||||
|
||||
JSTAR - A complete imitation of WordStar including many "JOE"
|
||||
extensions.
|
||||
|
||||
RJOE - A restricted version of JOE which allowed you to edit
|
||||
only the files specified on the command line.
|
||||
|
||||
JMACS - A GNU-EMACS imitation which is about one order of
|
||||
magnitude smaller than real GNU-EMACS.
|
||||
|
||||
Features:
|
||||
|
||||
JOE has a well thought-out user-interface with great attention to
|
||||
detail. The Page Up and Page Down functions do not move the cursor relative
|
||||
to the edges of the screen. Left and Right arrow keys work at the beginning
|
||||
and ends of lines. The cursor can move past the ends of lines without
|
||||
jumping, but also without inserting or deleting extra spaces at the ends of
|
||||
lines. Control characters and characters above 127 can be displayed and
|
||||
entered- even ^Q and ^S. The cursor's row and column number can be
|
||||
displayed in the status line.
|
||||
|
||||
The key layout is made to reduce terminal incompatibility nonsense.
|
||||
^Q and ^S are not used and both ^H and DEL are mapped to backspace. Case
|
||||
does not matter in key sequences- ^K E, ^K e, and ^K ^E are each mapped to
|
||||
the same function. The arrow keys and PageUp, PageDown, Home, End, Insert
|
||||
and Delete keypad keys are read from the termcap entry and are assigned to
|
||||
the proper functions. A simple initialization file, similar to Semware's
|
||||
Q-EDIT, allows key-bindings, simple macros and help windows to be defined.
|
||||
|
||||
JOE has full termcap/terminfo support and will work on any terminal.
|
||||
JOE has the best screen update optimization algorithm available. It uses
|
||||
VT100-style scrolling regions the way they are supposed to be used (I.E.,
|
||||
without building insert and delete line functions out of them) and has a
|
||||
powerful line shifting (insert/delete character) algorithm which works even
|
||||
if text goes past the ends of lines. JOE has deferred screen update to
|
||||
handle typeahead and uses the baud rate reported by 'stty' to ensure that
|
||||
deferral is not bypassed by tty buffering.
|
||||
|
||||
JOE has multiple windows and lacks the confusing notion of a named
|
||||
buffers. You just have files and windows. When there are more windows than
|
||||
can fit on the screen, the Goto-Next-Window function scrolls through them.
|
||||
The same file can have multiple windows opened on it.
|
||||
|
||||
JOE has VI-style unix integration. You can filter a highlighted
|
||||
block through a UNIX command. Also, each place in joe which accepts a file
|
||||
name (including the command line) will also accept:
|
||||
|
||||
!command to pipe into or out of a command
|
||||
>>filename to append to a file
|
||||
filename,start,size to edit a portion of a file/device
|
||||
- to use stdin or stdout
|
||||
|
||||
File names on the command line may be preceded by +nnn to start
|
||||
editing at a specified line.
|
||||
|
||||
JOE has shell windows. You can run a shell in a window and any
|
||||
output from commands run in the shell gets stored in a buffer.
|
||||
|
||||
JOE has an orthogonal event-driven design. Each prompt is actually
|
||||
a normal edit buffer containing a history of all of the responses entered
|
||||
for that prompt. You can use all of the normal edit commands to create file
|
||||
names and search strings. You can use the up arrow key (or search backwards
|
||||
and any other appropriate edit command) to go back through the history of
|
||||
previous responses. Prompts are reentrant- meaning that edit commands which
|
||||
require prompts can still be used inside of prompts.
|
||||
|
||||
JOE has TAB-completion and file selection menus. If you hit tab in
|
||||
a file name prompt, the name is either completed or a menu of possible
|
||||
matches appears.
|
||||
|
||||
JOE stores edit files in a doubly linked list of gap buffers which
|
||||
can spill into a temporary file. You can edit files of any size up to the
|
||||
amount of free disk space and there are no line-length restrictions. Since
|
||||
the buffering system is block-based, JOE will incur only a minimum of
|
||||
swapping on heavily loaded systems.
|
||||
|
||||
When you ask for help, one of six small help reference cards appears
|
||||
on the screen and remains while you continue to use the editor. Here is the
|
||||
first help card:
|
||||
|
||||
CURSOR GO TO BLOCK DELETE MISC EXIT
|
||||
^B left ^F right ^U prev. screen ^KB begin ^D char. ^KJ reformat ^KX save
|
||||
^P up ^N down ^V next screen ^KK end ^Y line ^T options ^C abort
|
||||
^Z previous word ^A beg. of line ^KM move ^W >word ^@ insert ^KZ shell
|
||||
^X next word ^E end of line ^KC copy ^O word< ^R retype FILE
|
||||
SEARCH ^KU top of file ^KW file ^J >line SPELL ^KE new
|
||||
^KF find text ^KV end of file ^KY delete ^_ undo ^[N word ^KR insert
|
||||
^L find next ^KL to line No. ^K/ filter ^^ redo ^[L file ^KD save
|
||||
|
||||
JOE has a powerful set of editing commands suitable for editing both
|
||||
text files and programs:
|
||||
|
||||
- UTF-8 support
|
||||
|
||||
- Syntax highlighting
|
||||
|
||||
- search and replace system, including powerful regular
|
||||
expressions (including matching of balanced C expressions).
|
||||
|
||||
- tags file search
|
||||
|
||||
- paragraph format
|
||||
|
||||
- undo and redo
|
||||
|
||||
- position history allows you to get back to previous
|
||||
editing contexts and allows you to quickly flip between
|
||||
editing contexts
|
||||
|
||||
- multiple keyboard macros
|
||||
|
||||
- block move/copy/delete/filter
|
||||
|
||||
- rectangle (columnar) mode
|
||||
|
||||
- overtype/insert modes
|
||||
|
||||
- indent/unindent
|
||||
|
||||
- goto matching ( [ {
|
||||
|
||||
- auto-indent mode
|
||||
|
||||
Plus many options can be set:
|
||||
|
||||
- can have EMACS-style cursor re-centering on scrolls
|
||||
|
||||
- characters between 128-255 can be shown as-is for
|
||||
non-English character sets
|
||||
|
||||
- Final newline can be forced on end of file
|
||||
|
||||
- Can start with a help screen on
|
||||
|
||||
- Left/Right margin settings
|
||||
|
||||
- Tab width
|
||||
|
||||
- Indentation step and fill character
|
||||
|
||||
/* jhallen@world.std.com */ /* Joseph H. Allen */
|
||||
int a[1817];main(z,p,q,r){for(p=80;q+p-80;p-=2*a[p])for(z=9;z--;)q=3&(r=time(0)
|
||||
+r*57)/7,q=q?q-1?q-2?1-p%79?-1:0:p%79-77?1:0:p<1659?79:0:p>158?-79:0,q?!a[p+q*2
|
||||
]?a[p+=a[p+=q]=q]=q:0:0;for(;q++-1817;)printf(q%79?"%c":"%c\n"," #"[!a[q-1]]);}
|
||||
1454
docs/hacking.md
Normal file
1454
docs/hacking.md
Normal file
File diff suppressed because it is too large
Load Diff
79
docs/help-system.html
Normal file
79
docs/help-system.html
Normal file
@@ -0,0 +1,79 @@
|
||||
<html>
|
||||
<head>
|
||||
<title> JOE 2.9.7pre3 -> Help system </title>
|
||||
</head>
|
||||
<body bgcolor="#83CCF4">
|
||||
<center><h2> JOE:: Help system </h2></center>
|
||||
<table>
|
||||
<tr>
|
||||
<td> Name: </td>
|
||||
<td> Help system </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> Files: </td>
|
||||
<td> help.c, help.h </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> Since: </td>
|
||||
<td> 2.9.7pre1 </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> Main authors: </td>
|
||||
<td> Joseph Allen <br> Marek 'marx' Grac <a href="mailto:xgrac@fi.muni.cz"><xgrac@fi.muni.cz></a> </td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>
|
||||
Differences between this and previous version should be hidden
|
||||
to users. Main changes were done in design of source code. I
|
||||
will try to explain <i>what it is</i> and <i>why it is done this
|
||||
way</i>? Main goal was to clean and minimalize source code,
|
||||
remove several global variables, move everything concerned with
|
||||
help to these files.
|
||||
</p>
|
||||
<p>
|
||||
The help system is based on bi-directional list of help screens.
|
||||
Each help screen has defined two variables, help text (<i>char
|
||||
*hlptxt</i>) and number of lines of help text (<i>int
|
||||
hlplns</i>). Since this version the help file can/should be
|
||||
separated from *rc files. Advantage of this model is that you
|
||||
can set help to other languages. Usage of standard method
|
||||
(gettext) will be very difficult here, because help has constant
|
||||
width which can't be overcrossed. This method has also no
|
||||
problem with having several help files in each language (for
|
||||
joe, jmacs, ...). Problematics of setting proper help file will
|
||||
be solved in <i>main.c</i> not here.
|
||||
</p>
|
||||
<h3> How to create a help file </h3>
|
||||
<p>
|
||||
Help file consist of prologue, body and epilogue for each of the
|
||||
screens. Each help screen must begin with <i>{%name</i> where
|
||||
<i>%name</i> is only symbolic name of this screen and is not
|
||||
used in program. The body of help screen contains text which
|
||||
will be showed on the user screen and tags which takes care of
|
||||
special information (bold, flash, ...). There is list of the
|
||||
tags with theirs functions:
|
||||
<ul>
|
||||
<li> <b>\i</b> to turn on/off inverse video </li>
|
||||
<li> <b>\u</b> to turn on/off underline </li>
|
||||
<li> <b>\b</b> to turn on/off bold </li>
|
||||
<li> <b>\l</b> to turn on/off italic </li>
|
||||
<li> <b>\d</b> to turn on/off dim </li>
|
||||
<li> <b>\f</b> to turn on/off flash </li>
|
||||
</ul>
|
||||
These tags are inserted into help screen text, but they are not
|
||||
visible in the help screen (visible are only their effects, but this
|
||||
is their purpose <b>:)</b>)
|
||||
</p>
|
||||
<p>
|
||||
Some hints how to write a new help screen. Standard help screens have
|
||||
80 characters per line (including borders) so they are visible on text
|
||||
console. Sequences of keys are usually written as <i>^KD</i> where
|
||||
<i>^</i> means CTRL + next character <i>K</i> and then key named <i>D</i>
|
||||
should be pressed.
|
||||
</p>
|
||||
<hr>
|
||||
<p>
|
||||
Any comments, ideas, questions send to me at <a href="mailto:xgrac@fi.muni.cz">xgrac@fi.muni.cz</a>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
3994
docs/man.md
Normal file
3994
docs/man.md
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user