lyng textmate bundle idea-compatible
This commit is contained in:
1 parent
ea0ecb1db3
commit
f0fc7ddd84
3 files changed
+144
No files matched your search
@@ -0,0 +1,66 @@
|
||||
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.
|
||||
Reference in new issue
Block a user