Lyng TextMate grammar ====================== This folder contains a TextMate grammar for the Lyng language so you can get syntax highlighting quickly in: - JetBrains IDEs (IntelliJ IDEA, Fleet, etc.) via “TextMate Bundles” - VS Code (via “Install from VSIX” or by adding as an extension folder) Files ----- - `package.json` — VS Code–style wrapper that JetBrains IDEs can import as a TextMate bundle. - `syntaxes/lyng.tmLanguage.json` — the grammar. It highlights: - Line and block comments (`//`, `/* */`) - Shebang line at file start (`#!...`) - Strings: single and double quotes with escapes - Char literals `'x'` with escapes - Numbers: decimal with underscores and exponents, and hex (`0x...`) - Keywords (control and declarations), boolean operator words (`and`, `or`, `not`, `in`, `is`, `as`, `as?`) - Composite textual operators: `not in`, `not is` - Constants: `true`, `false`, `null`, `this` - Annotations: `@name` (Unicode identifiers supported) - Labels: `name:` (Unicode identifiers supported) - Declarations: highlights declared names in `fun|fn name`, `class|enum Name`, `val|var name` - Types: built-ins (`Int|Real|String|Bool|Char|Regex`) and Capitalized identifiers (heuristic) - Operators including ranges (`..`, `..<`, `...`), null-safe (`?.`, `?[`, `?(`, `?{`, `?:`, `??`), arrows (`->`, `=>`, `::`), match operators (`=~`, `!~`), bitwise, arithmetic, etc. - Shuttle operator `<=>` - Division operator `/` (note: Lyng has no regex literal syntax; `/` is always division) Install in IntelliJ IDEA (and other JetBrains IDEs) --------------------------------------------------- 1. Open Settings / Preferences → Editor → TextMate Bundles. 2. Click “+” and select this folder `editors/lyng-textmate/` (the folder that contains `package.json`). 3. Ensure `*.lyng` is associated with the Lyng grammar (IntelliJ usually picks this up from `fileTypes`). 4. Optional: customize colors with Settings → Editor → Color Scheme → TextMate. Enable Markdown code-fence highlighting in IntelliJ -------------------------------------------------- 1. Settings / Preferences → Languages & Frameworks → Markdown → Code style → Code fences → Languages. 2. Add mapping: language id `lyng` → “Lyng (TextMate)”. 3. Now blocks like ``` ```lyng // Lyng code here ``` ``` will be highlighted. Install in VS Code ------------------ Fastest local install without packaging: 1. Copy or symlink this folder somewhere stable (or keep it in your workspace). 2. Use “Developer: Install Extension from Location…” (Insiders) or package with `vsce package` and install the resulting `.vsix`. 3. VS Code will auto-associate `*.lyng` via this extension; if needed, check File Associations. Notes and limitations --------------------- - Type highlighting is heuristic (Capitalized identifiers). The IntelliJ plugin will use language semantics and avoid false positives. - If your language adds or changes tokens, please update patterns in `lyng.tmLanguage.json`. The Kotlin sources in `lynglib/src/commonMain/kotlin/net/sergeych/lyng/highlight/` are a good reference for token kinds. Lyng specifics -------------- - There are no regex literal tokens in Lyng at the moment; the slash character `/` is always treated as the division operator. The grammar intentionally does not define a `/.../` regex rule to avoid mis-highlighting lines like `a / b`. Contributing ------------ Pull requests to refine patterns and add tests/samples are welcome. You can place test snippets in `sample_texts/` and visually verify.