.xcl files. Language server (LSP) support is wired but not yet implemented — it fails gracefully with no effect.
VS Code / Cursor
The ubx VS Code extension is ineditors/vscode/ in the ubx repository.
Installing from source
.vsix file through VS Code’s Extensions panel: Extensions → ⋯ → Install from VSIX…
What you get
- Syntax highlighting for
.xclfiles - Language ID:
xcl - Keywords:
stack,input,output,locals,module,provider,space,root,import,for,when,match,default,as,optional,deprecated //and/* */comment toggling{}[]()bracket auto-close- F-string interpolation highlighting (
f"..."with{expr}) - Cross-stack ref highlighting (
@stack.output) - Type keyword highlighting (
string,bool,number,int,any,list,set,map,tuple,object,optional)
Extension ID
Language ID:xcl
File extension: .xcl
Extension display name: ubx - XCL Language
Zed
The ubx Zed extension is ineditors/zed/ in the ubx repository.
Installing
Load the extension as a local dev extension:- Open Zed
- Zed → Extensions → Install Dev Extension…
- Select the
editors/zed/directory
grammars/xcl) to a WASM module. This takes a few seconds.
What you get
- Syntax highlighting via tree-sitter grammar
- Correct indentation (auto-indent on
{,[,)) - Bracket matching:
{ }[ ]( ) - Outline panel: shows all top-level blocks (
stack,input,output,locals, etc.) by name - Doc comment highlighting (
///)
Tree-sitter grammar
The XCL grammar is atgrammars/xcl (a git submodule pointing to github.com/ubiquex/tree-sitter-xcl). The grammar covers:
- All block types (
stack_body,input_block,output_block,locals_block, etc.) - Resource declarations (named and unnamed, with
for/when/* N) - All expression forms (binary, unary, ternary, match, f-string, heredoc, cross-stack ref)
- All type expressions (
list(T),map(T),object({...}),optional(T))
Highlight queries
Semantic highlights in Zed uselanguages/xcl/highlights.scm. The query covers:
@keyword— all XCL keywords@type— type keywords and named types@operator—=,@, comparison and arithmetic operators@string— string and heredoc literals@number— numeric literals@boolean—true/false@constant.builtin—null@comment—//and/* */comments@comment.doc—///doc comments@punctuation.special— f-string interpolation delimiters{}@variable.special— cross-stack ref sigil@
Language Server (LSP)
Both extensions wire up an LSP server (ubx lsp --stdio), but the XCL language server is not yet implemented. The extension will start the server process but it currently does nothing beyond basic lifecycle management. Expect no LSP-powered features (completions, hover, go-to-definition) in the current version.
