---
name: "Visual Studio Code SQF Extensions"
type: topic
aliases: ["Arma 3: Visual Studio Code"]
source: https://community.bistudio.com/wiki/Visual_Studio_Code_SQF_Extensions
revid: 369513
updated: 2024-09-11T21:48:15Z
---

# Visual Studio Code SQF Extensions

This page contains information about [Microsoft's Visual Studio Code editor](https://code.visualstudio.com/) and how it can be used for content creation in Arma.

### Extensions

> [!NOTE]
> See the [Microsoft article](https://code.visualstudio.com/docs/editor/extension-marketplace).

The following is a list of recommended extensions. Note that it might be incomplete or out of date.\
[Search "SQF" on the marketplace](https://marketplace.visualstudio.com/search?term=SQF&target=VSCode&category=All%20categories&sortBy=Relevance) to find new or better extensions in that case.

| Extension | Author | Remark |
|---|---|---|
| [SQF Language](https://marketplace.visualstudio.com/items?itemName=Armitxes.sqf) | Armitxes | Syntax highlighter. |
| [SQF-VM Language Server](https://marketplace.visualstudio.com/items?itemName=SQF-VM.sqf-vm-language-server) | X39 et al. | Language server for sqf (checks code for errors). |
| [SQF Debugger](https://marketplace.visualstudio.com/items?itemName=billw2011.sqf-debugger) | billw2011 | Debug sqf scripts (callstack, variables, breakpoints, ...) |
| [SQF Wiki](https://marketplace.visualstudio.com/items?itemName=EelisLynne.sqf-wiki) | Eelis Lynne | Shortcut to go to the Biki page of the selected command/function. |

### Tasks

To add tasks to your project follow these steps:

1. Open the folder you are working in with VSCode
1. Create a new directory at the root of it called `.vscode`
1. Create a file called `tasks.json` inside of that directory
1. Add the following content to it:

   ```cpp
   {
       // See https://go.microsoft.com/fwlink/?LinkId=733558
       // for the documentation about the tasks.json format
       "version": "2.0.0",
       "tasks": [
           // -> Tasks go here <-
       ]
   }
   ```

The following snippets will be listed under the `"tasks"` tag. Tasks are separated by a comma.

#### Start Arma 3 (Mission Editing)

This task launches Arma 3 and opens a mission that is located inside of your working folder directly in Eden.

```cpp
{
    "label": "Start Arma 3 (Mission Editing)",
    "type": "process",
    "options": {
        "cwd": "C:\\Program Files (x86)\\Steam\\steamapps\\common\\Arma 3" // Change to your Arma 3 installation path
    },
    "command": "arma3_x64", // Also possible, if available: arma3profiling_x64, arma3diag_x64
    "args": [
        "${workspaceFolder}\\mission.sqm", // Loads directly into editor if you have a mission folder open in VSCode
        "-mod=!Workshop\\@CBA_A3;!Workshop\\@My Other Mod", // Add mods separated by ";", absolute paths work as well
        "-debug",
        "-skipIntro",
        "-filePatching",
        "-noSplash",
        "-showScriptErrors"
    ],
    // Enable launching via shortcut "Tasks: Run Test Task"
    "group": {
        "kind": "test",
        "isDefault": true
    }
}
```

#### Stop Arma 3

*Immediately* closes Arma 3. Closing the game via the X button or <kbd>Alt</kbd> + <kbd>F4</kbd> would normally take some time. The name of the exe you are using can be found like this:

1. Open task manager
1. Select the "Processes" tab
1. Find Arma 3
1. Expand the entry
1. Right click on the first sub-entry
1. Select "Go to details"
1. The "Name" column (by default the first one) contains the exe name

```cpp
{
    "label": "Stop Arma 3 Diag",
    "type": "shell",
    "command": "taskkill",
    "args": [
        "/F",
        "/IM",
        "arma3_x64.exe" // Other values: arma3diag_x64.exe, arma3profiling_x64.exe
    ],
    "problemMatcher": []
}
```

#### Track RPT

Changes to the [RPT files](../topics/Crash_Files.md) will be written to the Terminal window.
You might need to adjust the path ``$env:USERPROFILE\\AppData\\Local\\Arma` 3`` (`` ` `` is required before a space) to your needs if you are using the [-profiles startup parameter](../topics/Startup_Parameters.md#profiles).

```json
{
    "label": "RPT Watcher",
    "type": "shell",
    "command": "powershell",
    "args": [
        "-command",
        "Get-ChildItem -Path $env:USERPROFILE\\AppData\\Local\\Arma` 3 -Filter *.rpt | Sort-Object LastAccessTime -Descending | Select-Object -First 1 | Get-Content -Tail 1 -Wait -Encoding utf8"
    ],
    "problemMatcher": []
}
```

<sub>Source: [BI Community Wiki — Visual Studio Code SQF Extensions](https://community.bistudio.com/wiki/Visual_Studio_Code_SQF_Extensions) (revision 369513).</sub>
