ol − Outliner Lighto
ol [filename]
This manual page provides a brief documentation on Outliner Lighto (ol), a small user friendly console-based outliner.
Outliner Lighto can be used to store and organize data in an hierarchical fashion using a tree structure of (text) nodes. A node can contain subnodes (children) and can either be a normal node or a tickable node (a node with a special mark which can be optionally ticked), which is useful for to-do lists, tasks, etc. Beyond to-do lists, an outline can be used to store ideas, notes, addresses, calendar dates or anything else that can be represented by a hierarchy or list and can be used as a simple and flexible PIM (personal information management) program.
Of course since Outliner Lighto uses plain text files to store its data and the nodes can contain anything, it can be used for other tasks like configuration files, blog articles, etc.
When running Outliner Lighto you are in one of three modes: Normal Mode, Edit Mode and Grab Mode. By default you are in Normal Mode. You enter in Edit Mode when you insert or append a new node or when editing an existing node. While in Edit Mode, Outliner Lighto operates as a simple text editor where you can type and remove characters, move the cursor around the node’s text, etc. To exit the Edit Mode you either accept the changes (by pressing the Enter key) or discard them (by presscing the Escape key). To enter in Grab Mode you use the G key. In Grab Mode you simply move the selected node around the hierarchy and using it you can promote, demote or simply sort nodes.
Below is a list of all keys that Outliner Lighto understands.
|
S |
Save the currently edited outline file. Note that when the outline file being edited does not exist, it will not be created unless either the program is exited or S is used. | ||
|
F2 |
An alias for S | ||
|
Space |
Open or close the current node. The opened status is saved as part of the node’s state in the outline file (so the next time the outline is loaded the previously open nodes will still be open). | ||
|
L |
Dive into the current node. If the node has no children, a new temporary child will be created. For the temporary child to remain, you need to edit it’s text. Pasting a previously deleted node over the temporary child will cause it to be replaced by the pasted node. | ||
|
Right |
An alias for L | ||
|
H |
Rise from the current parent node. If the node had no children and a temporary node was created which didn’t had its text edited, then this temporary node will be deleted. | ||
|
Left |
An alias for H | ||
|
K |
Go to the previous node. If the current node was a temporary node without text, then that temporary node is deleted. If the current node is the first node of the parent node then nothing is done. | ||
|
Up |
An alias for K | ||
|
J |
Go to the next node. If the current node was a temporary node without text, then that temporary node is deleted. If the current node is the last node of the parent node and not a temporary node without text, then a new temporary node is created after the parent node’s last node and set as the new current node. | ||
|
C |
Change (edit) the current node. This enters in Edit Mode. | ||
|
Enter |
An alias for C | ||
|
M |
Merge the current node with the node below. This will append the text of the next node to the text of the current node and if the next node has any children, they will be moved to the current node. The next node will then be deleted. | ||
|
I |
Insert a new node at the current node’s position and push down all the parent node’s children from the current to the last. If the Edit Mode is cancelled, the new node is deleted. | ||
|
A |
Append a new node below the current node and push down all the parent node’s children from the node below the current node to the last. If the Edit Mode is cancelled, the new node is deleted. | ||
|
T |
Change the current node’s type. Currently a node can be either normal or tickable. See the description of X for information about tickable nodes. | ||
|
X |
Tick or untick the current node. This does nothing if the current node’s type is not tickable. If the current node has no children, a square is displayed in front of the node’s text. If the node is ticked a X is placed in it, otherwise the square remains empty. If the node has children, a percentage of the ticked tickable children is displayed in front of the node’s text. To help for better organization, Outline Lighto will highlight non-tickable children of tickable parents and put a double dash in front of them so they can be used as separators and/or headers. | ||
|
D |
Delete the current node. This will ask for a confirmation (you need to press D again). If the current node was the last child of the current parent the program will rise from the current parent. Note that since you cannot rise from the root node, if you delete the last node in the outline a new node will automatically be created. The last deleted node is kept in a "cut node" place and can be pasted using the P key (note that only the last delete node is kept and all deleted nodes before that are forgotten). | ||
|
Del |
An alias for D | ||
|
P |
Paste the last deleted node from the cut place to the current node’s place and push down all the parent node’s children from the current node to the last. If the current node is a temporary node without text then the pasted node will replace the temporary node. The pasted node can be re-pasted multiple times, which can be used to duplicate nodes. | ||
|
U |
Rise to the top-most node in the hierarchy. If the current node is already the top-most node, then the first of the top-most nodes is selected as the current node. | ||
|
Home |
An alias for U | ||
|
G |
Enter in Grab Mode. Grab Mode can be used to move the current node around in the hierarchy. See below for the keys in Grab Mode. | ||
|
O |
Order the children. This needs to be pressed twice to avoid accidental ordering. Currently the ordering is always done in a case-sensitive alphabetic fashion. | ||
|
E |
Enter and evaluate LIL code. | ||
|
B |
Toggle brief mode. In brief mode the tree shows only a single line per node and if there is more content than can be shown in a single line, an arrow is shown at the right side of the node. | ||
|
F |
View the current node and its children as flowing text without additional depth-based indentation. This can be useful for subnodes that represent sections and paragraphs in a tree. | ||
|
. |
Create a pointer node to the current node, make the new node the current node and enter in Grab mode to move it around. This can be used to create pointers to nodes across the tree. | ||
|
/ |
Search for text in the tree starting after the current node. | ||
|
? |
Show a brief help screen. | ||
|
R |
Refresh screen. This will shutdown and reinitialize the video buffer. It is required in xterm windows and other framebuffer systems which can change size in order to accept the new size. This is a limitation of FreePascal’s video unit which will hopefully be fixed (or a workaround be found) at some point. | ||
|
F5 |
An alias for R | ||
|
Q |
Quit. This will save the current outline file and quit from the program. |
The keys for the Edit Mode are listed below.
|
BkSpc |
Delete the previous character, move the cursor left one cell and pull all characters from the current to the last. This does nothing if the current character is the first one. Del Delete the current character and pull all characters from the current to the last. This does nothing if the current character is the last one. | ||
|
Esc |
Cancel the editing, restore the previous text and return to Normal Mode. | ||
|
Enter |
Finish the editing, clean the temporary node flag and return to Normal Mode. If the Edit Mode was entered for a temporary node without text (like the nodes created by the A and I keys from Normal Mode) then a new node will be created immediately below the current node and the program will enter Edit Mode again. This will not happen if the text of the temporary node was left empty; in this case the temporary flag will not be removed and no new node will be created. | ||
|
Home |
Make the first character of the node’s text the current character and move the cursor there. | ||
|
End |
Make the last character of the node’s text the current character and move the cursor there. | ||
|
Left |
Move the cursor to the previous character and make it the current character. This does nothing if the cursor is already in the first character. | ||
|
Right |
Move the cursor to the next character and make it the current character. This does nothing if the cursor is already in the last character. | ||
|
Up |
Move the cursor to the character at the same column as the current character at the line above. If the cursor is already in the first line of the node’s text, then it is moved at the first character. The current character is set as the character under the cursor. If the cursor is already at the first character of the node’s text then nothing is done. | ||
|
Down |
Move the cursor to the character at the same column as the current character at the line below. If the cursor is already in the last line of the node’s text, then it is moved at the last character. The current character is set as the character under the cursor. If the cursor is already at the last character of the node’s text then nothing is done. | ||
|
Any |
If any other key is pressed and represents an ASCII character, then push all the characters from the current to the last, put the new character in the cursor’s position and move the cursor to the character after the new one. |
The keys for the Grab Mode are listed below.
|
Left |
Move the current node out. This will make the current node a sibling of the node that previously was its parent and put it below the previous parent. | ||
|
Right |
Move the current node in. This will make the current node a child of the node that previously was above it and put it at the end of its children list. | ||
|
Up |
Move the current node up. | ||
|
Down |
Move the current node down. | ||
|
Enter |
Accept the current position and go back to the Normal Mode. | ||
|
G |
An alias for Enter | ||
|
Esc |
Cancel the Grab Mode and try to restore the previous state of the hierarchy. | ||
|
Q |
An alias for Esc |
Outliner Lighto can be launched with an optional filename argument. If a filename is given, it is used as the outline file to edit. If no filename is provided, Outliner Lighto will open a default outline file which is located in the user’s home directory. In both cases if the file does not exist a default outline is created with instructions on how to use the program. It is highly recommended to read these instructions before using Outliner Lighto since they also act as an interactive tutorial.
~/.ol.olol
The default outline file.
Edit the outline file books.olol
ol books.olol
Edit the default outline
ol
Kostas "Bad Sector" Michalopoulos <badsector@runtimeterror.com>
olol2tab(1), tab2olol(1), hnb2olol(1), ololfiles(5)