Dmitry Maslennikov · Jan 14, 2019

VSCode extension for InterSystems ObjectScript update

I'm pleased to announce the latest version of the renewed for ObjectScript, which is now available with a lot of new features.

This new extension is a fork of previously developed extension in different repository originally started by @Oleg Dmitrovich.

You can find a new repository here.

So, what's new:

  • Better syntax highlighting which supports classes and routines.

  • Intellisense for commands with documentation.

  • Intellisense for system functions and variables, also with some documentation

  • Hover documentation with the link to online documentation, for system functions, variables and commands

  • Go to symbol (⌘+Shift+O, Ctrl+Shift+O) supports classes for all class members and routines for labels. You can also you Outline view to navigate by code

  • Server Explorer, you can open any file from a server in a read-only mode

  • View Others (⌘+Shift+V, Ctrl+Shift+V)

  • Go To Definition (⌘+Click, Ctrl+Click, F12)

  • macOS with TouchBar support, added two buttons, Import with compile and View Others

Fill free to fill any issues or enhancement requests here. Of course, you can also send pull-requests. Be aware, this is an open-source project and developed for free.

I'm going to improve this extension, I have many ideas what to do next, but as fast as I will have time for it. But if you would like to support, you are very welcome.

I hope you will find this extension very useful and would like to hear any of your feedback.

10 3,167
Discussion (16)1
Log in or sign up to continue


Excellent extension ! My personal preference VSCode over Eclipse Atelier. 

Just one thing. Anyone is editing CSP files using VSCode? How do you deal with syntax highlight for CSP ? 

I'm going to be in Antwerp next month. If you want to see a live demonstration, I can do it for you. I already have some more features, to show.

Sound very nice!! Thanks @Dimitry Maslennikov I'll used it and let you know wink

I see that so many people already installed this plugin. I hope many of you already tried it in action and have some thoughts about how it can be improved. Please fill issues about any troubles you found and any new features you would like to see. I want to make this tool useful for everybody, not only for me, I need your opinion.

You did a great job!!!
I was using the old version for a while, and this new improvements help me a lot..

Thanks very much

New cool update came up with VSCode!

What's new in this version

  • IMPORTANT: Connection disabled by default, now. Set "": true to enable it
  • Automatically Preview XML files as UDL, (disabled by default, setting objectscript.autoPreviewXML)
  • Preview XML As UDL by command from Command Palette and from Context Menu
  • Fixed highlighting for XData with css in style tag
  • Show percent-member in outline
  • Multi-root workspace supported now, for different connections
  • Multi-root workspace also for server explorer
  • Go to definition now goes to real file if such presented, or opens from the server
  • Basic syntax highlighting for CSP files, only as HTML
  • Added some snippets for class
  • Go to Subclass for the current class, available in command palette
  • Go to Super class for the current class, available in command palette
  • Go To any class/method in the workspace including server (by Cmd+T/Ctrl+T)
  • some small fixes in the highlighting, and selecting words/variables
  • Intellisense. Show list of methods for ##class(SomeClass)
  • Go to macros definition
  • Go to definition for methods and properties for self object like ..Name..SomeMethod()
  • Added completion for class parameters
  • Export without storage

Well done, Dmitry!

Like the clickable InterSystems Data Platforms tags in the repo:

@Dmitry Maslennikov , could you share, please, the code to be inserted into to introduce it into the repo?

You can find them in the source of README


Yes, debugging finally here. Extended release notes with details how use all new features will be published here this week. Stay tuned.

Dmitriy, this is awesome and thank you for your work on this!

I've looked through the issues and the discussion and I don't think I've seen anyone post feedback about password security.  Thought I'd discuss here before posting it as an 'issue'.

In our org, we can develop locally, sure, but usually we are developing in a low level development namespace on the server, thus we are usually connecting to the server.  In our org our username and password happen to also be the same credentials for our Windows login, network, everything really.  

Are there ways to avoid hard coding the password in the extension settings?  Or is this a feature that can be developed?

That said, it seems you have to specify the namespace in the settings as well.  Is there a faster way to toggle between namespaces?

Thank you!


Mike, thanks for the feedback.

Questions about passwords were raised privately. But mostly about secure storage. Your case very different, and even maybe better way, to have SSO instead of storing passwords. It will need some research, but I'm sure it will be possible to implement it. As a company CaretDev, I would like to offer commercial support to your company. So, it will be easier to find time to implement any features, you would like to have.

About toggle between namespaces. I don't know why do you need it, and how you going to use it. The main point of VSCode is sources stored locally, when you will toggle namespace, how you going to keep namespaces correctly updated?

Or you can use a server-side editing feature. You can create file myapp.code-workspace in the root of your project, press button Open workspace. And you will have connection to USER and %SYS namespaces as well, so, just add more isfs URLs with ns=NAMESPACE.

  "folders": [
      "name": "myapp",
      "path": ".",
      "uri": "isfs://myapp",
      "name": "server",
      "uri": "isfs://myapp?ns=USER",
      "name": "user",
      "uri": "isfs://myapp?ns=%SYS",
      "name": "system",
  "settings": {
    "files.exclude": {},
    "objectscript.conn": {
      "active": true,
      "username": "_system",
      "password": "SYS",
      "ns": "MYAPP",
      "port": 52773,
    "objectscript.serverSideEditing": true