A widget module is a unit of source code that can execute in the infoview.
Every module definition must either be annotated with @[widget_module],
or use a value of javascript identical to that of another definition
annotated with @[widget_module].
This makes it possible for the infoview to load the module.
See the manual entry for more information on how to use the widgets system.
- javascript : StringA JS module intended for use in user widgets. The JS environment in which modules execute provides a fixed set of libraries accessible via direct import, notably@leanprover/infoviewandreact.To initialize this field from an external JS file, you may use include_str "path"/"to"/"file.js". However beware that this does not register a dependency with Lake, so your Lean module will not automatically be rebuilt when the.jsfile changes.
- The hash is cached to avoid recomputing it whenever the - Moduleis used.
Instances For
Storage of widget modules #
Equations
- Lean.Widget.instToModuleModule = { toModule := id }
Equations
- Lean.Widget.addBuiltinModule id m = ST.Ref.modify Lean.Widget.builtinModulesRef✝ fun (x : Lean.RBMap UInt64 (Lean.Name × Lean.Widget.Module) compare) => x.insert m.javascriptHash.val (id, m)
Instances For
Registers a widget module. Its type must implement Lean.Widget.ToModule.
Retrieval of widget modules #
- hash : UInt64Hash of the JS module to retrieve. 
- pos : Lsp.Position
Instances For
- sourcetext : StringSourcetext of the JS module to run. 
Instances For
Equations
- Lean.Widget.instInhabitedWidgetSource = { default := { sourcetext := default } }
Equations
Equations
- Lean.Widget.instFromJsonWidgetSource = { fromJson? := Lean.Widget.fromJsonWidgetSource✝ }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Storage of panel widget instances #
- global (n : Name) : PanelWidgetsExtEntry
- local (wi : WidgetInstance) : PanelWidgetsExtEntry
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct a widget instance by finding a widget module in the current environment.
hash must be hash (toModule c).javascript
where c is some global constant annotated with @[widget_module],
or the name of a builtin widget module.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Save the data of a panel widget which will be displayed whenever the text cursor is on stx.
hash must be as in WidgetInstance.ofHash.
Equations
- One or more equations did not get rendered due to their size.
Instances For
show_panel_widgets command #
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Use show_panel_widgets [<widget>] to mark that <widget>
should always be displayed, including in downstream modules.
The type of <widget> must implement Widget.ToModule,
and the type of <props> must implement Server.RpcEncodable.
In particular, <props> : Json works.
Use show_panel_widgets [<widget> with <props>]
to specify the <props> that the widget should be given
as arguments.
Use show_panel_widgets [local <widget> (with <props>)?] to mark it
for display in the current section, namespace, or file only.
Use show_panel_widgets [scoped <widget> (with <props>)?] to mark it
for display only when the current namespace is open.
Use show_panel_widgets [-<widget>] to temporarily hide a previously shown widget
in the current section, namespace, or file.
Note that persistent erasure is not possible, i.e.,
-<widget> has no effect on downstream modules.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
#widget command #
Use #widget <widget> to display a panel widget,
and #widget <widget> with <props> to display it with the given props.
Useful for debugging widgets.
The type of <widget> must implement Widget.ToModule,
and the type of <props> must implement Server.RpcEncodable.
In particular, <props> : Json works.
Equations
- Lean.Widget.widgetCmd = Lean.ParserDescr.node `Lean.Widget.widgetCmd 1022 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "#widget ") Lean.Widget.widgetInstanceSpec)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Deprecated definitions #
Use this structure and the @[widget] attribute to define your own widgets.
@[widget]
def rubiks : UserWidgetDefinition :=
  { name := "Rubiks cube app"
    javascript := include_str ...
  }
- name : StringPretty name of user widget to display to the user. 
- javascript : StringAn ESmodule that exports a react component to render. 
Instances For
Equations
- Lean.Widget.instInhabitedUserWidgetDefinition = { default := { name := default, javascript := default } }
Equations
- Lean.Widget.instToModuleUserWidgetDefinition = { toModule := fun (uwd : Lean.Widget.UserWidgetDefinition) => { javascript := uwd.javascript, javascriptHash := ⟨hash uwd.javascript, ⋯⟩ } }
Retrieving panel widget instances #
Retrieve all the UserWidgetInfos that intersect a given line.
Equations
- One or more equations did not get rendered due to their size.
Instances For
- The syntactic span in the Lean file at which the panel widget is displayed. 
- When present, the infoview will wrap the widget in - <details><summary>{name}</summary>...</details>. This functionality is deprecated but retained for backwards compatibility with- UserWidgetDefinition.
Instances For
Get the panel widgets present around a particular position.
Equations
- One or more equations did not get rendered due to their size.