JOE:: Help system

Name: Help system
Files: help.c, help.h
Since: 2.9.7pre1
Main authors: Joseph Allen
Marek 'marx' Grac <>

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 what it is and why it is done this way? Main goal was to clean and minimalize source code, remove several global variables, move everything concerned with help to these files.

The help system is based on bi-directional list of help screens. Each help screen has defined two variables, help text (char *hlptxt) and number of lines of help text (int hlplns). 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 main.c not here.

How to create a help file

Help file consist of prologue, body and epilogue for each of the screens. Each help screen must begin with {%name where %name 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:

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 :))

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 ^KD where ^ means CTRL + next character K and then key named D should be pressed.

Any comments, ideas, questions send to me at