The EHP editor is an editor written on a HP UNIX workstation.
It has been ported to OS/2 2.0 and I might call this release 1.0.
For the moment the documentation (except this document) is
German.
The package can be compiled using EMX GCC 0.8e or greater. 
Unpack the file using unzip utility. Construct a suitable keyboard
layout using the extracted program km.exe or use the withcoming tasten.inf. 
Enter the path where you stored tasten.inf in the definition of you EHPINIT 
environment variable.

Install procedure:
Copy the .exe files and the tasten.inf file
to a directory of your choice (best one contained in your PATH)
and set the environment variable EHPINIT to something like
  set EHPINIT=autoind screen 80x50 keys xxx\tasten.inf
where xxx represents the path where you put the tasten.inf file.
If you don't have installed emx, you have to copy the .DLL-files to 
a directory contained in your LIBPATH statement, e.g. to \OS2\DLL.

Changes of version 1.0 compared with latest beta release:

- Screen update (curses implementation) tries to work more efficiently.
  This turns out to be a gain e.g. when resizing or moving a window with
  the mouse, or when doing find/replace (command line update got much
  faster!). This is especially an advantage when using EHP in a PM window.

Known bugs:
- Since I use emx-0.8f, I can't get the mouse work in a full screen
  session. I tried to solve the problem with small test programs
  written from scratch, but without any success. I just don't want to
  believe that 0.8f is the reason for this, but on the other hand I
  didn't make any changes concerning the mouse.
  If using the mouse in a full screen session is necessary, try to
  compile the package with 0.8e and please report your results to me.
- If the confirmation coming up when leaving EHP by a keyboard command is
  answered with the mouse, EHP gets blocked. Terminate it using CTRL-c.
  Im working on it...

Things on my TO DO list:
- Double click could mark a word as a block
- Any kind of online help should be provided (e.g. by pressing F1 the
  keyboard layout pops up in a window)
- I'd like to get the damned mouse work in full screen mode!
- A command for matching parentheses would be nice, wouldn't it?
- Pattern matching when doing find seems not to be that difficult.
  Patterns in replace seem more sophisticated.

Please report bugs, hints, statements, comments and other feedback to me via
e-Mail to auhl@fzi.de !

------------------------- Initial keyboard layout ---------------------------

CTRL-a                  Insert line before current line
CTRL-b                  Block commands:
	- b             mark beginning of block
	- c             copy block to cursor position
	- d             delete block
	- e             end of rectangular block (good for moving comments)
	- f             filter the block (e.g. pass the block through SORT)
	- i             indent block (left or right)
	- m             move block to cursor position
	- n             end of normal block (with line wrap)
	- p             copy contents of paste-buffer to cursor position
	- r             read block from file and insert at cursor position
	- t             cuT block (means: copy it to the paste-buffer)
	- u             unmark block
	- w             write block to file
CTRL-c                  abort repeat function or macro execution,
			insert control code in text or command
CTRL-e                  Edit commands: (perhaps not the right menu, open
			for suggestions)
	- l             load file in current window
	- r             rename file
	- s             save file contained in current window
