HELP BROWSESELF_MESSAGE Mark Rubinstein April 1986
<object> <- browseself;
This library provides a "browser" for the flavour package (for full
details of the package see TEACH * FLAVOURS). The library makes use of
*SEETREE and *SHOWTREE and as a consequence can take a while to load, but
by default it is built into the flavours saved image.
Once loaded you can "browse" through a network of instances, examine the
flavour class-hierarchy, metaflavour class-heirarchy and get some
information about the definition of a flavour.
--- INVOKING THE BROWSER -----------------------------------------------
To invoke the browser on an instance you send the message "browseself" to
it, for example if the value of CHARLES is an object:
charles <- browseself;
Often you will find that there are some attributes which are not
particularly interesting and which you do not wish displayed when you are
browsing. You can tell the browser not to display selected instance
variables by sending the message "donotbrowse(ivar-name)" to the object or
to its metaflavour (see HELP * METAFLAVOURS). For example if you are not
interested in the age of people you can do
person_flavour <- donotbrowse("age");
(assuming that instances of people have an instance variable called AGE).
This will be effective for all instances which have PERSON as part of
their flavour hierarchy. You can make the browser display AGE slots again
by doing:
person_flavour <- dobrowse("age");
--- USING THE BROWSER --------------------------------------------------
When you are browsing an instance you will be shown a tree diagram in VED
with boxes representing each of the object's instance variables and their
value. You can move to one of the boxes or values using the VED cursor
control keys. You can quit from the browser by using the key strokes you
would normally use for going to the end of the file. For details of how
to explore the tree see HELP * SEETREE. If the values of an instance
variable is itself an object then you can either switch to browsing it, or
get the browser to browse both the current object and the tree for the
selected instance variable.
When you are on a box there are three keys which have a special function.
ENTER KEY This will make the browser display the tree for the
instance in the box under the cursor in the position where
the box is. In order to do this *SHOWTREE has to
completely replan how the tree should be shown so the
screen will go blank while it is planning, and then the new
expanded tree will be displayed. SHOWTREE will take
longer as the tree becomes bigger.
RETURN KEY (Sometimes called the DOCR key). This will make the
browser select the instance for the box under the cursor
and browse upon it. The tree above and to the left and
right of this box will not be displayed. This allows you
to "re-centre" your focus of attention and will speed up
SHOWTREE's thinking time.
CHARDELETE KEY This will include the instance variable under the box
in the list of unintersting instance variables so that you
can trim the amount of information the browser shows about
the current kind of object. (This uses the DONOTBROWSE
message mentioned above). The display will not be altered
immediately but future instances of the same flavour will
not include displays for this instance variable.
REDOCOMMAND KEY This will cause the flavour browser to be invoked on
the flavour of the current instance. When you quit from
the flavour browser (using the ENDFILE key) you will be
returned to browsing the instances.
While you are browsing flavours most of these special keys have no effect
except for the REDO key which will switch to browsing the metaflavour
heirarchy and the RETURN (or DOCR) key which will cause the browser to put
a new file in the ved buffer with an example of how the flavour might have
been defined, this is to say it will have the headers for the flavour and
all the methods and daemons but it cannot reproduce that actual code of
the methods and daemons. You cannot examine the file until you have left
the browser.
--- OTHER UTILITIES PROVIDED -------------------------------------------
The browser adds several messages to the protocol of vanilla_flavour and
metaflavour_flavour that might be of interest. These are as follows.
-- New Protocol for vanilla_flavour ------------------------------------
browsetree
Returns a tree (embedded list structure) which would be used to
display the instance - this is with sub-lists for slots and their
values apart from those that have been made invisible with the
donotbrowse message q.v.
donotbrowse(ivar-name)
Notes ivar-name as an invisible instance-variable. Will not be
displayed by the browser.
browseself
Invokes the browser or -self-.
browsemyflavour
Invokes the browser on -myflavour-.
-- New Protocol for metaflavour_flavour --------------------------------
browsetree
Returns a tree (as above) for the flavour.
browseself
Invokes the browser on -self-.
browsemyflavour
Invokes the browser on -myflavour-.
dodisplayself
(Used by displayself message). Prints out the skeleton of the flavour
definition.
displayself
Print out skeleton into a temporary file and edit the file.
-- New Protocol for flavour_flavour ------------------------------------
donotbrowser(ivar-name)
Note ivar-name to be an invisible instance variable.
dobrowse(ivar-name)
Make ivar-name become visible again.
--- A WORD OF WARNING --------------------------------------------------
The browser is new and experimental never the less it has been found to be
useful for sorting out some problems. There are problems with it and I
still not convinced that the last feature of decomposing a flavour record
is useful or does the right thing yet. I would appreciate feedback of all
kinds.
See also
TEACH * FLAVOURS, for full details of the flavour system
HELP * SEETREE, * METAFLAVOURS.Author: Mark Rubinstein April 1986