Home Applications VSCode-ObjectScript

VSCode-ObjectScript

by Dmitry Maslennikov on behalf of CaretDev
This application is not supported by InterSystems Corporation. Please be notified that you use it at your own risk.
4.89
19 reviews
0
Awards
17.2k
Views
0
IPM installs
3
18
Details
Releases
Reviews
Issues
Pull requests
Articles
VSCode extension for InterSystems products

What's new in this version

  • Enhancements

    • Overhaul WorkspaceSymbolProvider (#772)
    • Add Open Shell in Docker option to Server Actions menu (#778)
    • Preliminary web extension support (#782)
    • Check all local folders in multi-root workspace for local copy of file (#785)
  • Fixes

    • Fix FileSystemProvider mtime caching (#770)
    • Comply with new VS Code policy for scoping access to VS Code proposed API (#771)
    • Append .pkg to package name when passed to source control / server command extensions (#776)
    • Improve error messaging for Studio Actions (#784)
    • Upgrade vulnerable dependencies (#787)
  • Fixes

    • Debugger: Breakpoint with no hitCondition cannot be set (#766)
  • Enhancements

    • Add 'Show Class Documentation Preview' button and command.
    • Improve how line comment markers carry over when newline is entered (#541)
    • Allow server-side source control class UserAction method call with Action=3 to launch an http/s or ftp/s URL in the external browser (contributed by @a-boertien).
    • Add support for conditional breakpoints.
    • Improve documentation.
  • Fixes

    • Prevent save of isfs class if filename doesn't match the class it defines (#410)
    • Refresh ObjectScript Explorer after export (#502)
    • Improve message when /api/atelier web application is disabled or missing (#752)
    • Correctly handle dots in routine names, preventing two copies of the same routine from being opened concurrently (#748)
    • Handle multiple selections when performing compile or delete from ObjectScript Explorer (#746)
    • Revert document instead of attempting an undo when server-side source control signals this is necessary.
    • Resolve issue causing unusable authentication page after CSP timeout.
    • Fix XML to UDL conversion.
    • Upgrade vulnerable dependencies.
  • Require confirmation before compiling all code in namespace (#677)

  • Respect maxResults parameter when running server-side search (#713)

  • Handle multiple spaces between Class keyword and classname (#717)

  • Report license starvation connection error properly (#721)

  • Display AfterUserAction errors reported by server-side source control (#701)

  • Preserve user edit if it triggered a successful checkout in server-side source control (#703)

  • Fix failing Go to Definition from CSP file when working with isfs (#727)

  • Support 'Open Document' action by server-side source control (#731)

  • Upgrade vulnerable dependency.

  • Add Watchpoint support to debugging (#697)

  • Make QuickOpen respect any filter=xxx query parameter on the isfs folder definition (#593)

  • Fix unexpected alerts about server-side copy being newer when working with isfs (#683)

  • Always run isfs dialog's serverInfo request in the %SYS namespace (#682)

  • Fix "Cannot read property 'toLowerCase' of undefined" error on startup (#693)

  • Report problem if isfs workspace definition points to non-existent server definition (#695)

  • Give clearer messages if user has insufficient privilege on the server (#678)

  • Allow opting out of 'Other Studio Action' server-side source control calls (#691)

  • Allow extension to work in untrusted workspaces.

  • Don't switch to File Explorer view when opening a file from ObjectScript Explorer (#651)

  • Scroll to correct line after an Output panel link is clicked (#657)

  • Handle compilation errors better (#673)

  • Improve documentation.

  • Upgrade vulnerable dependencies.

  • Support client-side web app (CSP) workflow as long as web app path is in the /csp/* space (#147, #449)

  • Add compile-only commands 'Compile Current File' and 'Compile Current File with Specified Flags...' (#595)

  • Add 'Edit Other' command plus menu option below 'View Other' (#309)

  • Report server-side errors from imports and isfs saves (#391)

  • Use web app token when authenticating with Management Portal and Class Reference.

  • Permit empty argument list in 'Debug this' (#642)

  • Add objectscript.compileOnSave setting to turn off post-save compile (#594)

  • Treat system=1 parameter on non-%SYS isfs folder spec as signal to include %-items (#623)

  • Add objectscript.multilineMethodArgs setting to use UDL parameter supported on servers with API version 4+ (#457)

  • Add snippets for business processes.

  • Prevent leading space in front of Class keyword from blocking import (#613)

  • Import into the correct namespace when working with multi-root workspace (#535)

  • Refactor 'Jump to Line' to use DocumentSymbolProvider.

  • Improve 'View Other' when working with servers supporting API version 4+ (#363)

  • Support Language Server enhancement that opens local copy of file when using 'Go to Definition' in client-side editing mode.

  • Update connections when settings are changed (#608)

  • Improve documentation.

  • Upgrade vulnerable dependencies.

  • Avoid prompting for already-saved password (#61)

  • Constrain QuickOpen list contents when isfs folder path targets a specific package (#581)

  • Show isfs folder label in breadcrumb even without proposed APIs enabled (#599)

  • Improve information about compiler flags (#532)

  • Add clickable links to compilation error text in Output pane (#386)

  • Relabel Variables folders in debugger to be Private and Public instead of Local and Global (#482)

  • Fix debugging breakpoint command message when class has multiple packages (#597)

  • Support expansion of orefs in debugger Variables pane provided server-side API version implements the necessary support (#598)

  • Improve README.

  • Upgrade vulnerable dependencies.

Known Vulnerabilities
Visual Studio Marketplace Version



InterSystems ObjectScript extension for VS Code

Note: The best way to install and use this extension is by installing the InterSystems ObjectScript Extension Pack and following the documentation here.

InterSystems® ObjectScript language support for Visual Studio Code, from the InterSystems Developer Community.

Features

  • InterSystems ObjectScript code highlighting support.
  • Debugging ObjectScript code.
  • Intellisense support for commands, system functions, and class members.
  • Export of existing server sources into a working folder:
    • open Command Palette (F1 or /Ctrl+Shift+P)
    • start typing ‘ObjectScript’
    • choose ObjectScript: Export Code from Server
    • press Enter
  • Save and compile a class:
    • press /Ctrl+F7
    • or, select ObjectScript: Import and Compile Current File from Command Palette
  • Direct access to edit or view server code in the VS Code Explorer via isfs and isfs-readonly FileSystemProviders (e.g. using a multi-root workspace). Server-side source control is respected.
  • Server Explorer view (ObjectScript: Explorer) with ability to export items to your working folder.
  • Integration with with InterSystems Server Manager for secure storage of connection passwords.

Installation

Install Visual Studio Code first.

Then to get a set of extensions that collaborate to bring you a great ObjectScript development experience, install the InterSystems ObjectScript Extension Pack.

When you install an extension pack VS Code installs any of its members that you don’t already have. Then if you ever need to switch off all of those extensions (for example, in a VS Code workspace on a non-ObjectScript project) simply disable the extension pack at the desired level. Member extensions can still be managed individually.

Open VS Code. Go to Extensions view (/Ctrl+Shift+X), use the search string @id:intersystems-community.objectscript-pack and install it.

Enable Proposed APIs

This extension is able to to take advantage of some VS Code APIs that have not yet been finalized.

The additional features (and the APIs used) are:

To unlock these features (optional):

  1. Download and install a beta version from GitHub. This is necessary because Marketplace does not allow publication of extensions that use proposed APIs.

    • Go to https://github.com/intersystems-community/vscode-objectscript/releases
    • Locate the beta immediately above the release you installed from Marketplace. For instance, if you installed 2.12.5, look for 2.12.6-beta.1. This will be functionally identical to the Marketplace version apart from being able to use proposed APIs.
    • Download the VSIX file (for example vscode-objectscript-2.12.6-beta.1.vsix) and install it. One way to install a VSIX is to drag it from your download folder and drop it onto the list of extensions in the Extensions view of VS Code.
  2. From Command Palette choose Preferences: Configure Runtime Arguments.

  3. In the argv.json file that opens, add this line (required for both Stable and Insiders versions of VS Code):

"enable-proposed-api": ["intersystems-community.vscode-objectscript"]
  1. Exit VS Code and relaunch it.
  2. Verify that the ObjectScript channel of the Output panel reports this:
intersystems-community.vscode-objectscript version X.Y.Z-beta.1 activating with proposed APIs available.

After a subsequent update of the extension from Marketplace you will only have to download and install the new vscode-objectscript-X.Y.Z-beta.1 VSIX. None of the other steps above are needed again.

Notes

  • Connection-related output appears in the ‘Output’ view while switched to the ‘ObjectScript’ channel using the drop-down menu on the view titlebar.

  • The /api/atelier/ web application used by this extension usually requires the authenticated user to have Use permission on the %Development resource (read more). One way is to assign the %Developer role to the user.

  • If you are getting ERROR # 5540: SQLCODE: -99 Message: User xxx is not privileged for the operation when you try to get or refresh lists of classes, routines or includes, then grant user xxx (or a SQL role they hold) Execute permission for the following SQL Procedure in the target namespace.

GRANT EXECUTE ON %Library.RoutineMgr_StudioOpenDialog TO xxx
Version
1.2.102 Dec, 2021
Category
Developer Environment
Works with
CachéEnsembleHealthShareInterSystems IRIS
First published
16 Jan, 2019
Last checked by moderator
27 Jun, 2023Works