CTRL-f                  Find / Replace
	- a             Again (repeat last find or replace)
	- f             find
	- r             replace
			Short description of find/replace options:
			number: Find <number>th element / replace <number>
				elements
			a:      (replace only) replace all occurrences
			b:      search from the beginning of the text
			e:      search from textend upwards ('r' implicit)
			g:      (replace only) global (don't ask for replace)
			i:      ignore upper-/lowercase
			r:      reverse (search backwards)
			u:      (replace only) underline replace expression
				if and only if the first character of the
				found search expression is underlined.
				(without 'u' underlining is done according to
				the current underline mode, see CTRL-u)
			w:      find/replace words only
CTRL-g                  Goto commands:
	- b             goto beginning of marked block
	- e             goto end of marked block
	- g             goto marker
	- l             last position (stored before CTRL-g, jump to beginning
			or end of file, searching, replacing)
	- n             goto line number
	- s             set marker
CTRL-j                  Join (append following line to the current one)
CTRL-k                  (from the German korrigieren (correct)) insert the
			line deleted last (with CTRL-y) before the current line
CTRL-l                  Refresh (VI-like)
CTRL-n                  Repeat find/replace (same as CTRL-f-a)
CTRL-o                  (VI-like open line) insert line after current line
CTRL-q                  Delete to end-of-line
CTRL-r                  repeat a command sequence n times
CTRL-s                  Set/unset flags
	- a             autoindent
	- b             blockhighlighting
	- c             tabcompression (blanks may be converted to tabs when
			saving the file, this is the default)
	- s             shell mode (when pressing RETURN, the part of the
			current line up to the cursor position is passed to
			the shell, the result of the executed command is
			inserted in the text and marked as a block)
	- t             define tablength (how far the TAB key ought to jump,
			not what number of spaces is converted to a tab in
			the text's file representation)
	- .             create .bak-files when overwriting an existing file
CTRL-t                  Delete word right to the cursor (Borland-like)
CTRL-u                  toggle underline mode (underlined characters are
			represented by _^H<x> where <x> is the underlined
			character).
CTRL-v                  Macro definition/execution
CTRL-w                  Window functions
	- c             close current window
	- d             switch direct to another window by supplying the
			name of the file contained in the window
	- i             switch to window by index (number of the window
			displayed in the lower left corner of each window)
	- m             move window on the screen
	- n             switch to next window
	- o             open new window
	- p             switch to previous window. This operation is symmetric,
			i.e. applied twice, you get to the window where you
			were before.
	- s             change size of current window
	- t             toggle window size (two sizes exist, both of which
			are initially set to full size) 
CTRL-x                  Exit commands
	- n             exit without saving and without executing the load file
			(the load file is a batch file, which can optionally
			be executed when quitting the editor, e.g. it may
			contain the call to MAKE)
	- s             exit with saving all modified files, but without
			executing the load file
	- N             exit without saving, but with loadfile execution.
			The default name for the load file is load.bat in
			the current directory, but it can be modified using
			the environment variable EHPINIT.
	- S             exit with saving all modified files and executing the
			load file.
CTRL-y                  delete the current line (can be undone using CTRL-k)
arr_left                move cursor left one character
arr_right               move cursor right one character
arr_up                  move cursor up one character
arr_down                move cursor down one character
CTRL-arr_left           move cursor left one word
CTRL-arr_right          move cursor right one word
CTRL-arr_up             move window content including cursor one line up
CTRL-arr_down           move window content including cursor one line down
ALT-arr_left            make current line appear in the middle of the window
ALT-arr_up              make current line first line of window
ALT-arr_down            make current line last line of window
HOME                    move cursor to beginning of current line
END                     move cursor to end of current line
CTRL-HOME               move cursor to the first line of the window
CTRL-END                move cursor to the last line of the window
PgUp                    one page up
PgDn                    one page down
CTRL-PgUp               go to beginning of file
CTRL-PgDn               go to end of file
ALT-PgUp                go half a page up
ALT-PgDn                go half a page down
DEL                     delete character on which the cursor stands
Backspace               delete character left to the cursor. If cursor is in
			first column, join current line with the upper line.
Ins                     Toggle insert/overwrite mode

--------------------------- Mouse commands ------------------------------

Left button:
- click on text
  Set the cursor to the current mouse position and activate that window
  (if not already activated)
- click and move on text
  Mark a normal block (like CTRL-b b and CTRL-b n)
- click on headline and move
  Move the window
- click on lower right corner of window and move
  Resize that window
- click on upper left corner
  Close that window (like CTRL-w c)
- click on upper right corner
  Toggle window size (like CTRL-w t)
- click on arrows in frame
  Scroll text in arrow direction
- click on yes/no-question
  YES

Right button:
- click on text with no block marked and no block in PASTE-buffer
  Set the cursor to the current mouse position and activate that window
  (if not already activated)
- click on text with no block marked and block in the PASTE-buffer
  Paste the block from the PASTE-buffer into the text at the current
  mouse position
- click on text with a block marked in the window clicked to
  The marked block is stored in the PASTE-buffer and unmarked
- click and move on text
  Mark a rectangular block (like CTRL-b b and CTRL-b r)
- click on headline
  Push the window into the background
- click on lower right corner of window and move
  Resize that window
- click on upper left corner
  Close that window (like CTRL-w c)
- click on upper right corner
  Toggle window size (like CTRL-w t)
- click on arrows in frame
  Scroll text in arrow direction
- click on yes/no-question
  NO

Middle and left: (press middle first, then left, probably three-button-mouse
		  is not supported by OS/2 at the moment)
- on text
  move marked block to mouseposition

Middle and right: (press middle first, then right, probably three-button-mouse
		   is not supported by OS/2 at the moment)
- on text or frame with marked block in window clicked to
  delete marked block in current window

------------------- The environment variable EHPINIT --------------------

autoind                 turn autoindent mode on by default
nohelp                  turn off the helpline
noshowblock             turn off blockhighlighting
nobak                   turn off creation of .bak files
deftab <n>              set tabsize to n
screen CxL              switch to screen size CxL (C=columns, L=lines)
			NOTE: be sure, your video card supports that mode
keys <f>                keyboard file is stored in <f>
conffile <f>            config file storing information about the session,
			like open files, window sizes and macros, is stored
			in file <f>. If not supplied, a file called config.sys
			if opened in the current directory.
loadfile <f>            The loadfile (explained at CTRL-x) is named <f>
			If this option is omitted, the file is looked for
			under the name load.cmd in the current directory.




Enjoy,
Axel (auhl@fzi.de)
