Ion
Amazon Ion and Ion Schema Language support.
How to install
With Forge Super installed, the button above opens the app on this extension, where you press Install. Nothing is installed until you do.
You can also open the Extensions panel in the app and search for Ion. The extension's id is ion.
Don't have Forge Super yet? Download it here.
README
From the extension's repository, written by its authors and not by Mentenaz. See the source.
Ion Extension for Zed
This extension provides syntax highlighting and language support for Amazon Ion and Ion Schema Language in the Zed editor.
Features
Amazon Ion Support (.ion files)
- Syntax Highlighting: Full syntax highlighting for all Ion data types
- Bracket Matching: Automatic bracket matching for lists, structs, and S-expressions
- Code Folding: Fold lists, structs, S-expressions, and block comments
- Comment Support: Line comments (
//) and block comments (/* */) - Data Types: Support for all Ion types including:
- Scalars: null, bool, int, float, decimal, timestamp, string, symbol, blob, clob
- Containers: list, sexp, struct
- Annotations: Type annotations with
::syntax
Ion Schema Language Support (.isl files)
- Schema Syntax: Highlighting for schema headers, imports, and type definitions
- Constraint Highlighting: Special highlighting for schema constraint keywords
- Ion Integration: Full Ion syntax support within schema definitions
- Structure Folding: Fold schema headers, imports, type definitions, and nested structures
Installation
- Open Zed
- Open the command palette (
Cmd+Shift+Pon macOS,Ctrl+Shift+Pon Linux/Windows) - Type "zed: install extension" and select it
- Search for "Ion" and install this extension
Usage
The extension automatically activates for files with the following extensions:
.ion- Amazon Ion files.isl- Ion Schema Language files
Example Ion File
// Ion document with various data types
{
name: "John Doe",
age: 30,
active: true,
balance: 1234.56d,
created: 2023-01-01T00:00:00Z,
tags: ["customer", "premium"],
metadata: {
source: 'web',
score: null.int
}
}
// Annotated values
person::{
name: "Jane",
contact: email::"jane@example.com"
}
Example Ion Schema File
schema_header::{
imports: [{ id: "isl/ion.isl", type: ion }]
}
type::{
name: user,
type: struct,
fields: {
id: { type: int, valid_values: range::[1, max] },
email: { type: string, regex: "^[\\w.-]+@[\\w.-]+\\.[a-zA-Z]{2,}$" },
name: { type: string, codepoint_length: range::[1, 100] },
active: bool
}
}
Language Features
Syntax Highlighting
- Keywords:
schema_header,import,type - Literals: Numbers, strings, booleans, timestamps, null values
- Operators: Annotations (
::) - Punctuation: Brackets, braces, commas, colons
- Comments: Line and block comments
- Properties: Field names in structs
- Special: Ion null types (
null.int,null.string, etc.)
Code Structure
- Bracket Matching: Automatic matching of
[],{}, and() - Code Folding: Collapse large structures for better navigation
- Indentation: Smart indentation based on structure
Tree-sitter Grammars
This extension uses custom Tree-sitter grammars:
- tree-sitter-ion - Amazon Ion grammar
- tree-sitter-ion-schema - Ion Schema Language grammar
Resources
Contributing
Contributions are welcome! Please feel free to submit issues and pull requests.
License
This extension is licensed under the Apache License 2.0.