177 lines
7.1 KiB
Plaintext
177 lines
7.1 KiB
Plaintext
|
|
|
|
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]]);}
|