There is an option in the settings: "objectscript.export.addCategory",  when it's set to true, it will add categories for different file types.

In uppercase CLS for files "cls",  and RTN for "int", "mac", "inc".

The next coming version will support the way to have more control over it, where the left side for extension of a file, and the right part for a category name

"objectscript.export.addCategory": {
  "cls": "_cls",
  "mac": "_mac",
  "int": "_int",
  "inc": "_inc"
}

look at this exercise, it may help you to get how to achieve it

  Set id = 1
  Set streamGN = $Name(^IRIS.TempStream)
  Kill @streamGN
  Set @streamGN@(id, 1) = "some binary data chunk 1"
  Set @streamGN@(id, 2) = "some binary data chunk 1"

  Set lastChunk = $Order(@streamGN@(id, ""), -1)
  Set @streamGN@(id) = lastChunk
  Set size = 0
  For chunk=1:1:lastChunk {
    Set size = size + $Length(@streamGN@(id, chunk))
  }
  Set @streamGN@(id, 0) = size

  Set stream = ##class(%Stream.GlobalBinary).%Open($Listbuild(id, , streamGN))
  While 'stream.AtEnd {
    Write !,stream.Read()
  }
  Quit

Remember about the second parameter in methods like Get and Post, which named test, which you can use for debugging purposes.

 If test is 1 then instead of connecting to a remote machine it will just output what it would have send to the web server to the current device, if test is 2 then it will output the response to the current device after the Get. This can be used to check that it will send what you are expecting.

Just install this extension for Docker, and you will be able to up, and down compose configuration, from the context menu on file, or from the command palette. 

And of course, after that, you will be able to set any shortcut for those commands

Another solution would be to use tasks in VSCode. So, you can add new or edit file .vscode/tasks.json, with content like this.

{
  // See https://go.microsoft.com/fwlink/?LinkId=733558
  // for the documentation about the tasks.json format
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Compose Build",
      "type": "shell",
      "command": "docker-compose build",
    },
    {
      "label": "Compose Up",
      "type": "shell",
      "command": "docker-compose up",
    }
  ]
}

And by command Run task from the command palette, it will offer to select which task to run.

Good to hear that you solved it. Unfortunately, development workflow guide is on the way, yet. But I'm going to do it this month.

First of all, any logging related to this extension goes to Output ObjectScript, so, you maybe can find there errors, or compile log.

Actually, it should compile class and notify about success or errors, just after change and save any class/routine.

Import and compile from explorer, good to use when you have changed many files in the sources folder, by Source Control System for example.

You can also trigger compile from command pallete and with a shortcut Cmd +F7/ Cmd + F7

I would not agree with the way of using "in-memory global" instead for logging. It would be easier to have one ClassMethod  Log, which would log everything needed to be logged, it can do it with objects, which would have indexes for future usage, to get faster access. But it can temporarily switch off journalling at all, or just suspend the transaction. In any normal application, any logging should already be centralized. So, it would not add any complexity for an application. But in some cases quite difficult to debug some issues, when you lost some logging because they were rollbacked.