[Date Prev][Date Next][Thread Prev][Thread Next][Author Index][Date Index][Thread Index]
:zz: THE ZIGZAG COMMANDS for Version 0.49 (zzDirex0629d6.html
- To: zigzag@xxxxxxxxxx, zzdev@xxxxxxxxxx
- Subject: :zz: THE ZIGZAG COMMANDS for Version 0.49 (zzDirex0629d6.html
- From: Ted Nelson <ted@xxxxxxxxxx>
- Date: Tue, 30 Jun 1998 04:08:09 +0900
- Cc: ted@xxxxxxxxxxxxxx
- Reply-to: zigzag@xxxxxxxxxx
zzDirex0629d6.html
98.06.29
To Ted Nelson home page
To Xanadu home page
Xanadu(R) ZigZag(tm) Hyperstructure Kit
THE ZIGZAG COMMANDS for Version 0.49
(c) 1997, 1998 Project Xanadu.
System designed by Ted Nelson, programmed by Andrew Pam.
These instructions by TN.
THIS INTERFACE WAS DESIGNED AS A QUICK HACK.
The fact that it works quite well has been kind of a surprise.
This is not "the final system" in any sense.
The later system *as designed* will do many more things,
much more easily.
However, this implementation works surprisingly well,
and demonstrates some of the real powers of the general system.
So we can say "imagine a better interface." As well as
some of the more advanced functions.
But you don't have to imagine-- you can see-- the
fascinating space and structures this system makes
possible.
- - - - -
THIS INTERFACE:
RULES FOR CAPITALIZING THE COMMANDS
Basic principle of command capitalization:
lower-case is for the more important and more often used
places and functions (esp. right window, but also forward)
upper-case (which is slightly more trouble)
is for the slightly less important and slightly less often used
places and functions (esp. left window, but also backward).
- - - - -
FIRING IT UP
You must have Perl 5 and the curses/perl interface installed.
(See installation instructions at www.xanadu.net/zigzag.)
To fire it up: Long form invocation:
perl zigzag.txt dataset-name[optional]
This can be easily aliased for convenience,
shortening the invocation into (for example)
"zigzag" or "zz".
You then see whichever data set you have named
in exactly the view you last saw it (including cursor positions).
If you do not specify a data set (zigzag.data)
and a file by that name does not exist,
such a file will be created when the system is fired up.
If you do not specify a data set (zigzag.data)
and a file by that name already exists,
it will come up in exactly the view you last saw it
(including cursor positions).
- - - - -
EDITING A CELL
Control k opens a cell for editing. It opens in
some Unix editor, such as vi, emacs or mule
(specifiable in the code).
- - - - -
VIEWS:
QUAD VIEWS
You may quickly see the text contents of a cell in the
right-hand window by typing q and in the left-hand
window by typing Q. These are toggles, closed again
with the same key.
VIEWING AXES
There are three viewing axes: x, y and z.
The current view in each window maps the cell structure
to the viewing axes, assigning these three axes to
whatever structure dimensions you specify.
STRUCTURE DIMENSIONS
The cell structure may have any number of dimensions,
though the system begins with only seven (d.1, d.2, d.3,
d.cursor, d.clone, d.mark, d.contain, d.contain2).
(The functions of these are explained at the end.)
VIEWING THE STRUCTURE DIMENSIONS
You may quickly change the mapping of the ZigZag world's
dimensions to the window's viewing axes.
Typing x, y or z in lower case causes the view in the
right window to step by one dimension on the
specified viewing axis (x, y or z). Typing X, Y or Z in upper
case causes the view in the left window to step by one
dimension in the specified viewing axis (X, Y or Z).
VIEW MODES (presentation sequences, or "rasters")
A window currently has two possible view modes:
"I view" (rows connected by a single column, like the
capital letter I) and "H view" (columns connected by a
single row, like the capital letter H).
Changing the view mode does not change the structure,
or the mapping of the structure to the viewing dimensions.
It changes the sequence of presentation of the cells,
beginning with the accursed cell (center of presentation)
and following some chosen presentational sequence outward.
I and H views are very simple and basic, but many other
programmable viewing modes are possible.
- - - - -
ARROWS AND VIRTUAL ARROWS
The "arrow" keys are--
(these make more sense to your hand than reading them):
REAL arrows (which control the right cursor) or
esfc (which control the left cursor) or
ijl, (which control the right cursor) or
d (forward left cursor = negward on Z)
or D (backward left cursor = posward on Z) or
k (forward right cursor = negward on Z) or
K (backward right cursor = posward on Z).
NUMBERS
The number of the accursed cell appears in the lower right
corner of its window.
If you type a number as the argument for a command,
that number appears at the lower left in the left window.
Backspace can correct a mistyped cell number.
- - - - -
COMMANDS
Some of these commands may be used with arguments--
arrows, numbers or both.
In some cases you may type a number before a key,
affecting the result.
In other cases typing a number before a key has no result.
g
Go Home (right cursor)
# g
Go to cell of that number (right cursor)
G
Go Home (left cursor)
# G
Go to cell of that number (left cursor)
arrow
Move cursor
# arrow
Connect specified cell to accursed cell. If nothing is connected
to the cursor in that direction and the appropriate side
of the specified cell is free, the connection will take place.
If the cursor already has a neighbor in the specified direction,
*but* the specified cell is *unconnected on both sides*
of the specified direction, the cell will be connected between
the cursor and its present neighbor.
Note that if "# arrow" is one of the following, it may be difficult
to see the result: # d, # D, # k, # K. These connect the accursed
cell to the specified cell in the forward or back direction.
t
Clone ("transclude"), right window.
T
Clone ("transclude"), left window.
What it does is make a new instance of the left or right
accursed cell. The new instance becomes accursed,
but unconnected to anything and alone in its window.
(Since it is easy to lose this cell, you may want to
write down its cell number before doing anything else.)
- - - - -
DELETIONS
The "delete" key deletes a cell, as does the delete cell
on the menu. However, deleted cells are not actually
annihilated; they become stored +d.2ward from the "Midden" cell.
("Midden" is a name still used in Australia for "trashheap".)
- - - - -
DIMENSION FUNCTIONS.
Structure dimensions d.1, d.2 and d.3 have no assigned
functions. Think of d.1 as useful for headings, d.2 as useful
for virtual lists, d.1 and d.2 together for ordinary tables
and very interesting basket-weave structures, and d.3
as a third dimension.
The "Cursor" dimension, d.cursor, is the dimension
on which a cursor (actually a cell) is connected to
the cell it's on (the accursed cell); the user cannot change
connections on the cursor dimension, except by explicitly
moving the cursor, but the cursor dimension can be viewed
like any other dimension.
The "Clone" dimension, d.clone,
is the dimension on which a cloned cell
is always connected to its original; this connection is
enforced by the system, so you cannot disconnect a clone
from its master, though you can rearrange clones on the
clone dimension. NOTE THAT EDITING ANY
CLONE OR ITS MASTER CHANGES ALL THE OTHERS
OF ITS CHAIN-- i.e., any clones of that same master,
and the master itself, all are changed identically if any
is changed.
The "Mark" dimension (not implemented) will be for
marking cells, especially strips and groups of cells, in
preparation for some operation. The marked cells will
have other cells (marking cells) connected to them on the
Mark dimension.
The "Contain" dimension, d.contain, is the dimension
representing containment: we represent cell A as being
inside cell B by connecting it posward from B on the Contain
dimension. (In the next version it will be called d.inside.)
The "Contain2" dimension (which willl be called "d.contents"
in tne next version) allows a given cell to contain more than one thing.
Anything contained after the first cell contained is posward on
d.contain2 from the first cell contained.
By looking at these specific connections, the system quickly
determines what a cell contains or is contained by.
NOTE: you can see the contents of all the cells inside a cell
when you look at it in a quad window.
BUG: currently subcell contents are not shown correctly
in quad windows.
ADDING DIMENSIONS
REARRANGING DIMENSIONS
DELETING DIMENSIONS
It is easy to mauipulate the dimensions. Go to the dimension list,
which is negward from the home cell on d.1 and begins with "d.1".
To add a dimension: create a new cell with the dimension
name you choose. We recommend beginning it with "d.".
To rearrange the dimensions (the order in which they will
cycle when you hit keys xyzXYZ: simply rearrange the
dimension list using the "hop"command.
To delete a dimension: put the righthand cursor on a
particular cursor name and hit "delete."
WARNING: deleting d.1, d.2, d.cursor or d.clone will
probably have disagreeable results.
Note that the connections of a cell in a particular dimension
remain, whether that dimension is deleted or not. It is possible
to delete a dimension and restore it later with a dimension
of the same name, rendering those same connections operative
again.
________________________________________________________
Theodor Holm Nelson, Visiting Professor of Environmental Information
Keio University, Shonan Fujisawa Campus, Fujisawa, Japan
http://www.sfc.keio.ac.jp/~ted/ PERMANENT E-MAIL: ted@xxxxxxxxxx
Home Fax: 0466-46-7368 From USA: 011-81-466-46-7368
_________________________________________________________
Project Xanadu (Permanent)
3020 Bridgeway #295, Sausalito CA 94965
Tel. 415/ 331-4422, fax 415/ 332-0136
http://www.xanadu.net
_________________________________________________________
98.06.28
Quotation of the day:
"There are no foxholes in atheists, either." Ted Nelson, 1960s.