Announcement
· 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.

Discussion (16)1
Log in or sign up to continue

New cool update came up with VSCode!

What's new in this version

  • IMPORTANT: Connection disabled by default, now. Set "objectscript.conn.active": 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!

You can find them in the source of README

[![](https://img.shields.io/badge/InterSystems-IRIS-blue.svg)](https://www.intersystems.com/products/intersystems-iris/)
[![](https://img.shields.io/badge/InterSystems-Caché-blue.svg)](https://www.intersystems.com/products/cache/)
[![](https://img.shields.io/badge/InterSystems-Ensemble-blue.svg)](https://www.intersystems.com/products/ensemble/)

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

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
  }
}