                           Joe's Own Editor 1.0.7


Get it by anonymous ftp
from: 'world.std.com', file '/src/editors/joe1.0.7.tar.Z'

If you have questions, problems or suggestions,
send email to: 'jhallen@world.std.com'


	JOE is a sane ASCII text screen editor for UNIX.  It is designed to 
make use of the power and versitility of UNIX, but also to be easy to use.  
It has the feel of most IBM PC editors.  The key sequences are remeniscent 
of WordStar and TURBO-PASCAL.  It also has the features which UNIX user's 
should expect: makes full use of termcap/terminfo, is designed to work well 
over slow networks and low baud rate modems, is designed to reduce 
installation headaches, and has the best features of vi.  

	JOE is most useful for editing unformatted text, such as USENET news 
articles and for editing block-structured languages such as C and PASCAL.  
JOE is ideal for new or casual users but is also powerful enough to please 
experienced users.  

Features:

	Full termcap/terminfo support.  Will work on any terminal except for 
overstrike terminals.  A new termcap library is supplied which can use an 
index file to make termcap faster then terminfo.  A number of terminfo 
extensions are supported and the GNU extensions to the termcap language are 
also supported.  JOE is not picky about the completeness of the termcap 
entries, it knows what the defaults are.  

	No-nonsense installation.  JOE has both ^H and DEL mapped to 
backspace and ^Q and ^S are not used.  JOE compiles to 120-190K on most 
systems.  

	Powerful optimal screen update.  Uses scrolling regions the way they 
are supposed to be used (I.E., without building insert and delete line with 
them) and uses a powerful line shifting (insert/delete character) algorithm 
which works even if text goes past the ends of lines.  Has deferred screen 
update to handle typeahead.  

	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

	Also, filenames on the command line may be preceeded by +nnn to 
start editing at a specified line.

	Shell windows.  You can run a shell in a window and any output from 
commands run in the shell gets stored in a buffer.

	Orthoganality.  Each prompt is actually a normal edit buffer and a 
copy of a history buffer.  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.  

	Powerful buffering system.  JOE uses a doubly linked list of gap 
buffers which can spill into /tmp directory files.  You can edit file 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.

	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.

	Nice help system.  When you ask for help, you get a menu of help 
screens to shoose from (all definable in an initialization file).   Once a 
help screen is selected, the help remains on while you continue to use the 
editor.  Here is the first help screen:

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  ^TT overtype ^C  abort
^Z previous word ^A  beg. of line ^KM move   ^W >word `   Ctrl-    ^KZ shell
^X next word     ^E  end of line  ^KC copy   ^O word< ^   Meta-    FILE
SEARCH           ^KU top of file  ^KW file   ^J >line ^R  retype   ^KE new
^KF find text    ^KV end of file  ^KY delete ^_ undo  ^@  insert   ^KR insert
^L  find next    ^KL to line No.  ^K/ filter ^^ redo               ^KD save

	Powerful set of editing commands.  Including:

		- search and replace system, including powerful regular 
		  expressions (including matching of balanced C expressions).

		- tag 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

		- multiple windows

		- block move/copy/delete/filter

		- rectangle mode

		- overtype/insert modes

		- indent/unindent

		- goto matching ( [ {

		- auto-indent mode

	Plus many options can be set:

		- row and column number can be shown on status line

		- can have EMACS-style cursor recentering on scrolls

		- characters between 160-254 can be shown as-is for
		  scandinavian characters

		- Final newline can be forced on end of file

		- Can start with a help screen on

		- No. of PgUp/PgDn lines to keep can be specified

		- Left/Right margin settings

		- Tab width

		- Indentation step and character

	JOE will soon have:

		Hex dump edit mode

		Fixed record length edit mode

		Shell windows and background/demand file-loading

/*  jhallen@world.std.com */     /* Amazing */            /* 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]]);}
