Skip to content

smelt.reg

Tier: Host — Available in every runtime, including headless mode.

Helpers for constructing Reg handles. Plugins that own several reactive subscriptions can wrap their teardown logic in a single Reg returned to callers.

smelt.reg.compose

fun(...: smelt.Reg?): smelt.Reg

Types: smelt.Reg

Combine variadic Regs into one. :remove() on the result fires every inner :remove() in order, idempotent across repeat calls. Inputs may include nil (skipped) so call sites don't need to filter. Returns a Reg. Typical use: a plugin that owns several reactive subscriptions returns one composed Reg to its caller.

return smelt.reg.compose(
  smelt.win.cur():key("n", "<leader>x", handler),
  smelt.fs.watch(path, on_change),
  smelt.timer.every(1000, tick)
)

smelt.reg.new

fun(undo: fun()): smelt.Reg

Types: smelt.Reg

Wrap undo as a Reg. The first call to :remove() invokes undo() and returns true; subsequent calls are no-ops returning false. Errors raised inside undo are swallowed.