LavishScript by user01
Pure LavishScript language support with intelligent autocomplete for ISS and LIB script files in Visual Studio Code.
⚠️ Important: Choose One Extension
There are two LavishScript extensions by user01x available on the marketplace:
- LavishScript by user01 - Pure LavishScript support (this extension)
- LavishScript (ISX) by user01 - LavishScript + support for certain InnerSpace extensions
Only install one extension at a time to avoid conflicts. Choose based on your needs:
- Use the base version for pure LavishScript development
- Use the ISX version if you need support for specific InnerSpace extensions
📌 Recommended Settings
For the best experience with LavishScript development, enable these VSCode settings:
editor.formatOnType: true
- Auto-formats code blocks when you type }
editor.formatOnPaste: true
- Auto-formats pasted code with correct indentation
breadcrumbs.enabled: true
- Shows code structure navigation at the top of the editor
editor.stickyScroll.enabled: true
- Keeps parent scopes visible while scrolling
The extension will prompt you to enable these settings on activation if any are disabled.
🔧 Making Error Indicators Less Intrusive
If you find the error indicators (!) in the editor obtrusive, you can adjust them:
Extension Settings (in Settings > Extensions > LavishScript)
lavishscript.diagnostics.enable
- Disable all error checking
lavishscript.diagnostics.variableChecking
- Disable variable duplicate/shadowing warnings
lavishscript.diagnostics.syntaxChecking
- Disable syntax validation
lavishscript.diagnostics.styleChecking
- Disable style warnings
VSCode Global Settings (in Settings)
problems.decorations.enabled: false
- Removes all (!) indicators from editor
editor.renderLineHighlight: "none"
- Removes error line highlighting
problems.showCurrentInStatus: false
- Hides current problem in status bar
Errors will still appear in the Problems panel but won't clutter the editor interface.
Features
🚀 Complete LavishScript API Support
- Top-Level Objects (TLOs) - Full autocomplete for Time, LavishScript, Math, System, etc.
- Commands - All LavishScript commands with parameter hints and syntax examples
- Type System - Complete type definitions with members, methods, and parameters
- Method Overloads - Shows all available overloads for methods with different parameters
- Case-Insensitive - Commands work regardless of capitalization (Call vs call)
🎯 Advanced Language Features
- Go to Definition - Click through to function/variable definitions
- Find All References - Find all usages of functions and variables
- Document Symbols - Navigate code structure with outline view
- Workspace Symbols - Search symbols across your entire workspace
- Include File Support - Autocomplete across included files
Support Development
If you find this extension helpful, consider supporting its continued development:
Bitcoin (BTC): 1HUixTpx719Jeo5ruEeZkhHDcddKybYK2Y
Ethereum (ETH): 0x01B54939a97F235cB050ce105214D6c098D37BcE
Your donations help maintain and improve this extension for the LavishScript community.
Usage
LavishScript TLOs and Commands
; TLOs work in any expression context
echo Current time: ${Time.Hour}:${Time.Minute}
echo LavishScript version: ${LavishScript.Version}
echo Random number: ${Math.Rand[100]}
; Commands at start of lines
Call MyFunction "parameter"
Wait 5
DeclareVariable myVar string local "initial value"
Variable Declarations and Members
; Type autocomplete for variable declarations
variable string myText
variable collection myList
variable jsonvalue myData
; Member/method autocomplete
echo ${myText.Length}
echo ${myText.Upper}
echo ${myList.Size}
myList:Insert["new item"]
Supported File Types
.iss
- InnerSpace Script files
.lib
- InnerSpace Library files
Commands
Access these commands through the Command Palette (Ctrl+Shift+P):
- LavishScript: Refresh Definitions - Reload all reference files
- LavishScript: Go to Definition - Navigate to symbol definitions
- LavishScript: Find All References - Find all usages of symbols
- LavishScript: Go to Symbol in Workspace - Search symbols globally
- LavishScript: Debug Current File - Show file language information
Data Sources
The extension automatically loads definitions from:
lavishscript_api.yml
- Curated LavishScript API configuration with wiki URLs (TLOs, commands, types)
Features in Detail
Comprehensive LavishScript Support
- 53+ Top-Level Objects - Time, Math, LavishScript, System, Script, etc.
- 99+ Commands - Call, Wait, Return, DeclareVariable, etc.
- 218+ Types - string, int, collection, jsonvalue, and all custom types
- Method Overloads - See all parameter variations for methods like String.Find
- Inherited Members - Shows inherited properties and methods from base types
- Cross-File Variables - Access variables declared in imported files with automatic scope detection
- Automatic Scope Detection - Variables inherit proper scope based on their location (objectdef-level or script-level)
Intelligent Code Navigation
- Include Resolution - Follows #include statements for cross-file navigation
- Scope-Aware Variables - Understands variable scope and lifecycle
- Symbol Hierarchy - Navigate objectdef classes, methods, and members
- Reference Tracking - Find where functions and variables are used
Smart Autocomplete
- Context-aware suggestions based on cursor position
- Filters suggestions as you type
- Shows parameter information in snippets
- Parameter defaults and optional parameters
- Return type information
Documentation Integration
- Inline documentation for all LavishScript APIs
- Parameter descriptions and syntax examples
- Method signatures with parameter types
- Comprehensive hover information
Troubleshooting
Extension Not Working
- Ensure you're editing a
.iss
or .lib
file
- Check that the reference files exist in the extension directory
- Try running "LavishScript: Refresh Definitions" from the command palette
- Check the Developer Console (Help > Toggle Developer Tools) for errors
Missing Suggestions
- Make sure you've typed the correct trigger pattern
- Check for typos in the prefix (e.g.,
Time.
not time.
)
- Refresh the definitions if recently updated
- Verify the file is recognized as LavishScript (check status bar)
- The extension parses files on save and change - large files may take a moment
- Include resolution is cached for performance
- Use "LavishScript: Refresh Definitions" if autocomplete seems outdated
Contributing
For issues, feature requests, or questions, you can message me in the Lavish Software Discord.
License
This extension is provided as-is for the LavishScript community.