LimeIDL Syntax Highlighting & Outline
This VS Code extension provides comprehensive syntax highlighting and outline support for LimeIDL files (.lime extension). LimeIDL is the input language for Gluecodium, a tool for generating language bindings across multiple programming languages.
Features
Outline & Navigation Support
- Document Symbol Provider: Full outline sidebar support powered by ANTLR grammar parser
- Hierarchical Symbol Tree: Organized view of packages, classes, interfaces, structs, enums, and their members
- Smart Navigation: Click-to-navigate with precise symbol location detection
- Accurate Parsing: Built on the official LimeIDL ANTLR grammar for maximum accuracy and reliability
- Comprehensive Symbol Recognition: All major LimeIDL constructs including:
- Packages, imports, and type aliases
- Classes (with
open modifier), interfaces (with narrow modifier), structs, and enums
- Class members: constructors, methods, properties, fields, and constants
- Exception declarations and lambda expressions
- Support for escaped identifiers (backtick-wrapped names)
Complete Language Support
- Full ANTLR Grammar Coverage: Syntax highlighting aligned with the complete ANTLR grammar definition
- All Keywords: Complete support for all language keywords including:
- Control:
package , import , throws
- Declarations:
class , interface , struct , enum , exception , typealias , lambda , fun , constructor , property , const , external , field , get , set
- Modifiers:
static , open , narrow
Advanced Type System
- Built-in Types: All primitive and system types with proper highlighting:
- Numeric:
Byte , Short , Int , Long , UByte , UShort , UInt , ULong , Float , Double
- Other:
Boolean , String , Blob , Date , Duration , Locale , Void
- Generic Collections: Enhanced support for
List<T> , Set<T> , and Map<K,V> with nested type highlighting
- Custom Types: User-defined types with proper scoping and references
Rich Literal Support
- String Literals: Both single-line (
"text" ) and multi-line ("""text""" ) strings with escape sequences
- Numeric Literals: Full support for integers, floats, and scientific notation with proper sign handling
- Duration Literals: Complete support for time units with positive/negative values (
+30s , -5min , 1h , 2d )
- Boolean & Special Values:
true , false , null , NaN , Infinity , -Infinity
Advanced Language Constructs
- Enumerator References: Support for both standard (
Enum.VALUE ) and positional (Enum(0) ) references
- External Descriptors: Complete
external block support with platform-specific syntax highlighting
- Struct & Collection Initializers:
- Struct initializers:
{ field1 = "value", field2 = true }
- Collection initializers:
[1, 2, 3] , ["key": "value"]
- Nested initializer structures
- Enhanced Attributes: Advanced annotation support with:
- Named parameters:
@Swift(Label = "value")
- Array parameters:
@Attr(values = ["a", "b"])
- Complex nested structures
- Documentation Comments: Rich support for
// and /* */ documentation comments with:
- Markdown Formatting: Bold (
**text** ), italic (_text_ ), and inline code (`code` )
- Documentation Tags:
@param , @return , @throws , @value , @description , @Placeholder
- Parameter References:
@param[paramName] with proper highlighting
- Platform-specific Comments:
{@Java ...} , {@Swift ...} , {@Cpp ...} , etc.
- Local Comments: Transient comments (
# ) for development notes
- Escape Sequences: Proper handling of escaped markdown characters
Developer Experience
- Escaped Identifiers: Full Unicode support for backtick-enclosed identifiers
- Smart Punctuation: Context-aware highlighting for operators, separators, and delimiters
- Error Prevention: Improved regex patterns for better boundary detection
- Performance: Optimized parsing for large files
Language Configuration
- Bracket Matching: Automatic matching for
{} , [] , ()
- Auto-closing Pairs: Smart closing for brackets, quotes, and backticks
- Comment Toggling: Proper support for both documentation and local comments
- Code Folding: Support for region-based folding
Requirements
- VS Code 1.101.0 or higher
Extension Settings
This extension does not contribute any VS Code settings.
Known Issues
None currently known. Please report issues on the project repository.
Release Notes
0.2.1 (Latest)
Enhanced Outline Support - ANTLR Parser Integration:
- IMPROVED: Document Symbol Provider now uses official ANTLR grammar parser instead of regex-based parsing
- Enhanced Accuracy: More reliable symbol detection and parsing of complex LimeIDL constructs
- Better Error Handling: Graceful handling of malformed files with improved error recovery
- Performance: More efficient parsing for large files using compiled grammar
- Future-proof: Symbol provider automatically supports new language features as grammar evolves
0.2.0
Major feature addition - Outline Support:
- NEW: Added comprehensive outline sidebar support for LimeIDL files
- Document Symbol Provider: Navigate through your code structure with VS Code's outline panel
- Hierarchical View: See classes, interfaces, structs, enums, and their members in organized tree structure
- Smart Symbol Recognition: Support for all LimeIDL constructs including escaped identifiers
- Precise Navigation: Click any symbol in outline to jump directly to its definition
- Enhanced extension description to reflect new outline capabilities
0.1.5
Major update with complete ANTLR grammar coverage:
- Added support for all missing keywords (
get , set , field )
- Enhanced multi-line string literals and boolean constants
- Complete external descriptor and initializer support
- Advanced enumerator references and duration literals
- Comprehensive documentation and platform-specific comment improvements
- Full test coverage for all language constructs
0.1.4
- Bug fixes and stability improvements
0.1.3
- Added markdown formatting support in documentation comments
- Enhanced documentation comment syntax highlighting
0.1.2
- Added proper support for LimeIDL documentation comments
- Enhanced syntax highlighting to distinguish between documentation and local comments
- Updated VS Code comment toggling behavior
0.1.1
- Initial release of LimeIDL syntax highlighting extension
About LimeIDL
LimeIDL is the input language for Gluecodium. The name is a stylized abbreviation where "LIME" stands for "Language-Independent ModEl", and "IDL" stands for "Interface Definition Language". LimeIDL syntax is inspired by modern programming languages like Kotlin and Swift, designed to be compact, easy to read and write.
Example Usage
package com.example.demo
import com.example.utils.Result
// Documentation comment with **bold**, _italic_, and `code` formatting
open class DataProcessor {
// External descriptor for platform-specific implementations
external {
cpp class "DataProcessor"
java name "DataProcessor"
}
// Static property with getters/setters
static property defaultTimeout: Duration = 30s { get set }
// Function with complex parameters and attributes
fun processData(
@Swift(Label = "with") input: String,
options: List<String> = [],
metadata: Map<String, String> = [:]
): Result<String> throws ProcessingException
// Struct with field constructor and initializers
struct Options {
enableLogging: Boolean = true
retryCount: UInt = 3
field constructor(enableLogging, retryCount)
}
// Enum with explicit values
enum ProcessingMode {
FAST = 0,
THOROUGH = 1
}
}
Contributing
Issues and feature requests are welcome on the project repository. This extension is designed to provide the most comprehensive LimeIDL syntax highlighting experience possible.
License
This extension is licensed under the MIT License.
| |