pub struct EnvField {
pub name: &'static str,
pub from: &'static str,
pub node: &'static [&'static str],
pub lua: &'static [&'static str],
pub c: &'static str,
pub doc: &'static str,
pub get: fn(&EnvFacts) -> Value,
}Expand description
One value in the host-environment reading a view gets — ui.env() in
Rust, view(env) in Lua, ctx.env() / win.env() in Node — and the
key each binding puts it under. C has no reading: a C host is the frame
driver, so it is the writer (kui_env_set, kui_env_set_window), and
its column names the argument that carries the fact in.
Env and WindowEnv are the shape; this table is the cross-binding
restatement of it, and every restatement is pinned to it rather than
trusted: schema’s tests check the rows against the two structs, the
Lua and Node key-set tests check each binding’s reading against the
lua / node columns, and kui-ffi checks the header’s two prototypes
against the c column. The frame facts a view wants at the same moment
(the viewport, the focused node) ride in the same reading and have rows
here too, marked as the frame’s rather than Env’s.
Two divergences are deliberate and named in their rows: native_controls
is the Rect the core holds in Node and a width/height at the window
origin in Lua and C, and frame_budget_ms is derived from refresh_hz
but part of the reading everywhere.
Fields§
§name: &'static strThe canonical name: the Rust field path (window.custom_chrome).
from: &'static strWhere it comes from — the Rust struct and field for a stored fact, the call for a derived or frame fact.
node: &'static [&'static str]The key path(s) it occupies in Node’s ctx.env(); empty when Node
carries the fact as a call on the context instead (the doc says
which) or not at all.
lua: &'static [&'static str]The same for Lua’s view(env) table. Two entries where Lua flattens
one fact into two keys.
c: &'static strThe C spelling: function(argument) for the setter argument that
writes it — the first thing in the cell, so kui-ffi can parse it —
or the call that reads it.
doc: &'static str§get: fn(&EnvFacts) -> ValueThe fact’s reading, as plain data: Null for “the host cannot
tell”, an enum as its wire name, a key as its integer, a rect as
{x, y, w, h}. What makes the table a reader and not only a pin —
a binding iterates the rows and asks each for its value, then
spells the key its own way, so a fact added here reaches every
reading with no reader restated beside it (the way
ThemeRole::get does for the palette).