diff options
Diffstat (limited to 'js/baba-yaga/dev/textmate')
3 files changed, 526 insertions, 0 deletions
diff --git a/js/baba-yaga/dev/textmate/Baba Yaga.tmbundle/Info.plist b/js/baba-yaga/dev/textmate/Baba Yaga.tmbundle/Info.plist new file mode 100644 index 0000000..e037606 --- /dev/null +++ b/js/baba-yaga/dev/textmate/Baba Yaga.tmbundle/Info.plist @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleExecutable</key> + <string>${EXECUTABLE_NAME}</string> + <key>CFBundleIdentifier</key> + <string>com.textmate.baba-yaga</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>Baba Yaga</string> + <key>CFBundlePackageType</key> + <string>BNDL</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CFBundleVersion</key> + <string>1</string> + <key>contactEmail</key> + <string>your-email@example.com</string> + <key>contactName</key> + <string>Your Name</string> + <key>description</key> + <string>Syntax highlighting for Baba Yaga programming language</string> + <key>license</key> + <string>MIT</string> + <key>repository</key> + <string>https://github.com/your-username/baba-yaga</string> + <key>uuid</key> + <string>BABA-YAGA-UUID-HERE</string> +</dict> +</plist> diff --git a/js/baba-yaga/dev/textmate/Baba Yaga.tmbundle/Syntaxes/Baba Yaga.tmLanguage b/js/baba-yaga/dev/textmate/Baba Yaga.tmbundle/Syntaxes/Baba Yaga.tmLanguage new file mode 100644 index 0000000..28cb71e --- /dev/null +++ b/js/baba-yaga/dev/textmate/Baba Yaga.tmbundle/Syntaxes/Baba Yaga.tmLanguage @@ -0,0 +1,432 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>fileTypes</key> + <array> + <string>baba</string> + </array> + <key>foldingStartMarker</key> + <string>//\s*#?region\b</string> + <key>foldingStopMarker</key> + <string>//\s*#?endregion\b</string> + <key>name</key> + <string>Baba Yaga</string> + <key>patterns</key> + <array> + <dict> + <key>include</key> + <string>#comments</string> + </dict> + <dict> + <key>include</key> + <string>#strings</string> + </dict> + <dict> + <key>include</key> + <string>#numbers</string> + </dict> + <dict> + <key>include</key> + <string>#keywords</string> + </dict> + <dict> + <key>include</key> + <string>#operators</string> + </dict> + <dict> + <key>include</key> + <string>#functions</string> + </dict> + <dict> + <key>include</key> + <string>#variables</string> + </dict> + <dict> + <key>include</key> + <string>#types</string> + </dict> + <dict> + <key>include</key> + <string>#with-blocks</string> + </dict> + <dict> + <key>include</key> + <string>#when-expressions</string> + </dict> + </array> + <key>repository</key> + <dict> + <key>comments</key> + <dict> + <key>patterns</key> + <array> + <dict> + <key>match</key> + <string>//.*$</string> + <key>name</key> + <string>comment.line.double-slash.baba-yaga</string> + </dict> + <dict> + <key>begin</key> + <string>/\*</string> + <key>end</key> + <string>\*/</string> + <key>name</key> + <string>comment.block.baba-yaga</string> + </dict> + </array> + </dict> + <key>strings</key> + <dict> + <key>patterns</key> + <array> + <dict> + <key>begin</key> + <string>"</string> + <key>end</key> + <string>"</string> + <key>name</key> + <string>string.quoted.double.baba-yaga</string> + <key>patterns</key> + <array> + <dict> + <key>match</key> + <string>\\\\.</string> + <key>name</key> + <string>constant.character.escape.baba-yaga</string> + </dict> + </array> + </dict> + </array> + </dict> + <key>numbers</key> + <dict> + <key>patterns</key> + <array> + <dict> + <key>match</key> + <string>\b\d+\b</string> + <key>name</key> + <string>constant.numeric.integer.baba-yaga</string> + </dict> + <dict> + <key>match</key> + <string>\b\d+\.\d+\b</string> + <key>name</key> + <string>constant.numeric.float.baba-yaga</string> + </dict> + </array> + </dict> + <key>keywords</key> + <dict> + <key>patterns</key> + <array> + <dict> + <key>match</key> + <string>\b(when|then|is|Ok|Err)\b</string> + <key>name</key> + <string>keyword.control.baba-yaga</string> + </dict> + <dict> + <key>match</key> + <string>\b(Bool|Int|Float|String|List|Table|Result|Number)\b</string> + <key>name</key> + <string>storage.type.baba-yaga</string> + </dict> + <dict> + <key>match</key> + <string>\b(->|=>|\+|-|\*|/|%|=|>|<|>=|<=|\.\.|append|set|merge|shape)\b</string> + <key>name</key> + <string>keyword.operator.baba-yaga</string> + </dict> + <dict> + <key>match</key> + <string>\b(io\.out|io\.in|io\.emit|io\.listen|map|filter|reduce|pipe)\b</string> + <key>name</key> + <string>keyword.other.baba-yaga</string> + </dict> + </array> + </dict> + <key>operators</key> + <dict> + <key>patterns</key> + <array> + <dict> + <key>match</key> + <string>(\+|-|\*|/|%)</string> + <key>name</key> + <string>keyword.operator.arithmetic.baba-yaga</string> + </dict> + <dict> + <key>match</key> + <string>(=|>|<|>=|<=)</string> + <key>name</key> + <string>keyword.operator.comparison.baba-yaga</string> + </dict> + <dict> + <key>match</key> + <string>:</string> + <key>name</key> + <string>keyword.operator.assignment.baba-yaga</string> + </dict> + <dict> + <key>match</key> + <string>-></string> + <key>name</key> + <string>keyword.operator.function.baba-yaga</string> + </dict> + <dict> + <key>match</key> + <string>\.\.</string> + <key>name</key> + <string>keyword.operator.string.baba-yaga</string> + </dict> + </array> + </dict> + <key>functions</key> + <dict> + <key>patterns</key> + <array> + <dict> + <key>captures</key> + <dict> + <key>1</key> + <dict> + <key>name</key> + <string>entity.name.function.baba-yaga</string> + </dict> + </dict> + <key>match</key> + <string>\b([a-zA-Z_][a-zA-Z0-9_]*)\s*:</string> + </dict> + <dict> + <key>begin</key> + <string>\(</string> + <key>end</key> + <string>\)</string> + <key>name</key> + <string>meta.function.anonymous.baba-yaga</string> + <key>patterns</key> + <array> + <dict> + <key>match</key> + <string>\b([a-zA-Z_][a-zA-Z0-9_]*)\b</string> + <key>name</key> + <string>variable.parameter.baba-yaga</string> + </dict> + <dict> + <key>include</key> + <string>#operators</string> + </dict> + </array> + </dict> + </array> + </dict> + <key>variables</key> + <dict> + <key>patterns</key> + <array> + <dict> + <key>captures</key> + <dict> + <key>1</key> + <dict> + <key>name</key> + <string>variable.other.baba-yaga</string> + </dict> + </dict> + <key>match</key> + <string>\b([a-zA-Z_][a-zA-Z0-9_]*)\b</string> + </dict> + </array> + </dict> + <key>types</key> + <dict> + <key>patterns</key> + <array> + <dict> + <key>match</key> + <string>\b(Bool|Int|Float|String|List|Table|Result|Maybe)\b</string> + <key>name</key> + <string>storage.type.baba-yaga</string> + </dict> + </array> + </dict> + <key>with-blocks</key> + <dict> + <key>patterns</key> + <array> + <dict> + <key>begin</key> + <string>\bwith\b\s*\(\s*(?:rec\s*)?</string> + <key>end</key> + <string>\)\s*-></string> + <key>name</key> + <string>meta.with-block.baba-yaga</string> + <key>beginCaptures</key> + <dict> + <key>0</key> + <dict> + <key>name</key> + <string>keyword.control.with.baba-yaga</string> + </dict> + </dict> + <key>endCaptures</key> + <dict> + <key>0</key> + <dict> + <key>name</key> + <string>keyword.operator.function.baba-yaga</string> + </dict> + </key> + </dict> + <key>patterns</key> + <array> + <dict> + <key>include</key> + <string>#comments</string> + </dict> + <dict> + <key>include</key> + <string>#with-block-entries</string> + </dict> + <dict> + <key>include</key> + <string>#strings</string> + </dict> + <dict> + <key>include</key> + <string>#numbers</string> + </dict> + <dict> + <key>include</key> + <string>#variables</string> + </dict> + <dict> + <key>include</key> + <string>#operators</string> + </dict> + </array> + </dict> + </array> + </dict> + <key>with-block-entries</key> + <dict> + <key>patterns</key> + <array> + <dict> + <key>begin</key> + <string>([a-zA-Z_][a-zA-Z0-9_]*)\s*:</string> + <key>end</key> + <string>;</string> + <key>name</key> + <string>meta.with-block-entry.baba-yaga</string> + <key>beginCaptures</key> + <dict> + <key>1</key> + <dict> + <key>name</key> + <string>variable.other.with-local.baba-yaga</string> + </dict> + </key> + </dict> + <key>endCaptures</key> + <dict> + <key>0</key> + <dict> + <key>name</key> + <string>punctuation.terminator.semicolon.baba-yaga</string> + </dict> + </key> + </dict> + <key>patterns</key> + <array> + <dict> + <key>include</key> + <string>#comments</string> + </dict> + <dict> + <key>include</key> + <string>#when-expressions</string> + </dict> + <dict> + <key>include</key> + <string>#strings</string> + </dict> + <dict> + <key>include</key> + <string>#numbers</string> + </dict> + <dict> + <key>include</key> + <string>#variables</string> + </dict> + <dict> + <key>include</key> + <string>#operators</string> + </dict> + </array> + </dict> + </array> + </dict> + <key>when-expressions</key> + <dict> + <key>patterns</key> + <array> + <dict> + <key>begin</key> + <string>\bwhen\b</string> + <key>end</key> + <string>;</string> + <key>name</key> + <string>meta.when-expression.baba-yaga</string> + <key>patterns</key> + <array> + <dict> + <key>match</key> + <string>\bwhen\b</string> + <key>name</key> + <string>keyword.control.when.baba-yaga</string> + </dict> + <dict> + <key>match</key> + <string>\bthen\b</string> + <key>name</key> + <string>keyword.control.then.baba-yaga</string> + </dict> + <dict> + <key>match</key> + <string>\bis\b</string> + <key>name</key> + <string>keyword.control.is.baba-yaga</string> + </dict> + <dict> + <key>match</key> + <string>\b_\b</string> + <key>name</key> + <string>constant.language.wildcard.baba-yaga</string> + </dict> + <dict> + <key>include</key> + <string>#strings</string> + </dict> + <dict> + <key>include</key> + <string>#numbers</string> + </dict> + <dict> + <key>include</key> + <string>#variables</string> + </dict> + </array> + </dict> + </array> + </dict> + </dict> + <key>scopeName</key> + <string>source.baba-yaga</string> + <key>uuid</key> + <string>BABA-YAGA-SYNTAX-UUID-HERE</string> +</dict> +</plist> diff --git a/js/baba-yaga/dev/textmate/README.md b/js/baba-yaga/dev/textmate/README.md new file mode 100644 index 0000000..d4635cd --- /dev/null +++ b/js/baba-yaga/dev/textmate/README.md @@ -0,0 +1,60 @@ +# Baba Yaga TextMate Bundle + +Syntax highlighting for the Baba Yaga programming language in TextMate. + +## Installation + +### Method 1: Double-click Installation +1. Double-click the `Baba Yaga.tmbundle` file +2. TextMate will automatically install the bundle +3. Restart TextMate + +### Method 2: Manual Installation +1. Copy the `Baba Yaga.tmbundle` folder to your TextMate bundles directory: + - macOS: `~/Library/Application Support/TextMate/Bundles/` + - Or use: `~/Library/Application Support/Avian/Bundles/` (for TextMate 2) + +2. Restart TextMate + +### Method 3: Git Installation +```bash +cd ~/Library/Application\ Support/TextMate/Bundles/ +git clone https://github.com/your-username/baba-yaga.git Baba\ Yaga.tmbundle +``` + +## Features +- Syntax highlighting for Baba Yaga language +- Support for `.baba` files +- Highlighting for: + - Keywords (when, then, is, with, etc.) + - Operators (->, =>, +, -, etc.) + - Functions and variables + - Strings and numbers + - Comments (// and /* */) + - When expressions + - Types (Bool, Int, Float, etc.) +- Code folding support +- Auto-indentation + +## Usage +Open any `.baba` file and TextMate should automatically detect the language and apply syntax highlighting. + +## Customization +You can customize the colors by modifying your theme or creating a custom theme that targets the `source.baba-yaga` scope. + +## Building the Bundle +If you need to modify the syntax highlighting: + +1. Edit the `Syntaxes/Baba Yaga.tmLanguage` file +2. Generate new UUIDs for the bundle and syntax files +3. Test in TextMate + +## UUID Generation +You can generate new UUIDs using: +```bash +uuidgen +``` + +Replace the placeholder UUIDs in: +- `Info.plist` (bundle UUID) +- `Syntaxes/Baba Yaga.tmLanguage` (syntax UUID) |