A VS Code extension providing intelligent autocomplete and IntelliSense for Q-SYS plugin development in Lua.
This extension provides autocomplete support and hover documentation for Q-SYS plugin design-time functions and properties based on the Q-SYS Developer Documentation.
.luafiles.qplugfiles
Hover over Q-SYS-specific keywords to see helpful documentation including:
- Design-Time Functions (10) -
GetProperties,GetControls,GetControlLayout,GetPages,GetComponents,GetPins,GetColor,GetPrettyName,RectifyProperties,GetWiring - Control Properties (18) -
Name,Type,ControlType,ButtonType,IndicatorType,ControlUnit,PinStyle,UserPin,Count,Icon,IconType,Min,Max,Value,Choices,Header,Comment,Description - Layout Properties (31) -
PrettyName,Style,Position,Size,ButtonStyle,MeterStyle,TextBoxStyle,ShowTextbox,IsReadOnly,Margin,Padding,Color,TextColor,Fill,StrokeColor,StrokeWidth,BackgroundColor,OffColor,UnlinkOffColor,IconColor,CornerRadius,Radius,FontSize,Font,FontStyle,HTextAlign,VTextAlign,WordWrap,Legend,ZOrder - Runtime Properties (16) -
Value,String,Boolean,Position,EventHandler,Legend,RampTime,IsDisabled,IsInvisible,IsIndeterminate,Color,Choices,Values,Index,Trigger - Font Families (11) - Hover over font names like
"Roboto"or"Montserrat"to see all supported FontStyles for that font
Type Property to see all options:
Property string- String property with Name, Type, ValueProperty integer- Integer property with Name, Type, Min, Max, ValueProperty double- Double property with Name, Type, Min, Max, ValueProperty boolean- Boolean property with Name, Type, ValueProperty enum- Enum property with Name, Type, Choices, Value
All properties include optional commented Header and Comment fields.
Type Control to see all options:
Control Button- Button control with ButtonType, Count, UserPin, PinStyleControl Indicator- Indicator control with IndicatorType, Count, UserPin, PinStyleControl Knob- Knob control with ControlUnit, Min, Max, Count, UserPin, PinStyleControl Text- Text control with Count, UserPin, PinStyle
Type Layout to see all options:
Layout Button- Button layout with PrettyName, Style, ButtonStyle, Position, SizeLayout ComboBox- ComboBox layoutLayout Fader- Fader layout with ShowTextbox optionLayout General- General layout template with Style dropdownLayout Knob- Knob layoutLayout Led- LED layoutLayout ListBox- ListBox layoutLayout Media- Media layoutLayout Meter- Meter layout with MeterStyle optionsLayout None- None layout (hidden control)Layout Text- Text layout
Type Graphics to see all options:
Graphics GroupBox- GroupBox graphicGraphics Header- Header graphicGraphics Image- Image graphic with base64 Image propertyGraphics Label- Label graphicGraphics Svg- SVG graphic with base64 Image property
Type Pins Insert to get pin definition completion:
Pins Insert- Pin definition with Name, Direction, and Domain properties for GetPins function
Example usage:
function GetPins(props)
local pins = {}
table.insert(pins, {
Name = "Audio Output",
Direction = "output",
Domain = "audio"
})
return pins
endType Components Insert to get component definition completion:
Components Insert- Component definition with Name, Type, and Properties for GetComponents function
Example usage:
function GetComponents(props)
local components = {}
table.insert(components, {
Name = "MainMixer",
Type = "mixer",
Properties = {
["n_inputs"] = 8,
["n_outputs"] = 1
}
})
return components
endType Runtime to see all options for accessing controls at runtime:
Runtime value- Controls['controlName'].Value (Read/Write floating point)Runtime string- Controls['controlName'].String (Read/Write string representation)Runtime boolean- Controls['controlName'].Boolean (Read/Write boolean, true if position > 0.5)Runtime position- Controls['controlName'].Position (Read/Write position from 0.0 to 1.0)Runtime eventhandler function- Assign a function reference to EventHandlerRuntime eventhandler inline- Assign an inline function to EventHandler
Example usage:
Controls['MyButton'].Value = 1
Controls['Volume'].EventHandler = VolumeChanged
Controls['Mute'].EventHandler = function()
-- Handle control change
endAutocomplete for individual layout and graphics properties:
- BackgroundColor
- ButtonStyle
- ButtonVisualStyle
- ClassName
- Choices
- Color
- CornerRadius
- Count
- CustomButtonDown
- CustomButtonUp
- Fill
- Font
- FontSize
- FontStyle
- HTextAlign
- IconColor
- IconType
- Image
- IsBold
- IsReadOnly
- Legend
- Margin
- Max
- MeterStyle
- Min
- OffColor
- Padding
- Position
- PrettyName
- Radius
- ShowTextbox
- Size
- StrokeColor
- StrokeWidth
- Style
- Text
- TextBoxStyle
- TextColor
- Type
- UnlinkOffColor
- VTextAlign
- WordWrap
- ZOrder
- Download the latest
.vsixfile - In VS Code, go to Extensions (Ctrl+Shift+X)
- Click the "..." menu at the top
- Select "Install from VSIX..."
- Choose the downloaded
.vsixfile
- Open a
.luaor.qplugfile - Start typing one of the supported keywords:
Property- Shows all property typesControl- Shows all control typesLayout- Shows all layout typesGraphics- Shows all graphics typesRuntime- Shows all runtime control propertiesPins Insert- Pin definition for GetPins functionComponents Insert- Component definition for GetComponents function- Any property name (e.g.,
Font,Color,Position)
- Select from the autocomplete dropdown
- Use Tab to move through placeholders
- Choose from dropdown options where available
-
Reserved Functions Documentation
- Command Palette: Press
Ctrl+Shift+P(Windows/Linux) orCmd+Shift+P(Mac), then type "Q-SYS: Open Reserved Functions Documentation" - Keyboard Shortcut: Press
Ctrl+Shift+H(Windows/Linux) orCmd+Shift+H(Mac) - Opens the official Q-SYS Reserved Functions documentation in your browser
- Command Palette: Press
-
Lua Extensions Documentation
- Command Palette: Press
Ctrl+Shift+P(Windows/Linux) orCmd+Shift+P(Mac), then type "Q-SYS: Open Lua Extensions Documentation" - Keyboard Shortcut: Press
Ctrl+Shift+L(Windows/Linux) orCmd+Shift+L(Mac) - Opens the Q-SYS Extensions to Lua documentation (Timer, Component, Named Components, etc.) in your browser
- Command Palette: Press
All keyboard shortcuts only work while editing Lua files (.lua or .qplug).
- Update
package.jsonto change the language file extensions or add more features
Contributions are welcome! Please feel free to submit issues or pull requests.
- Controls Autocomplete Update - Updated controls autocomplete to use
ctrlsto match the base Q-SYS plugin naming convention
- ButtonType Completion - Added single property completion for ButtonType with options: Toggle, Momentary, Trigger, StateTrigger
- Layout Completion Capitalization - Updated all layout completions to use proper capitalization, the default table in QSYS base plugin uses "layout" all lowercase.
- Pin Completions - Added new autocomplete support for GetPins function:
Pins Insert- Pin definition completion with Name, Direction, and Domain properties- Supports both audio (default) and serial pin types
- Tab navigation through all pin properties (Name → Direction → Domain)
- Comprehensive documentation for pin properties and usage
- Component Completions - Added new autocomplete support for GetComponents function:
Components Insert- Component definition completion with Name, Type, and Properties- Tab navigation through component properties and nested Properties table
- Includes documentation about component limitations and design implications
- Hover Documentation Expansion - Significantly expanded hover tooltips:
- Added
GetPagesdesign-time function - Added control properties:
Name,Type,Icon,IconType,Min,Max,Value,Choices,Header,Comment,Description - Added layout properties:
CornerRadius,Radius,FontSize,Font,FontStyle,HTextAlign,VTextAlign,WordWrap,Legend,ZOrder,TextBoxStyle,IsReadOnly,Margin,Padding,StrokeWidth,UnlinkOffColor - Added color properties:
Color,TextColor,Fill,StrokeColor,BackgroundColor,OffColor,IconColor - Added runtime properties:
RampTime,IsIndeterminate,Choices,Values,Trigger
- Added
- Font Family Hover Support - Hover over font names (e.g., "Roboto", "Montserrat") to see all supported FontStyles for that specific font
- Name vs PrettyName Documentation - Clear hover tooltips explaining the distinction between code identifiers and display names
- Single Property Completions - Added 4 new single property completions:
Choices- List of options for enum properties or combo box controlsCount- Number of controls to createIconType- Format of Icon image (Icon, Image, SVG)MinandMax- Minimum and maximum values for numeric properties
- Quick Documentation Access - Added command and keyboard shortcut to open Q-SYS Reserved Functions documentation:
- Command: "Q-SYS: Open Reserved Functions Documentation"
- Shortcut:
Ctrl+Shift+H(Windows/Linux) orCmd+Shift+H(Mac)
- Lua Extensions Documentation - Added command and keyboard shortcut to open Q-SYS Lua Extensions documentation:
- Command: "Q-SYS: Open Lua Extensions Documentation"
- Shortcut:
Ctrl+Shift+L(Windows/Linux) orCmd+Shift+L(Mac) - Covers Timer, Component, Named Components (TcpSocket, UdpSocket, SerialPort, Ssh, etc.)
- Color Format Documentation - Simplified color property documentation to focus on table format
{r, g, b, alpha}(primary Q-SYS format) - Documentation Accuracy - Aligned all hover documentation with official Q-SYS Reserved Functions documentation
- Runtime Property Completions - 6 new completions for runtime control access:
Runtime value,Runtime string,Runtime boolean,Runtime positionRuntime eventhandler function,Runtime eventhandler inline
- Consistent Naming - Standardized all completion names with proper capitalization (e.g.,
Property string,Control Button,Runtime value) - Runtime Syntax - Updated to use
Controls['controlName']bracket notation (Q-SYS standard) - Text Control Enhancement - Added
PinStyleproperty to text control completions
- Initial release with basic autocomplete support
- Property, Control, Layout, and Graphics completions
- Basic hover documentation
MIT