Skip to content
ViSML HelpVisual Standard ML v5.0.0
07 / Reference

Reference

Shortcuts, commands, menus, file formats and vocabulary — the things you look up rather than read.

Keyboard shortcuts

Keys Action
Ctrl + S Save workspace
Ctrl + O Open a .vsml workspace
Ctrl + B Toggle the primary sidebar (toolbox)
Ctrl + J Toggle the bottom dock
Ctrl + F Focus the toolbox block search
F11 Presentation perspective
Ctrl + Z Undo
Ctrl + Shift + Z Redo
Ctrl + Shift + P / F1 Command palette
Esc Close the palette or an open menu

Command palette

Ctrl + Shift + P or F1. Commands are grouped by the menu they come from; typing a group's name narrows the list to it.

Group Commands
File: New Workspace · Open Workspace… · Save Workspace · Load Autosave
Edit: Undo · Redo
View: Toggle Primary Sidebar · Toggle Bottom Panel · Show Blocks · Show Project Files · Show Code Outline · Show Problems · Show Output · Toggle Color Theme · Presentation Perspective
Build: Refresh Generated Code · Apply Code to Blocks
Tools: Switch to Macaca Nigra · Switch to Goropa · Settings · RUN — Execution runtime is not configured (disabled)

The disabled Run entry is not a bug in the palette — see Code Generation for why it stays that way.

Menu Contents
File New Workspace · Open Workspace… · Save Workspace · Load Autosave
Edit Undo · Redo
View Panel toggles · Perspective (Edit / Presentation) · Color theme
Build Refresh generated code · Apply code to blocks
Tools Renderer switch (Macaca Nigra / Goropa) · Settings · Command palette…
Examples The seven programs listed in Overview
Help This help site · About ViSML

The workspace right-click menu adds Screenshot (exports the block diagram as a PNG) and About; it removes Blockly's default Delete Workspace and Disable Block entries. Right-clicking an individual block adds a Type item where applicable — see Types.

File formats

Format Holds
.vsml A ViSML workspace, as plain JSON — Blockly's modern workspace serialization. Saved and opened locally; nothing is uploaded.
Local storage The rolling autosave backup, plus the active renderer, theme, autosave interval and panel layout.
SML text Not a file format on disk, but the Code panel round-trips a program as text via Apply to Blocks — see Code Generation.

Glossary

Term Means
Ascription Constraining a structure's interface with a signature. Transparent (:) reveals the structure's real types to callers; opaque (:>) hides them behind the signature's own.
Curried function A function of several arguments defined as nested one-argument functions, fun f a b = … — contrast with a tuple-argument (“uncurried”) function, fun f (a, b) = ….
Datatype A user-defined type built from named constructors, optionally recursive and polymorphic — e.g. 'a bt = LEAF of 'a | NODE of 'a bt * 'a * 'a bt.
Functor A function from structures to structures — SML's mechanism for parameterising one module over another.
Goropa ViSML's text-code-styled renderer, added 2026. See Renderers.
Grammar tooltip A hover tooltip showing the exact SML grammar production a block realises, e.g. exp ::= if exp then exp else exp. See Blocks.
Macaca Nigra ViSML's default renderer, distinguished by grammar-category-specific connector shapes. See Renderers.
Pattern matching Destructuring a value against one or more shapes — a function clause, or a case…of — selecting the first pattern that fits.
Round-trip Parsing generated SML text back into blocks and regenerating it, checking the result is a fixed point. See Code Generation.
Signature An interface for a structure: the types and values it promises to provide, without committing to their implementation.
Structure A module: a bundle of types, values and sub-structures, written struct…end.
T2BB Text-to-Block Builder — the grammar-transformation framework behind ViSML's toolbox, classifying every production as terminal, alias, mixed or repetitive. See Renderers.
Terminal label A small coloured caption on a block marking its grammatical role — “Condition of”, “is true”, “Bound”. See Blocks.
Elsewhere in the workshop

B-Lambda help — where the type system this project deliberately omits is the whole subject. B-MJ help — where the execution semantics this project deliberately omits is the whole subject.

ViSML is developed at L-Workshop. This help was written against ViSML 5.0.0.