For list of latest changes, please see the Change Log at the main GitHub repository.
This extension adds rich language support for HPCC Systems ECL language (for the HPCC-Platform) to VS Code, including:
- Syntax highlighting
- Auto completion
- Client tools discovery and integration
- HPCC-Platform server support
- Integrated result viewer
- Improved KEL client-tool discovery, including installations found in HPCC Systems locations and the local Maven repository.
- Added the
kel.kelPathsetting to select a preferred KEL installation instead of using automatic detection. - Added clearer progress, completion, failure, and diagnostic feedback for KEL syntax checking and ECL generation.
- Added
ecl.preferredECLWatchsetting, allows user to nominate preferred version of ECL Watch when opening "external" pages.
- Added context menu to ECL bundles and ECL Client Tools
- Added
ecl.WUShowResultssetting, allows user to control how results are displayed after submitting a workunit.
- Added
ecl.submitNoArchivecommand, submits raw content of editor to server without creating an archive first. - Added
ecl.pingIntervalsetting, allows user to change or disable the "server alive" ping. - Updated shift+F1 help to use new HPCC Systems website and include the Standard Library.
- Added
ecl.saveOnSyntaxCheckandecl.saveOnSubmitoption to ECL Settings (defaulting to off to match ECL IDE behaviour).
- Add
pathoption to launch configuration (to assist with proxy servers).
- Add
Copy WUIDcontext menu.
- Add
ecl.forceProxySupportsetting.
- Added extra support for Trustwave CA authority.
- Fixed issue with
rejectAuthorized: falsebeing ignored. - Updated translations, added FR locale.
- Added "Copy as ECL ID" command to explorer and editor tab context menus.
- Added "Import MOD file" command
- Enhanced digital signature support:
- ECL: Verify ECL Signature
- KEL:
- Optionally use grammar for syntax as you type checking (now off by default).
- Improved syntax highlighting
- Default syntax checking "on open" to
true
- Added digital signature support:
- ECL: Sign ECL
- Preliminary localisation support:
- en
- zh
- pt-br
- es
- Added HPCC resources page:
- List of available bundles:
- Install
- Uninstall
- Open homepage
- List of available client tools
- Select (force) specific version
- Deselect forced version
- Open terminal for specific version
- Open download page for Client Tools
- List of available bundles:
- Added context menu items for Workunits in the Workunit Tree:
- Abort Workunit (only available for running WUs)
- Delete Workunit (Only available for completed WUs)
- Added result viewer to bottom pane
- Added "Copy Results as ECL"
- Added list of "found" logical files to Insert Record Definition
- Added Insert Record Definition menu item
Reworked submission process:
- Launch configuration:
- Simplified
- Can be selected from the status bar
- Can be pinned to specific ECL files
- Target Cluster:
- Can be selected from the status bar
- Can be pinned to specific ECL files
- Submit / Compile now available from:
- Context menu
- Top of editor
- Recent Workunits:
- Tree view of recent workunits
- Toggle between "Mine" and "All"
- Open in external browser icon added to several locations
Version 2.x introduces a new streamlined submission process. The "old" Run/Debug pane support has been deprecated and will be removed in the future.
- Open folder
- Open ECL file
- Create Launch Configuration (if needed)
- Select the target by:
- Clicking the "Launch Configuration" in the status bar
- Optionally clicking on the "Target Cluster" in the status bar
- Monitor Workunit in the "Workunit History" pane
- Click on Workunit to view results / issues in the bottom pane
Important: As of version 2.33.0, the extension now uses VS Code's secure storage for HPCC Platform credentials instead of storing passwords in plaintext in your launch configuration files.
- Your passwords are now encrypted using your operating system's native credential manager (Windows Credential Manager, macOS Keychain, or Linux Secret Service)
- No more plaintext passwords in workspace files that could accidentally be committed to version control
- Automatic migration: Existing passwords are automatically moved to secure storage on first use
- Stay logged in across VS Code sessions without re-entering credentials
Nothing! The migration happens automatically. When you connect to an HPCC Platform:
- If a password exists in your launch configuration, it will be securely stored and removed from the file
- For new connections, you'll be prompted for credentials which will be securely saved
- Your credentials persist across VS Code restarts
You can safely remove any "password" fields from your launch.json files if you prefer.
The extension contributes the ECL chat participant (chat.ecl) and Language Model tools registered in src/ecl/lm/tools.ts. The participant can:
- Answer ECL language and standard-library questions using the bundled documentation vector index.
- Use selected text or the active ECL editor as bounded workspace context.
- Review ECL for portable correctness and performance risks.
- Syntax-check concrete ECL with the configured HPCC Client Tools connection.
- Compile generated functions, macros, and modules with a BWR integration harness.
- Search logical files and inspect connected HPCC workunits, errors, archived ECL, and metrics.
Generated or modified ECL follows a review then syntax-check workflow. Callable constructs also receive an integration compile when a representative harness can be generated. The assistant reports pass, conditional_pass, fail, or unavailable; it does not claim that code is verified when client tools or a platform connection are unavailable.
The ECL participant never submits or executes generated code as part of verification. Workspace source and compiler output are provided to the selected language model as request context. Use ecl.ai.workspaceContextCharacters to limit how much active-editor source is included.
NOTE: These features depend on the VS Code Language Model / Chat APIs which are still evolving. Behavior may change in future VS Code versions.
Ask the ECL participant directly:
Example:
@ecl Review the selected JOIN, fix high-severity findings, and verify the result.
Syntax and integration checks require an active HPCC configuration with discoverable client tools. Documentation and static review remain available without a platform connection.
The following ECL specific commands are available. Note: These commands will not be active until an ECL file has been opened (as this triggers the extension to load). To activate a command either use its associated hotkey or press ctrl/cmd+shift+p and type ECL this will present a filtered list of the ECL specific commands:
| Command | Shortcut | Description |
|---|---|---|
| Syntax Check All Files | shift+F7 | Save All + check syntax of all files. |
| Syntax Clear | ctrl/cmd+F7 | Clear all previously reported ECL Syntax Check results |
| Import '.mod' file | Import MOD file into workspace | |
| Language Reference Website | Opens the ECL language reference website in external browser | |
| Terminal | Opens ECL Client Tools Terminal Session |
| Command | Shortcut | Description |
|---|---|---|
| Copy as ECL ID | Copy path as Qualified ECL ID |
| Command | Shortcut | Description |
|---|---|---|
| Copy WUID | Copy workunit ID to clipboard | |
| Abort Workunit | Abort running workunit | |
| Delete Workunit | Delete completed workunit |
| Command | Shortcut | Description |
|---|---|---|
| Copy as ECL ID | Copy path as Qualified ECL ID |
| Command | Shortcut | Description |
|---|---|---|
| Launch Configuration | Click to select launch configuration | |
| Target Cluster | Click to select target cluster | |
| Pin | Pin current launch configuration and target cluster to current document | |
| Client Tools | Click to select client tools version |
All commands in the Result View are available via context menu.
| Command | Notes |
|---|---|
| Copy Column as ECL Set | Right Click on Column Header |
| Copy Row as ECL | Right Click in Result Body |
| Copy All as ECL | Right Click in Column Header or Result Body |
Purpose: Validate logic (utilities, transformations) quickly without starting a VS Code Extension Host.
Run in watch mode:
npm run test-vitest
Run once:
npm run test-run
Run with coverage:
npm run test-coverage
Run the VS Code integration tests:
npm run test-integration
Configuration lives in vitest.config.ts (jsdom environment). Avoid importing heavy VS Code APIs directly—wrap them so they can be mocked for unit tests.
test/manifest.test.ts validates that required activation events and core commands are present in package.json without launching VS Code.
Runs lint -> build -> unit tests.
npm test
The following Visual Studio Code settings are available for the ECL extension. These can be set in user preferences (ctrl/cmd+,) or directly in your current workspace (.vscode/settings.json):
// Override eclcc auto detection.
"ecl.eclccPath": ""
// eclcc arguments.
"ecl.eclccArgs": [],
// eclcc syntax check arguments.
"ecl.eclccSyntaxArgs": [],
// Write eclcc log file to specified file.
"ecl.eclccLogFile": ""
// Run 'eclcc -syntax' on save.
"ecl.syntaxCheckOnSave": true
// Run 'eclcc -syntax' on load.
"ecl.syntaxCheckOnLoad": true
// Additional folders to use when resolving IMPORT statements.
"ecl.includeFolders": []
// Add '-legacy' argument to eclcc.
"ecl.legacyMode": false
// Debug level logging (requires restart).
"ecl.debugLogging": false
// Show results after submitting a workunit.
"ecl.WUShowResults": internal | external | disabled
// Force global 'proxySupport' to 'fallback'
"ecl.forceProxySupport": false
// Save file prior to syntax check
"ecl.saveOnSyntaxCheck": false
// Save file prior to submission
"ecl.saveOnSubmit": false
// Preferred version of ECL Watch (default v9).
"ecl.preferredECLWatch": v9 | v5Submitting ECL using VS-Code requires specifying the target environment within the VS Code launch.json (pressing F5 will prompt you to auto create a skeleton file if none exists):
// Default ECL Launch Configuration
{
"name": "localhost",
"type": "ecl",
"request": "launch",
"protocol": "http",
"serverAddress": "localhost",
"port": 8010,
"targetCluster": "hthor",
"path": "",
"abortSubmitOnError": true,
"rejectUnauthorized": true,
"resultLimit": 100,
"timeoutSecs": 60,
"user": "vscode_user",
"password": ""
}KEL is an optional language that can generate ECL.
The following KEL specific commands are available. Note: These commands will not be active until a KEL file has been opened (as this triggers the extension to load). To activate a command either use its associated hotkey or press ctrl/cmd+shift+p and type KEL this will present a filtered list of the KEL specific commands:
- Syntax Check [F7] - Save + check syntax of current file.
- Generate ECL [F5] - Save + generate ECL files.
- Reveal Generated ECL - Open the generated ECL folder in the file explorer.
Click on KEL Client Tools Version
- Select Client Tools Version - Select Client Tools Version from available options.
The following Visual Studio Code settings are available for the KEL extension. These can be set in user preferences (ctrl/cmd+,) or directly in your current workspace (.vscode/settings.json):
KEL is auto-detected from supported HPCC Systems installations and the local Maven repository. Set kel.kelPath to use a specific KEL.jar; selecting a client-tools version also stores that preferred path.
// Java runtime arguments (e.g. -Xmx12G).
"kel.javaArgs": []
// Override KEL auto detection with a preferred KEL.jar path.
"kel.kelPath": ""
// Check syntax on save.
"kel.syntaxCheckOnSave": true
// Generated ECL location (Same Folder | Child Folder)."
"kel.generateLocation": "Same Folder"
// "Generate ECL on save."
"kel.generateOnSave": false
// Check syntax on load.
"kel.syntaxCheckOnLoad": true
// Check syntax with KEL grammar (fast)
"kel.syntaxCheckFromGrammar": falseTo set up a development environment for debugging the ECL for VS Code extension:
cd /Some/Dev/Folder/
git clone https://github.com/hpcc-systems/vscode-ecl
cd vscode-ecl
git submodule update --init --recursive
npm installAt which point you can open the vscode-ecl folder within VS Code.
Next start the background build process by pressing ctrl+shift+b (which will run the default build command in .vscode/tasks.json)
At which point you can edit the sources and launch debug sessions via F5 and included launch configurations.














