1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
//! **Help**: what this window takes — its slash words and its keys — and then
//! what these engines answer, every op each one has a word for and what each
//! is for (bl-40ec; DESIGN §4.21; the window's half, bl-55ed).
//!
//! # The window's own words come first
//!
//! The operator who types `/help` asked THIS window. The engines' tables are
//! spelled in their own slash grammar (`/scan`, `/workflow <lineage>`), most
//! of which this box does not take, so a pane that led with them taught words
//! the menu answers *nothing here answers to that*. The window's half is read
//! off the menu's own table, so the two never disagree about a word.
//!
//! # The sixth covering pane, and the second about no focus
//!
//! `crate::ui::queue` is the first: `attention` names no workspace, so its
//! subject is every channel and the pane is the union. `help` names none
//! either, so this is that shape one noun over — its control hangs off the
//! **roster** for the same reason, and it is offered on a seat that has aimed
//! at nothing.
//!
//! # It is sectioned per channel and deliberately not merged
//!
//! Two engines on one box may be at two protocol versions, so their tables are
//! two answers and a union would say they are one thing. The section header is
//! the roster's own (`crate::ui::roster::header`), which carries the address
//! the entry dials — so two entries terminating at one listener are visible as
//! such here exactly as they are on the roster (bl-77df).
//!
//! # This is the table this seat is judged by
//!
//! `crate::snapshot::parity::roster` reads the `surface` field off the
//! vendored fixture of this same shape, because it is the one home for *which
//! ops owe every seat a discoverable interactable* (yog's `docs/PARITY.md`
//! §2). So the pane an operator reads and the ledger that reddens for a
//! missing control come off one answer, and the classification is painted
//! rather than hidden: an op marked `machine` is one nothing here owes a
//! control, and saying so is the difference between a short pane and an
//! incomplete one.
//!
//! # And it is not `lernie help`
//!
//! That answers what this BINARY takes, from a table compiled into it, with
//! nothing provisioned (`crate::verbs::help`). This answers what the ENGINE
//! offers. Two subjects; the wire op is the second, and `crate::verbs::window`
//! states why only one of them has an argv row.
use crate;
/// **The word typed after the slash** that opens it (`crate::ui::slash`).
pub const WORD: &str = "help";
/// The pane's own heading — what the operator asked for, which is what the
/// window takes (bl-55ed).
pub const HEADING: &str = "what this window takes";
/// The window's own words, said above the rows they head.
pub const WORDS: &str = "the words, typed after / in the box — the menu's own rows";
/// The window's keys, said above the table.
pub const KEYS_SAID: &str = "the keys";
/// **Every key this window binds, and what it does** — DESIGN §4.42's
/// *keyboard, whole*, as the operator reads it.
pub const KEYS: = ;
/// **The engines' section heading**: their op tables are a second subject —
/// what each engine answers, in the engine's own spelling — and saying so is
/// what keeps an operator from typing `/scan` into a box that does not take it.
pub const ENGINES: &str = "what these engines answer — each engine's own op table, in its own spelling; the words above are what this box takes";
/// What it says before any channel has answered.
pub const NOT_ANSWERED: &str = "waiting to hear what these engines answer to";
/// What a section says for an engine that answered and named no op at all — a
/// fact about that engine, and the one empty state here that is not a wait.
pub const NO_OPS: &str = "this engine names no op";
/// Paint the pane and take the clicks on it. Answers whether there was one to
/// paint, so the shell knows whether the conversation still stands.
/// **What this window takes** (bl-55ed): the menu's rows — the same words in
/// the same order, read off the one table (`crate::ui::slash::rows`) — and
/// the keys. The operator who types `/help` asked the window, so the window
/// answers first.
/// One op: what to type and who it is for, then the sentence, then the page.
///
/// Every line comes off a pure function of the row (`crate::reply::help`), so
/// the suite reads the sentence rather than the layout — `crate::ui::records`'
/// own rule.