ID:2377547
 
I've been finding VS Code to be faster and easier than Atom with less extensions needed to get it up-to-speed with other editors.

https://i.imgur.com/yESSg23.png

So far I'm able to do everything Atom can do - compile, open files or lines in Gitlab, etc. But with one added extension I have a lot more review control to Git Blame each line and run more commands on it to see changes.

Here's how to set it up:
  1. Download and install VS Code: https://code.visualstudio.com/download
  2. Click the Extensions button on the left side: https://i.imgur.com/KLErA0g.png
  3. Search for and install "Byond DM", "Gitlens", "Open in GitHub, Bitbucket, Gitlab, VisualStudio.com", "Project Manager" (optional)
  4. (Optional) Browse more extensions here: https://marketplace.visualstudio.com/VSCode. It's extremely easy to install them - they open in VS Code.


Set up the compiler:
  1. Go to Tasks > Configure Tasks: https://i.imgur.com/ZXxR1OP.png
  2. Fill in the tasks.json with the following:
    {
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
    {
    "label": "DM",
    "type": "shell",
    "command": "D:/GAMES/Byond/bin/dm.exe",
    "args": ["CD:/projects/ColonialMarinesALPHAprivate/ColonialMarinesALPHA.dme"],
    "problemMatcher": {
    "owner": "dm",
    "fileLocation": ["relative", "${workspaceFolder}"],
    "pattern": {
    "regexp": "^([^:]+):(\\d+):([^:]+): (.*)$",
    "file": 1,
    "line": 2,
    "severity": 3,
    "message": 4
    }
    },
    "group": {
    "kind": "build",
    "isDefault": true
    },
    "presentation": {
    "reveal": "always",
    "panel": "new"
    } }
    ]
    }

  3. Change the "command" and "args" lines with where you have dm.exe and the .dme stored, respectively.
  4. Save the tasks.json and then Tasks > Run Task... > DM. This should start the compile.
  5. To make this even easier and set it as a keybind, go to File > Preferences > Keyboard Shortcuts, search for "task", and edit the "Run Build Task" keybinding to whatever you want. It was F9 for me in Atom so I stuck with F9.


Furthermore, you'll probably want to tweak a few of the default program settings to fit your style. Go to File > Preferences > Settings to do this. A file will open split down the center - the right side is the editable side. You just place your settings in here and it will immediately override the defaults on the left. It doesn't care if your last setting has a comma.

Here are my settings:

{
"gitlens.advanced.messages": {
"suppressShowKeyBindingsNotice": true
},
"gitlens.gitExplorer.files.layout": "auto",
"gitlens.historyExplorer.enabled": false,
"workbench.iconTheme": "vscode-icons",
"git.autofetch": true,
"editor.insertSpaces": false,
"editor.wordWrap": "on",
"editor.smoothScrolling": true,
"editor.mouseWheelScrollSensitivity": 2,
"gitlens.mode.active": "review",
"workbench.editor.enablePreviewFromQuickOpen": false,
"workbench.editor.enablePreview": false,
}
I use VS Code as my main DM editor. You might appreciate this plugin that I've been working on:

DreamMaker Language Client (GitHub)

It's intended to be sort of like IntelliSense for DM. I'm trying to find time to work on it, but it's woefully incomplete right now. Its main features are certain warnings which the compiler does not provide, and workspace symbol search (Ctrl+T) for types, procs, vars, and macros. Even this has been a tangible boost to my productivity.

The parser has been tested against multiple public SS13 codebases (tg, yog, para, bay, vg), but I can't promise it handles syntax or styles I'm not familiar with. I'm open to parsing problem reports but may deny them if I think DreamMaker accepts something it shouldn't, or if the implementation would take too much effort.

I haven't released it yet, but the next version of the extension will also support automatically ticking/unticking files in the DME.

Here's my tasks.json, it's very similar to yours, but I DO get results in the Problems pane, so have fun spotting the difference:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "DreamMaker",
            "type": "shell",
            "command": "C:\\Downloads\\Games\\byond\\bin\\dm.exe tgstation.dme",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": {
                "owner": "custom",
                "fileLocation": ["relative", "${workspaceFolder}"],
                "pattern": {
                    "regexp": "^([^:]+):(\\d+):([^:]+): (.*)$",
                    "file": 1,
                    "line": 2,
                    "severity": 3,
                    "message": 4
                }
            }
        }
    ]
}
Oops, I didn't get a notification of a reply.

Awesome, thanks for this. And yeah, that tasks.json works better than mine. I'll replace the one I wrote in my OP with yours so people don't get confused.

That extension looks very useful, too. Thanks again.

Login to reply.