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
- Added context menu to ECL bundles and ECL Client Tools
- Added
ecl.WUShowResults
setting, allows user to control how results are displayed after submitting a workunit.
- Added
ecl.submitNoArchive
command, submits raw content of editor to server without creating an archive first. - Added
ecl.pingInterval
setting, 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.saveOnSyntaxCheck
andecl.saveOnSubmit
option to ECL Settings (defaulting to off to match ECL IDE behaviour).
- Add
path
option to launch configuration (to assist with proxy servers).
- Add
Copy WUID
context menu.
- Add
ecl.forceProxySupport
setting.
- Added extra support for Trustwave CA authority.
- Fixed issue with
rejectAuthorized: false
being 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
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 |
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
// Ping interval (secs, -1 to disable)
"ecl.pingInterval": 5
Submitting 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.
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
):
// Java runtime arguments (e.g. -Xmx12G).
"kel.javaArgs": []
// Override KEL auto detection
"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": false
To 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 install
At 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.