A VS Code extension providing syntax highlighting, IntelliSense, and navigation for Cicode, the scripting language used in AVEVA Plant SCADA (Citect).
Disclaimer: This project is not affiliated with or endorsed by AVEVA. It is a community-driven tool to improve the Cicode development experience in VS Code.
Full syntax highlighting for .ci files including:
- Keywords, operators, and control flow
- Function declarations and calls
- Variables and type annotations
- Strings with escape sequences
- Comments (line
//,!,|and block/* */) - Doc comments (
///with XML tags) - Format picture specifiers (
:###,##0.00)
- Autocompletion for functions (built-in and user-defined)
- Signature help with parameter documentation
- Hover information showing function signatures and docs
- Go to Definition for functions and variables
- Find All References across your workspace
- Rename Symbol for variables and parameters
- Document Outline showing functions in the current file
- Workspace Symbol Search (
Ctrl+T) to find any function
- Undefined function warnings
- Argument count validation
- Duplicate function detection
- Unused variable warnings
- Line length and indentation checks
- Basic code formatter with configurable options
- Consistent indentation for control blocks
- Automatically parses function documentation from your Plant SCADA installation
- Falls back to packaged builtins if Plant SCADA is not installed
- Hover over built-in functions to see docs with a link to open the full help page
- Install from the VS Code Marketplace, or
- Download the
.vsixfile and install viaExtensions: Install from VSIX...
| Setting | Default | Description |
|---|---|---|
cicode.avevaPath |
C:/Program Files (x86)/AVEVA Plant SCADA |
Path to AVEVA Plant SCADA installation. The extension auto-finds help files. |
cicode.diagnostics.enable |
true |
Enable diagnostics (undefined functions, duplicates) |
cicode.diagnostics.ignoredFunctions |
[] |
Function names to exclude from checks |
cicode.format.enable |
true |
Enable the code formatter |
cicode.format.maxConsecutiveBlankLines |
1 |
Max blank lines to allow |
cicode.hover.showHelpLink |
true |
Show "Open full help" link in hovers |
cicode.indexing.excludeGlobs |
["**/node_modules/**"] |
Patterns to exclude from indexing |
cicode.lint.enable |
true |
Enable lint diagnostics |
cicode.lint.maxLineLength |
140 |
Warn when lines exceed this length |
cicode.lint.warnMixedIndent |
true |
Warn on mixed tabs/spaces |
cicode.lint.warnUnusedVariables |
true |
Warn about unused variables |
cicode.lint.warnMissingSemicolons |
true |
Warn when declarations lack semicolons |
cicode.lint.warnKeywordCase |
false |
Suggest uppercase keywords |
cicode.lint.warnMagicNumbers |
false |
Warn about hardcoded numbers |
| Command | Description |
|---|---|
Cicode: Rebuild Builtin Functions |
Re-parse built-in functions from help files |
Cicode: Reindex All Files |
Rebuild the workspace index |
Cicode: Open Help for Symbol |
Open AVEVA help page for the symbol under cursor |
Cicode: Insert Doc Skeleton |
Insert a doc comment template above the current function |
| Key | Command |
|---|---|
Ctrl+Alt+D |
Insert Doc Skeleton (when in a Cicode file) |
The extension supports Doxygen XML doc comments for documenting your functions:
/**
<summary>Calculates the area of a rectangle.</summary>
<param name="width">The width of the rectangle.</param>
<param name="height">The height of the rectangle.</param>
<returns>The calculated area.</returns>
**/
FUNCTION CalculateArea(REAL width, REAL height)
RETURN width * height;
END
Use Ctrl+Alt+D to automatically generate a doc skeleton for the function at your cursor.
- VS Code 1.88.0 or higher
- For built-in function docs: AVEVA Plant SCADA installation (optional, packaged fallback available)