VS Code Extensions
U

uwulisp_cubical

by uwulisp

uwulisp cubical

Downloads

2

Rating

(0)

Version

0.0.3

Last updated

Jun 22, 2026

A Visual Studio Code extension that adds language support for uwulisp-cubical (.uwuc), a dependently-typed surface language with cubical type theory extensions: path types, interval expressions, Glue types, and higher inductive types.


Features

Syntax Highlighting

Full syntax highlighting for:

  • Declarationsdef (value definitions) and data (datatype declarations), with constructor names highlighted separately
  • UniversesU0, U1, U2, …, and the Type alias
  • Keywordsfun, λ, Pi / Π, Sigma / Σ, fst, snd, elim
  • Cubical primitivestransport, hcomp, Path, ua, Equiv, mkEquiv, equivFwd, Glue, glueElem, unglue
  • Interval — the interval type I / 𝕀, endpoints i0 / i1, and operators /\ (), \/ (), ~ (¬)
  • Operators->, =>, @ (path application), , (pair), . (binder dot), | (constructor pipe)
  • Comments-- line comments
  • Strings — double-quoted string literals with escape sequences

Bracket Matching & Auto-Closing

Matched pairs: (), {}, [], <> / ⟨⟩ (path binders).
Auto-closing is active for all bracket types and double-quoted strings, with <>/⟨⟩ suppressed inside strings and comments to avoid conflicts with comparison operators.

Smart Indentation

  • Indentation increases after { and data … = lines.
  • Pressing Enter on a | constructor line automatically pre-fills the next | for ergonomic datatype authoring.

Unicode Support

All ASCII operators have accepted Unicode aliases:

Unicode ASCII
λ \ (lambda)
Π Pi
Σ Sigma
𝕀 I (interval type)
/ < / > (path binder)
× * (product)
/\ (meet)
\/ (join)
¬ ~ (negation)

Requirements

No external dependencies. The extension activates automatically for files with the .uwuc extension.


Extension Settings

This extension does not contribute any configurable VS Code settings at this time.


Known Issues

  • < / > are highlighted as path binder punctuation; they may conflict visually when used in type-level comparisons if any are added to the language in future.
  • Semantic highlighting (e.g. distinguishing local variables from constructors) is not yet implemented — the grammar resolves names syntactically only.

Release Notes

1.0.0

Initial release. Includes:

  • Syntax highlighting for all declarations, keywords, cubical primitives, interval expressions, and operators
  • Unicode alias support
  • Bracket matching and auto-closing for (), {}, [], <>/⟨⟩
  • Smart indentation for data declarations and elim case branches
  • -- line comment support

Language Quick Reference

-- Value definition
def id : (A : U0) -> A -> A = \A x. x

-- Datatype with path constructor
data S1 =
  | base : S1
  | loop : S1 [ base , base ]

-- Path type and abstraction
def refl : (A : U0) -> (x : A) -> Path A x x =
  \A x. <i> x

-- Transport along a path
def subst : (A : U0) -> (B : A -> U0) -> (x y : A) -> Path A x y -> B x -> B y =
  \A B x y p bx. transport (<i> B (p @ i)) bx

For the full syntax reference see the dedicated language document.

Related extensions