mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-14 23:46:10 +00:00
1036 lines
38 KiB
Plaintext
1036 lines
38 KiB
Plaintext
How to Use Oleo
|
||
|
||
This is a brief description of Oleo. It is not a good introduction to
|
||
spreadsheets in general. We hope to provide more complete
|
||
documentation in the future.
|
||
|
||
|
||
Cell references:
|
||
|
||
The case of cell and range letters is ignored. Lowercase letters in
|
||
cell and range letters are silently turned into their uppercase
|
||
equivelents.
|
||
|
||
Absolute vs Relative references:
|
||
|
||
A reference to a cell may be either absolute or relative. The only
|
||
difference between them (besides how they are printed) is how they are
|
||
adjusted when a cell is moved or copied.
|
||
|
||
When an expression containing an absolute reference is moved or copied, the
|
||
reference will still point to the same cell.
|
||
|
||
When an expression containing a relative reference is moved or copied, the
|
||
reference is changed to point to the cell at the same offset from the
|
||
reference's new position.
|
||
|
||
So if the expression 'R[+1]C[+1]' is in cell R8C9 it refers to cell R9C10.
|
||
If the same expression is copied into cell R1C1 it will refer to R2C2.
|
||
|
||
|
||
Address Syntax:
|
||
|
||
Oleo supports two syntaxes for cell address, called `a0' and `noa0'.
|
||
To switch between these syntaxes, use the set-option command.
|
||
|
||
M-x set-option a0
|
||
M-x set-option no a0
|
||
|
||
|
||
In 'noa0' mode: (the default)
|
||
|
||
Absolute cell references have the form R{row_num}C{col_num}, as in R1C1 (the
|
||
topleft cell in the sheet).
|
||
|
||
Relative ones have the form R[{offset}]C[{offset}], as in R[-1]C[+1] (The
|
||
cell above and to the right of the current cell). An offset of zero, can be
|
||
deleted, along with its square-brackets, as in RC[+1] (the cell to the right
|
||
of the current cell.)
|
||
|
||
Mixed-mode references also work about the same as you'd
|
||
expect, as in R4C[-1] (the cell in row four that's one left
|
||
of the current cell.)
|
||
|
||
Ranges are of the form R{row1}:{row2}C{col1}:{col2}, where the row and
|
||
column references may be either absolute or relative. If
|
||
{row2}=={row1} or {col2}=={col1}, the colon and the redundant number
|
||
may be omitted, as in R1:10c2 (Rows one through ten in column two).
|
||
|
||
Mixed-mode rangers work, and have the syntax you'd expect, as in R2:[-1]c3.
|
||
|
||
|
||
In 'a0' mode:
|
||
|
||
Relative cell reference have the form {col_let}{row_num}, as in A1 (the
|
||
topleft cell in the sheet).
|
||
|
||
Absolute ones have the form ${col_let}${row_num}, as in $A$1 (The topleft
|
||
cell in the sheet).
|
||
|
||
Mixed-mode ones work about the way you'd expect, with $A1 having an absolute
|
||
column, but a relative row. . .
|
||
|
||
Ranges are either {cell_ref}:{cell_ref} or {cell_ref}.{cell_ref}, where the
|
||
cell_refs describe opposite corners of the range. So A1:B2 is the topmost,
|
||
leftmost four cells in the spreadsheet.
|
||
|
||
Mixed mode rangers work, and have the syntax you'd expect, as in '$A3.$F9.
|
||
|
||
|
||
|
||
Keymaps:
|
||
|
||
Keymaps may have a 'default map'. If a key is pressed which does not have an
|
||
assigned meaning in that map, the map's default map is checked, and that
|
||
map's default map, until a command is found or there are no more default maps
|
||
to scan.
|
||
|
||
Here is a list of keymaps, and the keymaps to which they default:
|
||
Oleo normally has five keymaps. They are:
|
||
|
||
KEYMAP (DEFAULT) USE
|
||
universal The root of all keymaps.
|
||
help (universal) Help commands.
|
||
mouse (universal) Bindings for mouse buttons.
|
||
navigate (universal) Commands that move the cursor.
|
||
trolx-navigate (universal) Navigate commands prefixed by ^X.
|
||
meta-navigate (universal) Navigate commands prefixed by ESC.
|
||
main (navigate) The default keymap.
|
||
trolx (trolx-navigate) Default ^X commands.
|
||
meta (meta-navigate) Default ESC commands.
|
||
digit (main) The numeric prefix keymap.
|
||
edit (universal) The keymap for edditting in the input area.
|
||
meta-edit (universal) Edit commands prefixed by ESC.
|
||
trolx-edit (universal) Edit commands prefixed by ^X.
|
||
ansi (universal) A keymap for ANSI arrows keys.
|
||
|
||
|
||
The command write-keys can be used to produce a listing of
|
||
keybindings. Also, the source file init.c lists the default bindings.
|
||
|
||
|
||
Input Editing:
|
||
|
||
When the spreadsheet is reading text input, you can use a few
|
||
text-editing commands. Note that there in no history mechanism and no
|
||
yank command. If you accidentally ^U your text, it is *gone*.
|
||
This will be improved in the future.
|
||
|
||
While the input area is active, the commands that move the cell cursor
|
||
are disabled. If you want to move the cell cursor, use the
|
||
other-window command (^X-o) to leave and later reenter the input area.
|
||
|
||
The following editing commands are defined:
|
||
|
||
Name: Key: What it does:
|
||
|
||
M-A insert-abs-ref Insert/over-write an absolute reference to the
|
||
current cell/region.
|
||
M-R insert-rel-ref Insert/over-write a relative reference to the
|
||
current cell/region.
|
||
M-E insert-cell-expression Insert/over-write the expression in the
|
||
current cell.
|
||
M-V insert-cell-value Insert/over-write the value of the current
|
||
cell.
|
||
^A cursor-begin-line Move the cursor to the beginning of the text.
|
||
^B cursor-back-char Move the cursor back a character.
|
||
M-B cursor-back-word Move back a word.
|
||
^D delete-next-char Delete the character under the cursor.
|
||
M-D delete-next-word Delete from the cursor to the end of
|
||
the current word.
|
||
^E cursor-end-line Move to the end of the text.
|
||
^F cursor-fwd-charF Move forward a character.
|
||
M-F cursor-fwd-word Move forward a word.
|
||
^H ^? delete-prev-char Delete the character to the left of the cursor.
|
||
^J ^M finish-line Finish editing the text, and execute the
|
||
command you've been typing the text in for.
|
||
^K delete-to-end Delete from the cursor to the end of the text.
|
||
M-O toggle-over-write Toggle between overwrite and insert mode.
|
||
^U ^X delete-to-start (BEWARE!) Deletes from the cursor to the
|
||
beginning of the line.
|
||
^W delete-prev-word Delete the word to the left of the cursor.
|
||
' ' to ~ self-insert These characters are either inserted or
|
||
over-written into the text.
|
||
^X-O other-window Move the cursor into the cell area.
|
||
|
||
Input Defaults:
|
||
|
||
Almost all editing commands remember what you typed the last time you used
|
||
that command, and start you up editing a copy of that text. If you want to
|
||
type in something completely new, just type ^X (or ^U) and type in your new
|
||
text.
|
||
|
||
|
||
Error Messages:
|
||
|
||
Error messages are displayed on the input line. If oleo needs to display
|
||
more than one error message at a time, it will display [MORE] at the end of
|
||
the first msg, and will wait for you to type a key before displaying the next
|
||
one. Oleo will also display the [MORE] message if you are entering text in
|
||
the input line, so that you will be able to see the error message.
|
||
|
||
Info Messages:
|
||
|
||
Some commands (like format-cell) occasionally display non-error information.
|
||
If the status line is enabled, the message is displayed there, and subsequent
|
||
non-error messages will over-write them without [MORE] prompting. This in
|
||
quite useful if the msg in question concerns how far oleo has gotten through
|
||
some task (like reading a file). If the status line is disabled, the
|
||
messages are displayed in the input line.
|
||
|
||
The Main Commands:
|
||
|
||
Key Command Name What it does
|
||
h ^B go-left These commands move the cell-cursor one cell
|
||
j ^N go-down in the appropriate direction.
|
||
k ^P go-up
|
||
l ^F go-right
|
||
y go-upleft
|
||
u go-upright
|
||
b go-downleft
|
||
n go-downright
|
||
|
||
H ^X-< scroll-left These scroll the current window one screenful
|
||
J M-v scroll-down in the appropriate direction. They try to
|
||
K ^V scroll-up leave the cell cursor in (roughly the same
|
||
L ^X-> scroll-right place in the window, so that an L followed by
|
||
Y scroll-upleft an H will leave the cell cursor back in the
|
||
U scroll-upright original cell, however, since the number of
|
||
B scroll-downleft rows and columns in each screenful varies,
|
||
N scroll-downright this will not always work.
|
||
|
||
M-H M-b scan-left These commands move to the first/last nonempty cell in
|
||
M-J M-n scan-down the current row/column. If given a repeat count, they
|
||
M-K M-p scan-up go to the N-th most nonempty cell. If there are no
|
||
M-L M-f scan-right cells, the cursor is moved to the leftmost/top cell.
|
||
|
||
^G break This will abort a partially completed command. If you are
|
||
typing text on the top line, the text you typed will be saved
|
||
and presented as the default the next time you start that
|
||
command.
|
||
|
||
^L recenter-window This redraws the screen. If the page option
|
||
is not set in this window, it will try to move the current
|
||
cell to the center of the window. If the page option is set,
|
||
this will just redraw the screen.
|
||
|
||
o set-option This asks for an option to set or reset, and tries to
|
||
do so.
|
||
|
||
|
||
d set-defaults This command will change the default alignment, format,
|
||
protection, or width. If the status-line is enabled,
|
||
this will display the current settings there.
|
||
|
||
Q quit This command exits the spreadsheet and returns you to the
|
||
shell. This may ask for confirmation if oleo thinks you have
|
||
unsaved changes. If you do not save your changes before
|
||
quitting, they will be lost forever.
|
||
|
||
^R M-^l redraw-screen This redraws the screen. It is most useful if
|
||
line-noise or another program has scribbled on your display.
|
||
|
||
|
||
M-U set-user-format Set a user-defined format.
|
||
|
||
v set-variable This prompts you for a name followed by a cell or
|
||
range that you want to refer to by that name. To
|
||
'undefine' a variable, use set-variable with just its
|
||
name.
|
||
|
||
V show-variable
|
||
|
||
^V show-all-variables This shows the values of all currently defined
|
||
variables.
|
||
|
||
! recalculate Recalculate the spreadsheet until all the cells whose
|
||
values may have changed have been evaluated. If there are
|
||
circular cell references, the cells in the loop will be
|
||
evaluated at most 40 times (this number subject to change!)
|
||
|
||
: bind-key This asks for the name of a keymap followed by a
|
||
command name and a key to bind it to. If the 'command' you
|
||
give is a cell or region in the spreadsheet, it is taken as a
|
||
macro, and bound to the key you specify.
|
||
|
||
; describe-key Have the user press a key, and then describe
|
||
what function that key is bound to.
|
||
|
||
M-< read-commands This command opens the file you specify reads in each
|
||
line, and executes them as if you'd typed them in to
|
||
execute-command. If any command needs more arguments than are
|
||
included on the line, it will prompt you (interactively) for
|
||
the missing information.
|
||
|
||
M-> write-keys Write a list of commands to the file that, when
|
||
executed with read-commands, will return the keymaps to their
|
||
current state.
|
||
|
||
w ^x^s Save the spreadsheet to a file, using the current
|
||
file-format.
|
||
|
||
r ^x^v visit-spreadsheet Read in a file in the current
|
||
file-format. This erases the current contents of the
|
||
spreadsheet first. This may ask for confirmation.
|
||
|
||
R ^x^i merge-spreadsheet
|
||
Read in a file and merge its contents into the
|
||
current spreadsheet. Note that some file-formats, (like
|
||
panic-save) won't work with this command.
|
||
|
||
^X-DEL clear-spreadsheet
|
||
Delete the entire spreadsheet. This may ask
|
||
for confirmation if oleo thinks you may be about to lose
|
||
un-saved work.
|
||
|
||
c copy-region Copy a region. Takes two ranges, copies the source
|
||
range into the dest range. If the dest range size is a
|
||
multiple of the source range size, the source range is copied
|
||
multiple times. If the dest range is given as a cell, the
|
||
cell is the location of the top-left corner of the dest range.
|
||
|
||
C copy-values-in-region Copy just the values of one region to another.
|
||
|
||
F format-region Change the format, alignment, protection,
|
||
or width of a region. If the status line is active, oleo
|
||
will display the current alignment, format, width and
|
||
protection of the top-left cell in the region.
|
||
|
||
m move-region This is similar to copy-region, except that the two
|
||
ranges must be the same size, and that cells that reference
|
||
the source region may be modified to reference the dest
|
||
region instead. (absolute references are modified, relative
|
||
ones aren't.) Variables whose ranges are inside the source
|
||
region are also adjusted.
|
||
|
||
p print-region Print a region to a file. Asks for a region
|
||
(to print) and a filename to to write to.
|
||
|
||
s sort-region Sort a region. This takes the region to sort, a
|
||
region that is the first element of the region, and a list of
|
||
cells that are to be used as the sorting-keys. Here's an
|
||
example. sort-region r1:100c1:10 r1:2c1:10 +r1c2 -r1c3 This
|
||
means: Sort the region R1:100C1:10 in two-row, ten-column
|
||
chunks, sorting on the cell that's in the top-row
|
||
one-column-in. If they are similar, use the cell in the
|
||
top-row two-columns-in, with high values ending up before low
|
||
ones.
|
||
|
||
^x-w write-region-to-file Write a region of the spreadsheet to a file.
|
||
This command is not allowed with some
|
||
file-formats (like panic-save).
|
||
|
||
X delete-region Delete {value, formula, format, etc} of a
|
||
region. This DOES NOT ask for confirmation.
|
||
|
||
M-( start-entering-macro Start storing a keyboard macro. Keyboard
|
||
macros are strings that contain the characters you typed.
|
||
|
||
M-) stop-entering-macro Finish a keyboard macro, and store it in a
|
||
cell that you specify.
|
||
|
||
M-X execute-command This will allow you to execute either a
|
||
builtin command, or a macro. For a builtin command, simply
|
||
enter the command's name (and, optionally, any arguments the
|
||
command will want). For a macro, enter its name, or
|
||
the region in the spreadsheet that contains it.
|
||
|
||
You can create macros with text strings. Command names may
|
||
be enclosed in {CMD}, as in {go-left}. Some commands may
|
||
take arguments, as in {go-up 12} or {goto-cell r1c3}. To
|
||
execute multiple commands, concatenate them. Other
|
||
characters are taken as keystrokes, and act exactly as if you
|
||
had typed them.
|
||
|
||
When the spreadsheet is executing a macro, it stops when
|
||
1) It encounters an empty cell, or one which is not a string,
|
||
or which is the empty string "".
|
||
2) an error occurs while trying to parse a command name, or a
|
||
command's arguments.
|
||
3) All the cells in the region have been executed.
|
||
|
||
The top-left cell in a region is executed first, then the one
|
||
below it, down to the bottom cell in the macro, then the one
|
||
to the right of the top-left cell, down to the bottom cell in
|
||
that column, etc. . .
|
||
|
||
Macros may execute other macros.
|
||
|
||
g ^xg goto-cell Asks for a cell to go to, and moves the cell cursor
|
||
there. The cell can be either a cell name as in 'R32C96',
|
||
or a variable. This command starts with a default of
|
||
wherever the cursor was the last time this command was used.
|
||
If you type a range, the cursor is placed in the top-left
|
||
corner of the range, and the cell-mark is placed at the
|
||
opposite corner of the region.
|
||
|
||
^@ mark-cell Mark one corner of a rectangular region to use for
|
||
the next command. (The cell cursor marks the other corner.)
|
||
You can use this while a command is prompting you for a
|
||
region by moving to one corner, typing ^@, moving to the
|
||
other corner, and hitting <RETURN>.
|
||
|
||
e edit-cell Edit the formula of the current cell.
|
||
|
||
E edit-value-cell Edit the value of the current cell. Using
|
||
this command will replace the current cell's formula with a
|
||
constant expression.
|
||
|
||
|
||
f format-cell Change the format, alignment, or protection of the
|
||
current cell, or the width of the current column. If the
|
||
status line is enabled, the current alignment, format,
|
||
protection, and width will be displayed there.
|
||
|
||
x delete-cell This deletes the (value, formula, format, etc) of the
|
||
current cell. To delete just the value and formula, use
|
||
<space><return>.
|
||
|
||
= edit-cell-with-default Enter a formula for the current cell with the
|
||
default text of the last formula you typed.
|
||
|
||
M-0 digit-0 Repeat the next command [digits] times.
|
||
M-1 digit-1 You can type multiple digits, as in
|
||
M-2 digit-2 M-1 0 0 j
|
||
M-3 digit-3 which will go down 100 cells. This command uses the
|
||
M-4 digit-4 digit-map so that you the second and subsequent digits
|
||
M-5 digit-5 do not need to be meta-ized.
|
||
M-6 digit-6
|
||
M-7 digit-7
|
||
M-8 digit-8
|
||
M-9 digit-9
|
||
|
||
0-9 enter-text-in-cell Enter a new formula that begins with the
|
||
character typed. Note that this blows away whatever was
|
||
saved as a default from the last time you entered a formula.
|
||
|
||
O show-options This shows the current state of all the spreadsheet
|
||
options, and also shows the current definitions for all the
|
||
user-defined variables.
|
||
|
||
^X-2 split-window-vertically
|
||
^X-5 split-window-horizontally
|
||
These commands divide the current window in half.
|
||
^X-0 delete-window
|
||
Delete the current window.
|
||
^X-1 delete-other-windows
|
||
Delete all but the current window.
|
||
^X-o other-window
|
||
Move to the next window. Repeated, this will visit
|
||
all the windows.
|
||
|
||
M-W open-window This command takes a line beginning with the letter
|
||
'h' (for horizontal), or 'v' (for vertical), followed by the
|
||
number of lines/columns to leave in the current window.
|
||
The cell cursor is placed in the new window.
|
||
|
||
M-C close-window This takes the number of a window to close, and makes
|
||
it go away. The surrounding window(s) expand to fill the
|
||
space the window occupied.
|
||
|
||
M-G goto-window This takes the number of a window to go to, and
|
||
places the cell-cursor in that window.
|
||
|
||
Oleo uses the character ^\ to prefix mouse commands. The default
|
||
bindings in the mouse map are:
|
||
|
||
0 mouse-goto
|
||
Move to the pointed to cell.
|
||
1 mouse-mark
|
||
Mark the pointed to cell without moving.
|
||
2 mouse-mark-and-goto
|
||
Mark the current cell, and move to the pointed to cell.
|
||
|
||
The numbers correspond to X button numbers (usually 0 is the leftmost
|
||
button on the mouse).
|
||
|
||
Displaying Cell Contents:
|
||
|
||
If a cell contains a number or string that takes more characters than the
|
||
width of the cell to display, the display may slop over into the cell(s) to the
|
||
right. This does not affect the slopped over cells in any way. Only cells
|
||
that are empty, or have their format set to hidden, will be slopped over.
|
||
|
||
If there isn't room to display a number, a series of '#', will appear in the
|
||
cell.
|
||
|
||
If there isn't room to display any other value, only the characters that fit
|
||
(less one, so there'll be a space separating cells) will be displayed.
|
||
|
||
Numeric formats:
|
||
|
||
Oleo can display numbers in a variety of formats. In addition to the sixteen
|
||
user-defined formats, you can use:
|
||
|
||
integer The number is rounded to an integer before being displayed.
|
||
|
||
float The number is displayed in normal, everyday notation, using
|
||
whatever precision is needed (or fits).
|
||
|
||
hidden The number is not displayed. It is recalculated, etc as
|
||
normal, but the cell is displayed as if it were empty.
|
||
|
||
graph The number is displayed as a small graph. If the number is
|
||
close to zero, it will be displayed as '0', If it is positive,
|
||
a row of '+'-es is displayed. If it is negative, a row of
|
||
'-'-es is displayed.
|
||
|
||
user-1 through These are the sixteen user-defined formats, as described
|
||
user-16 below.
|
||
|
||
The following formats require a precision. The precision may be a number
|
||
from zero to 14, in which case that number of digits will always be displayed
|
||
after the decimal point (zero-padding or rounding the number as needed), or
|
||
the precision may be 'float', in which case oleo will use as many digits as
|
||
necessary. As examples:
|
||
|
||
dollar.2 display like ``$1,769.00''
|
||
general.float " " ``1769.00032''
|
||
|
||
|
||
|
||
general This uses either normal or scientific notation, depending on
|
||
the magnitude of the number and the width of the column.
|
||
|
||
dollar Positive values are preceeded by '$', (so 3 is displayed as
|
||
'$3'). Negative values are parenthasized (so -3 is displayed
|
||
as '($3)'), and all large values have a ',' every three
|
||
digits (so 1000 is displayed as '$1,000'.
|
||
|
||
comma Positive numbers are not preceede by '$', but this is
|
||
otherwise identical to 'dollar'.
|
||
|
||
percent The value is multiplied by 100, and is displayed with a
|
||
trailing '%'. Thus .01 displays as '1%', while 1 displays as
|
||
'100%'.
|
||
|
||
fixed The number is displayed in normal, everyday notation, using
|
||
the precision specified. 'fixed.float' is the same as
|
||
'float'. 'fixed.0' is the same as 'integer'.
|
||
|
||
exponent The number is displayed in scientific notation.
|
||
|
||
|
||
User-defined numeric formats:
|
||
|
||
You can set up to sixteen user-defined numeric formats:
|
||
|
||
The current parts of a format are:
|
||
(Using the 'dollar' format for an example.)
|
||
|
||
Example: What it is:
|
||
$ What to print before postive numbers.
|
||
( What to print before negative numbers.
|
||
What to print after positive numbers.
|
||
) What to print after negative numbers.
|
||
$0 What to print if the number is zero.
|
||
, What to print between the thousands and the
|
||
hundreds, etc.
|
||
. What to print for a decimal point.
|
||
|
||
0-14 or float The number of digits to print after the decimal point.
|
||
'float' means use however many digits are needed, or
|
||
however many will fit, whichever is less. . .
|
||
|
||
any-number What to multiply the value by before printing.
|
||
Most often this will be one, but it might be 100 if
|
||
you're printing percentages, or .000001 if you're
|
||
printing in megabucks. (Beware of overflow!)
|
||
|
||
Do not use digits for the headers, trailers, the comma, or the decimal point
|
||
symbol. Using digits will confuse the internal routines and produce
|
||
incomprehensible results. . . (Should the set-user-format command check its
|
||
input for validity?)
|
||
|
||
Other Cell Formatting Options:
|
||
|
||
Values in a cell may be displayed aligned flush with either the left or right
|
||
edges of the cell, or centered in the cell. The default is left-aligned.
|
||
|
||
The width of a column of cells may be set to any non-negative value. A value
|
||
of zero means that cells in that column won't be displayed, and the normal
|
||
cursor-motion commands will skip over those cells. However, you can position
|
||
the cursor on a non-displayed cell by using the goto-cell command.
|
||
|
||
If the width of a column is wider than the display, it is displayed as if it
|
||
were the width of the display.
|
||
|
||
|
||
Currently Supported Options:
|
||
|
||
(no)a0 In a0 mode, Oleo uses {letters}{digits} style cell-references,
|
||
like some popular spreadsheets.
|
||
In noa0 mode, Oleo uses R{digits}C{digits} style references,
|
||
like some other popular spreadsheets.
|
||
|
||
(no)auto In auto mode, cells whose values may have chaged are
|
||
automatically recalculated. In noauto mode, cells are only
|
||
recalculated when the recalculate command is used.
|
||
|
||
(no)background In background mode, automatic recalculation is done while
|
||
(no)bkgrnd the spreadsheet waits for you to type a key (and stops while
|
||
the key is being handled). In nobackground mode, oleo
|
||
performs all its recalculation before listening for
|
||
keystrokes. . .
|
||
|
||
(no)backup In backup mode, whenever the spreadsheet writes out a file,
|
||
if the file already exists, a backup copy is made (like
|
||
emacs).
|
||
|
||
(no)bkup_copy In nobackup mode bkup_copy is ignored. In bkup_copy mode,
|
||
backup files are made by copying the original file, instead of
|
||
renaming it.
|
||
|
||
ticks (number) This value controls how often should rnd(), cell(), my(),
|
||
curcell(), etc cells get updated. This value is in seconds
|
||
(???). The initial value is 10 seconds.
|
||
|
||
print (number) This is the width of the page for the print command. The
|
||
initial value is the width of the screen.
|
||
|
||
file (format-name) If -DUSE_DLD was defined, format-name may be any .o file
|
||
that contains definitions for the appropriate functions, or
|
||
'panic', which is the only file format that oleo will have
|
||
compiled into it. If -DUSE_DLD was not defined, format-name
|
||
must be one of sylk, sc, panic, or list, and oleo will have
|
||
to be re-compiled before any other formats may be used.
|
||
|
||
load (file-name) This option is only avaliable if oleo was compiled with
|
||
-DUSE_DLD. This option loads in a .o file of spreadsheet
|
||
functions, keyboard commands, and/or keymaps. Spreadsheet
|
||
functions and keyboard commands must be loaded in before they
|
||
can be used in expressiond or bound to keys.
|
||
|
||
status (number) This option controls which line on the screen is used for
|
||
displaying the status of the current cell. The number may be
|
||
positive, (counting down from the top), negative (counting up
|
||
from the bottom, or zero (disabling the status line).
|
||
|
||
input (number) This option controls which line on the screen is used for
|
||
reading lines of text. The number may be positive (counting
|
||
down from the top), or negative (counting up from the
|
||
bottom), but not zero.
|
||
|
||
The following options affect the currently active window:
|
||
|
||
(no)page Basically, in page mode, whenever a paticular cell is
|
||
displayed in the window, it will always be in the same
|
||
location on the screen. In page mode, the recenter command
|
||
acts just like the redraw-screen command.
|
||
|
||
(no)pageh These options turns on or off page mode only in
|
||
(no)pagev the horizontal or vertical axis.
|
||
|
||
link (wnum) This option 'links' the current window with the one
|
||
specified. A window may only be linked to one other window
|
||
at a time. When a window is linked to another one, whenever
|
||
the cell cursor in the first window is moved, the cursor in
|
||
the other window moves as well. (unless the cursor in other
|
||
window is locked from moving in that diretion.)
|
||
|
||
(Should linking to a window force that window to link
|
||
back? That might make life easier for naive users.)
|
||
|
||
nolink This removes the link (if any) on the current window.
|
||
unlink
|
||
|
||
(no)lockh These options prevent the cell cursor in the current window
|
||
(no)lockv from moving in the horizontal or vertical direction, but only
|
||
when the cell cursor is moved in a window that this one is
|
||
linked.
|
||
|
||
|
||
(no)edges In edges mode oleo displays Row and Column numbers at the top
|
||
and left edges of the window. Perhaps edges should be split
|
||
into edgeh and edgev?
|
||
|
||
(no)standout In standout mode, the edges (see (no)edges) are drawn in
|
||
standout mode (reverse video, usually).
|
||
|
||
|
||
Options supported by the list file format:
|
||
|
||
list ch Use the character CH to separate the cell values.
|
||
|
||
|
||
File names:
|
||
|
||
If a file name begins with a '|', the rest of the name is taken as a command,
|
||
which oleo opens a pipe to. So you can use the name '|zcat file.Z' to read
|
||
a compressed spreadsheed, or '|compress > file.Z' to write one.
|
||
|
||
|
||
Using Oleo with X11
|
||
|
||
If your system has libX11, Oleo will be built with X support. If you run
|
||
Oleo with the DISPLAY environment variable set, Oleo will open an X window
|
||
instead of using curses.
|
||
|
||
Under X, cells are normally displayed in the default font. You can
|
||
change that font using the set-default-font command. The value you
|
||
specify may include wild cards, especially for the point size of the
|
||
font. You can change the font used for specific areas of a
|
||
spreadsheet using the commands `set-cell-font' and `set-region-font'.
|
||
|
||
Font Specifications
|
||
|
||
The easiest way to specify a font is to use one of the built in
|
||
short-hand names. These names are `fixed', `times', and `courier'.
|
||
Optionally, these names can be followed by a scale. The scale is the
|
||
ratio of the default point size to the desired point size. For
|
||
example, if the default font is a 10 point font, then `times 1.2'
|
||
refers to a 12 point Times-Roman type font.
|
||
|
||
Every font has a long name that can also be used in specifications.
|
||
The long name has three parts: an X name, a PostScript(*) name, and a
|
||
scale. The X name and PostScript may be omitted. The shorthand name
|
||
`times 1.2' is the same as the long name:
|
||
|
||
*times-medium-r-*, Times-Roman, 1.2
|
||
|
||
Notice that the size is left wildcarded in the X name. This is not
|
||
absolutely necessary, but if it is done Oleo can resize the font
|
||
should the size of the default font change (the command
|
||
set-default-point-size does this).
|
||
|
||
New short hand names can be defined using the `define-font-name'
|
||
command. Later, if a user uses a shorthand name in a font
|
||
specification, the name is replace by the text of the definition. For
|
||
example, here is a standard definition from init.c:
|
||
|
||
define-font-name time *times-medium-r-*, Times-Roman
|
||
|
||
Notice that the scale has been omitted. That is so that
|
||
specifications like `times 1.2' will be properly expanded.
|
||
|
||
X resources and command line options.
|
||
|
||
Oleo doesn't yet recognize and .Xdefault resources or X specific
|
||
command line options. It will in a future release.
|
||
|
||
|
||
(*) PostScript is a trademark of Adobe Systems Incorporated.
|
||
|
||
|
||
PostScript Printing
|
||
|
||
|
||
Oleo can generate an embedded postScript redition of any part of a
|
||
spreadsheet. Using the commands outlined in `Using Oleo with X11',
|
||
you can control the fonts used in the printed output.
|
||
|
||
The command `psprint-region' takes a range and file name as arguments.
|
||
It writes embedded postScript to the file.
|
||
|
||
Oleo will make the output as large as possible to fit the page. You
|
||
can change the page size using the command `set-page-size'. For
|
||
example, the default setting is `set-page-size 8.5 x 11'. To specify
|
||
a page size in centimeters, use: `set-page-size 20 x 30 c'.
|
||
|
||
The command `set-default-ps-font' controls the default font for cells.
|
||
For example, the initial value is `set-default-ps-font Times-Roman'.
|
||
|
||
|
||
Formulae:
|
||
|
||
Numbers must be entered in 'general' format:
|
||
[-]digits[.digits][e[-]digits]
|
||
|
||
Strings are entered surrounded by double-quotes. To include unusual
|
||
characters, you can either use \char (works well for ") or use
|
||
\nnn where nnn is the octal code for the character you want to include.
|
||
|
||
Magic constants:
|
||
|
||
Note that oleo automatically converts the names of constants to upper case,
|
||
but they can be entered in any case.
|
||
|
||
#TRUE The logical TRUE value
|
||
#FALSE The logical FALSE value
|
||
|
||
#ERROR Various error types.
|
||
#BAD_INPUT
|
||
#NON_NUMBER
|
||
#NON_STRING
|
||
#NON_BOOL
|
||
#NON_RANGE
|
||
#OUT_OF_RANGE
|
||
#NO_VALUES
|
||
#DIV_BY_ZERO
|
||
#BAD_NAME
|
||
#NOT_AVAIL
|
||
#PARSE_ERROR
|
||
#NEED_OPEN
|
||
#NEED_CLOSE
|
||
#NEED_QUOTE
|
||
#UNK_CHAR
|
||
#UNK_FUNC
|
||
|
||
#INF Various trancendental values. On some machines,
|
||
#INFINITY (like the vax), these may all be the same value.
|
||
#NAN
|
||
#NOT_A_NUMBER
|
||
#NINF
|
||
#MINUS_INFINITY
|
||
|
||
|
||
Infix functions:
|
||
|
||
- num 0-num
|
||
! bool #TRUE if bool is #FALSE
|
||
#FALSE if bool is #TRUE, error otherwise.
|
||
|
||
num1 ^ num2 Exponentiation This is *right* associative!
|
||
num1 * num2 Multiplication Note that these functions are not as
|
||
num1 / num2 Division good as they should be at detecting
|
||
int1 % int2 Modulus overflow. There *is* code that should
|
||
|
||
num1 + num2 Addition force integer expressions to become
|
||
num1 - num2 subtraction floating-point if the result wouldn't
|
||
fit in an integer.
|
||
num1 >= num2 Arithmatic greater-or-equal
|
||
num1 > num2 greater-than
|
||
num1 < num2 less-than
|
||
num1 <= num2 less-than-or-equal
|
||
|
||
val1 = val2 #TRUE if val1 and val2 can be considered equal.
|
||
#FALSE otherwise
|
||
val1 != val2 Equivelent to !(val1=val2)
|
||
|
||
str1 & str2 Text concatination.
|
||
|
||
bool ? val1 : val2 if(bool==#TRUE)
|
||
evaluate val1
|
||
else if(bool!=#FALSE)
|
||
error...
|
||
else
|
||
evaluate val2.
|
||
|
||
( val ) (To override default precedence) Note that since oleo
|
||
stores expressions in a byte-compiled form, excess
|
||
parens will mysteriously vanish.
|
||
|
||
|
||
Prefix functions:
|
||
|
||
In 'a0' mode, all prefix functions have '@' prepended to their names.
|
||
|
||
if(bool,val1,val2) if(test==#TRUE)
|
||
evaluate val1
|
||
else if(test!=#FALSE)
|
||
error...
|
||
else
|
||
evaluate val2.
|
||
and(bool1,bool2) if(val1==#FALSE)
|
||
#FALSE
|
||
else if(val1!=#TRUE)
|
||
error...
|
||
else val2;
|
||
or(bool1,bool2) if(val1==#TRUE)
|
||
#TRUE
|
||
else if(val1!=#FALSE)
|
||
error...
|
||
else val2;
|
||
pi() 3.14159265358979326848
|
||
row() The row number of the cell the expression is in.
|
||
col() The column number of the cell the expression is in.
|
||
now() The current time in seconds since Jan 1 1970 (?)
|
||
abs(num) The absolute value of num.
|
||
acos(num) The arc-cosine of num (num in radians)
|
||
asin(num) The arc-sine of num (num in radians)
|
||
atan(num) The arc-tangent of num (in radians)
|
||
int(num) Convert to integer (toward zero)
|
||
ceil(num) Convert to integer (round up)
|
||
floor(num) Convert to integer (round down)
|
||
cos(num) The cosine of num (in radians)
|
||
dtr(num) num degrees in radians
|
||
exp(num) The exponential function of num
|
||
log(num) The natural log of num
|
||
log10(num) The log of num to base 10
|
||
rtd(num) num radians in degrees
|
||
sin(num) The sine (in radians) of num
|
||
sqrt(num) The square-root of num
|
||
tan(num) The tangent (in radians) of num
|
||
rnd(num) A random number from 0 to num-1
|
||
negate(num) 0-num
|
||
not(bool) #TRUE if bool is #FALSE
|
||
#FALSE if bool is #TRUE, error otherwise.
|
||
iserr(val) #TRUE if the expression is an error
|
||
else #FALSE
|
||
isnum(val) #TRUE if the expression is a number, or can be
|
||
automatically converted into a number, thus
|
||
isnum("12") is #TRUE, while isnum("12 ") is
|
||
#FALSE. (This might be worth fixing.)
|
||
rows(rng) number of rows in rng.
|
||
cols(rng) number of columns in rng.
|
||
ctime(num) Convert num into a readable date/time string.
|
||
atan2(num1,num2) Two number arctangent
|
||
hypot(num1,num2) use man 2 hypot
|
||
fixed(num1,num2) num1 rounded to num2 decimal places
|
||
|
||
index(rng,int) the contents of the int-th cell in rng.
|
||
index(rng,num1,num2) The contents of the int1-th down and int2-th
|
||
over cell in rng
|
||
oneof(int,val1,val2,val3...) switch(int) {
|
||
case 1: val1;
|
||
case 2: val2;
|
||
...
|
||
default: error;
|
||
}
|
||
|
||
For the following functions, arguments that are ranges are scanned
|
||
for numeric values only. Strings, error values, empty cells, etc, are ignored.
|
||
All these functions except cnt() will give a #NO_VALUES error if it does not
|
||
find any numbers. You can give most of the functions an explicit value if
|
||
you don't want to get a #NO_VALUES error. For example, if you want to add
|
||
up the range r1:20c5, and return 0 if there are no numbers there,
|
||
'sum(0,r1:20c5)' will work.
|
||
|
||
Strings, etc, that are explicitly given to the functions are subjected to the
|
||
usual conversion.
|
||
|
||
sum(vr1...) ...
|
||
prod(vr1...) ...
|
||
avg(vr1...) ...
|
||
std(vr1...) The SAMPLE standard deviation. To get the population
|
||
standard deviation, use sqrt(var(...))
|
||
max(vr1...) ...
|
||
min(vr1...) ...
|
||
cnt(vr1...) The number of numeric values found.
|
||
var(vr1...) The POPULATION variance. To get the sample variance,
|
||
use std(...)^2
|
||
|
||
These functions are in the 'string' package. If oleo is compiled with
|
||
-DUSE_DLD, the string package must be loaded before these functions can be
|
||
used. If a spreadsheet that uses these functions is loaded before the
|
||
string package is loaded, things will fail (silently!) (This is probably a
|
||
bug.
|
||
|
||
len(str) length of string in characters.
|
||
strupr(str) string converted to upper case
|
||
strlwr(str) string converted to lower case
|
||
strcap(str) string with each word capitalized.
|
||
trim(str) string with extra spaces and non-ascii chars
|
||
removed.
|
||
find(str1,str2,int) return the location where str2 appears in
|
||
str1, start looking at character #int
|
||
substr(int1,int2,str) The characters in string from position int1
|
||
to position int2. Positions can be either
|
||
positive (First character is #1, last char is
|
||
#(length of string)) or negative(last
|
||
character is #-1, first character is #-(length
|
||
of string)).
|
||
mid(str,int1,int2) The characters in string from int1 (counting
|
||
from the beginning) continuing for int2 chars.
|
||
edit(str,int1,int2,...) Remove the text from int1 to int2 in string
|
||
and replace it with ... (zero or more strings)
|
||
int1 and int2 are like for substr() above.
|
||
repeat(int,str) str repeated int times, thus repeat(2,"foo")
|
||
returns "foofoo"
|
||
concat(vr1,...) Concatinate strings, ranges, etc.
|
||
|
||
|
||
These functions are in the 'cells' package. If oleo is compiled with
|
||
-DUSE_DLD, the cells package must be loaded before these functions can be
|
||
used.
|
||
my(str) String: Returns:
|
||
row row()
|
||
column col()
|
||
width The width of the column containing
|
||
this cell.
|
||
lock "locked" or "unlocked"
|
||
protection ditto
|
||
justify "left" "right" "center" or "default"
|
||
alignment ditto
|
||
format "default" "user-1" etc.
|
||
fmt ditto.
|
||
type "error", "boolean", "float",
|
||
"integer", "null", "Unknown",
|
||
etc.
|
||
formula A string of the cell's current
|
||
formula.
|
||
value The cells current value.
|
||
anything-else error--> #BAD_INPUT
|
||
|
||
curcell(str) Like my(), but for the cell under the
|
||
cell-cursor in the current window.
|
||
|
||
cell(int1,int2,str) Like my(), but for the cell at Rint1Cint2.
|
||
|
||
member(rng,val) The number of the first cell in RNG that contains
|
||
VAL, or zero if no cells contain it.
|
||
|
||
|
||
These next four functions could probably be replaced by a pair of smart
|
||
regex routines. . .
|
||
|
||
smember(rng,str) The number of the first cell in RNG that contains a
|
||
substring of STR, or zero if no cell contains one.
|
||
|
||
members(rng,str) The number of the first cell in RNG whose value is
|
||
a substring of STR.
|
||
|
||
pmember(rng,str) The number of the first cell in RNG whose value
|
||
equals the first few characters of STR.
|
||
|
||
memberp(rng,str) The number of the first cell in RNG whose value
|
||
starts with STR.
|
||
|
||
hlookup(rng,num,int) Scan through the top row of RANGE looking for a
|
||
number which is greater than NUM. Then return the
|
||
value in the cell that is INT rows down from the top
|
||
of the range.
|
||
|
||
vlookup(rng,num,int) Like hlookup, but scans the left column
|
||
and returns the value in the cell that is INT
|
||
columns over from the left edge of the range.
|
||
|
||
vlookup_str(rng,num,str)Like vlookup, but scans the left column
|
||
for a string. The column need not be sorted.
|
||
|
||
These functions are in the 'busi' package. If oleo is compiled with
|
||
-DUSE_DLD, the busi package must be loaded before these functions can be
|
||
used.
|
||
|
||
pmt(p,r,t) Payment per period for a loan of $P at rate R for T
|
||
payments.
|
||
|
||
pv(pmt,int,term) Present value of an investment that pays $PMT at the
|
||
end of each of TERM periods with a discount rate (interest) of INT.
|
||
|
||
npv(rng,rate) Net Present Value of an investment which will pay
|
||
uneaven payments. The term is calculated from the number of cells in
|
||
RNG. .
|
||
|
||
irr(rng,guess) Internal Rate of Return. This function is paticularly
|
||
untested, and should not be trusted.
|
||
|
||
fv(pmt,int,term) Future Value of an annuity.
|
||
|
||
rate(fut,pres,term) Interest rate required to turn $PRES into $FUT in
|
||
TERM periods.
|
||
|
||
term(pmt,int,fut) Number of periods required to collect $FUT in
|
||
payments of $PMT, where depositd payments earn at a rate of INT.
|
||
|
||
cterm(int,fut,pres) Number of periods required to collect $FUT from a
|
||
single initial deposit of $PRES, at an interest rate of INT.
|
||
|
||
sln(cost,scrap,life) Straight line depreciation of an asset that cost
|
||
$COST when new, can be sold for $SCRAP, and will last for LIFE
|
||
periods.
|
||
|
||
syd(cost,scrap,life,per) Sum-of-the-digits depreciation of an asset
|
||
that cost $COST, can be sold for $SCRAP and lasts LIFE, in period PER.
|
||
|
||
ddb(cost,scrap,life,per) Double-declining-balance deprecion, otherwise
|
||
similar to syd().
|
||
|
||
anrate(pmt,pres,term)
|
||
anterm(pmt,prin,rate)
|
||
balance(prin,rate,term,period)
|
||
paidint(prin,rate,term,period)
|
||
kint(prin,rate,term,period)
|
||
kprin(prin,rate,term,period)
|
||
compbal(print,rate,term)
|