aboutsummaryrefslogtreecommitdiffstats
path: root/doc/expert/pre_cont
diff options
context:
space:
mode:
Diffstat (limited to 'doc/expert/pre_cont')
-rw-r--r--doc/expert/pre_cont45
1 files changed, 45 insertions, 0 deletions
diff --git a/doc/expert/pre_cont b/doc/expert/pre_cont
new file mode 100644
index 0000000..90bf9e7
--- /dev/null
+++ b/doc/expert/pre_cont
@@ -0,0 +1,45 @@
+@Section
+ @Title { "@SetContext" and "@GetContext" }
+ @Tag { cont }
+@Begin
+@PP
+As earlier sections showed, the style information contains many
+attributes: the current font, break style, colour and texture,
+and so on. It is also possible
+@FootNote { From Version 3.34 of Basser Lout. }
+to add arbitrary additional information to the style, using the
+@@SetContext symbol, and retrieve it using @@GetContext. For example,
+@ID @OneRow @Code @Verbatim {
+{dirn @Yield up} @SetContext {
+The current direction is {@GetContext dirn}.
+}
+}
+produces
+@ID @OneRow {
+{dirn @Yield up} @SetContext {
+The current direction is {@GetContext dirn}.
+}
+}
+The object to the left of @@SetContext must be a @@Yield symbol whose
+left parameter, the {@I key}, evaluates to a simple word, and whose
+right parameter, the {@I value}, may be an arbitrary object. Since
+@@Yield has high precedence it will usually be necessary to enclose
+non-trivial values in braces. The effect is to associate the value
+with the key in a symbol table throughout the right parameter of the
+@@SetContext symbol, as part of the style information. The value may
+be retrieved anywhere in this region by invoking @@GetContext with the
+key as its right parameter.
+@PP
+The value is evaluated using the style and environment where it occurs,
+not where it is used. In any case in most applications the value will
+be a simple word, independent of any style and environment, used to
+select a branch in a case expression, like this:
+@ID @OneRow @Code @Verbatim {
+{@GetContext dirn} @Case {
+ up @Yield ...
+ down @Yield ...
+}
+}
+@@GetContext reports an error if there is no value associated with
+its key in the current style.
+@End @Section