This extension provides rich OpenEdge ABL support for Visual Studio Code - Extension page
This extension is based on the work of Christophe Camicas but has been completely overhauled with the addition of the Language Server. It is actively maintained, so unless you prefer not to switch to the new configuration files, you should use this extension. Currently, this extension is available for free; however, please note that some features might become available only in a commercial edition in the future.
🆕 🚀 This extension is now sponsored by Progress Software! 🚀
This extension requires at least one OpenEdge installation with a developer license. The extension is currently tested with 11.7, 12.2, and 12.8. It may or may not work with older versions.
OpenEdge runtimes have to be declared in the VSCode configuration file. Open settings (Ctrl + comma)
-> Extensions -> ABL Configuration -> Runtimes, or modify settings.json
:
OpenEdge projects can be configured in a file called openedge-project.json
. This file must be in the root directory of the project.
You can also create the openedge-project.json file from an ABL session (PDSOE or plain prowin/_progres) by executing this procedure (provided by Carl Verbiest).
The extension is activated when a .p
, .w
, or .cls
file is opened. ABL actions may fail before the extension is activated.
The following actions are defined in this extension (use Ctrl + Shift + P to execute actions):
-b
)The following keyboard shortcuts are configured by default:
On top of the default profile configured in openedge-project.json
, additional profiles can be configured in the profiles
section. Each profile is defined by a name, parent's name (optional) and a set of values. For example:
V11 Profile inherits from the default profile, so graphicalMode will be set to true. OpenEdge version and DB connections are specified in the profile. V12.2 GUI Profile doesn't inherit from the default profile, so it won't have any DB connection. When opening a project, VSCode will check for .vscode/profile.json
. If this file is present, then this profile will be loaded. Otherwise, the default profile will be used. It is recommended to add this file to the SCM ignore list.
You can use the debugger to debug a remote ABL session (assuming it is started with -debugReady) or PASOE instance (assuming that oedebugger webapp is deployed).
The debugger supports these features:
You first need to create the launch configuration in your .vscode/launch.json
file; use Ctrl + Shift + D
to open the "Run and Debug" view, then click on "Add Configuration" and select one of the ABL options.
{ "version": "0.2.0", "configurations": [ { "name": "Attach to AVM", "type": "abl", "request": "attach", "hostname": "127.0.0.1", "mode": "legacy", "port": 3099, "pause": true, "localRoot": "${workspaceFolder}" } ] }
To attach to a remote process, it needs to be debug-ready. The easiest way to achieve that is to add -debugReady 3099
to the startup parameters (.pf
file) of your application server. When debugging a local procedure, VSCode will always start the AVM session with -debugReady 9999
, so it won't be possible to start two debug sessions at the same time. This limitation will probably be lifted in the future. The debugger will also stop at the first instruction, which is always a VSCode-specific procedure. You can immediately type F5
to jump to the first executable line of your procedure.
CABL (Code analysis for ABL) is now available as a separate VS Code extension. It is currently not available on the VS Code marketplace, the extension has to be downloaded from its GitHub repository, and installed with "Extensions: Install from VSIX..." command (type Ctrl
+ Shift
+ P
, then vsix
).
SonarLint CABL requires Java 17 to be executed. If Java 17 is not available in your PATH, you can configure it in the VS Code settings:
Once configured and initialized, configure the connection to your SonarQube server. Open the "SonarLint CABL" view, and click on the "Add SonarQube Connection" button. Note that SonarCloud connection is not supported with ABL (and will never be supported).
Then bind your local project to a remote SonarQube project by clicking on the "Add Project Binding" button:
Select the remote project:
Check that binding is present in SonarLint CABL view:
CABL rules will now be executed when any ABL file is saved in VS Code:
Use ABLUnit Test Runner extension
Here are a few things to verify before opening issues:
openedge-project.json
file is present in the root directory and has no syntax errors..p
or .cls
file is opened, as the extension is not active by default..builder
directory in your project; it contains valuable log files.source
directories in your configuration file; propath
entries are not monitored, and thus nothing would be recompiled.Initial plugin development done by chriscamicas. In turn, largely inspired by ZaphyrVonGenevese work (https://github.com/ZaphyrVonGenevese/vscode-abl). Also inspired by vscode-go and vscode-rust extensions.
Thanks to all the contributors: mscheblein, Peter Judge
VSCode Plugin Code is licensed under the MIT License. Language Server code is © Copyright Riverside Software. OpenEdge and ABL are registered trademarks of Progress Software Corporation.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4