pub struct ModelineElementUpdate {
pub key: ModelineKey,
pub id: ElementId,
pub content: ElementContent,
}Expand description
A typed event a producer (mode / plugin) publishes on the event bus
to set an element’s content (ML.3). The host forwarder fires the §12
render-wake on arrival; the actor thread drains the event into the
content store in run_tick_pending (single-writer). Empty content
hides the element (the drain treats it as a ModelineService::clear).
This is the WIT-shaped push path: native modes and (later) plugins
update content the same way, so no producer is invoked on the render
path (paramount #1, §2 / §5). See
docs/dev/architecture/modeline.md §5 (update flow), §6 (ownership).
§Examples
A producer publishes from anywhere it holds the bus — an on_activate
hook, a spawned task — never from the render path:
use lattice_core::BufferId;
use lattice_mode::{
ElementContent, ElementId, ModelineElementUpdate, ModelineKey, ModelineRole,
ModelineService,
};
use lattice_runtime::EventBus;
let bus = EventBus::new();
let (tx, mut rx) = tokio::sync::mpsc::unbounded_channel();
bus.subscribe_typed::<ModelineElementUpdate>(tx); // the host forwarder
bus.publish_typed(ModelineElementUpdate {
key: ModelineKey::Buffer(BufferId(1)),
id: ElementId::new("my-plugin.status"),
content: ElementContent::text("● synced", ModelineRole::new("modeline.mode_item")),
});
// The host drains it into the content store on the actor thread.
let service = ModelineService::new();
service.apply(rx.try_recv().unwrap());
let got = service.snapshot();
let got = got.content_for(ModelineKey::Buffer(BufferId(1)), &ElementId::new("my-plugin.status"));
assert_eq!(got.unwrap().plain(), "● synced");Fields§
§key: ModelineKeyWhich slot: a buffer’s (pane-local element) or the global one.
id: ElementIdThe element whose content this sets.
content: ElementContentThe new content; empty clears the slot and hides the element.
Trait Implementations§
Source§impl Clone for ModelineElementUpdate
impl Clone for ModelineElementUpdate
Source§fn clone(&self) -> ModelineElementUpdate
fn clone(&self) -> ModelineElementUpdate
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ModelineElementUpdate
impl Debug for ModelineElementUpdate
Source§impl Event for ModelineElementUpdate
impl Event for ModelineElementUpdate
Source§fn event_type_id(&self) -> EventTypeId
fn event_type_id(&self) -> EventTypeId
static to avoid
re-allocating the metadata on every call. The macro
register_event! generates this for you.