{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387

  // NOTE: --disable-extensions
  // Disable all installed extensions to increase performance of the debug instance
  // and prevent potential conflicts with other installed extensions.

  "version": "0.2.0",
  "configurations": [
    {
      // Used for testing the extension with the installed LSP server.
      "name": "Run Installed Extension",
      "type": "extensionHost",
      "request": "launch",
      "runtimeExecutable": "${execPath}",
      "args": [
        // "--user-data-dir=${workspaceFolder}/target/code",
        "--disable-extensions",
        "--extensionDevelopmentPath=${workspaceFolder}/editors/code"
      ],
      "outFiles": [
        "${workspaceFolder}/editors/code/out/**/*.js"
      ],
      "preLaunchTask": "Build Extension",
      "skipFiles": [
        "<node_internals>/**/*.js"
      ]
    },
    {
      // Used for testing the extension with a local build of the LSP server (in `target/debug`).
      "name": "Run Extension (Debug Build)",
      "type": "extensionHost",
      "request": "launch",
      "runtimeExecutable": "${execPath}",
      "args": [
        "--disable-extensions",
        "--extensionDevelopmentPath=${workspaceFolder}/editors/code"
      ],
      "outFiles": [
        "${workspaceFolder}/editors/code/out/**/*.js"
      ],
      "preLaunchTask": "Build Server and Extension",
      "skipFiles": [
        "<node_internals>/**/*.js"
      ],
      "env": {
        "__RA_LSP_SERVER_DEBUG": "${workspaceFolder}/target/debug/rust-analyzer"
      }
    },
    {
      // Used for testing the extension with a local build of the LSP server (in `target/release`).
      "name": "Run Extension (Release Build)",
      "type": "extensionHost",
      "request": "launch",
      "runtimeExecutable": "${execPath}",
      "args": [
        "--disable-extensions",
        "--extensionDevelopmentPath=${workspaceFolder}/editors/code"
      ],
      "outFiles": [
        "${workspaceFolder}/editors/code/out/**/*.js"
      ],
      "preLaunchTask": "Build Server (Release) and Extension",
      "skipFiles": [
        "<node_internals>/**/*.js"
      ],
      "env": {
        "__RA_LSP_SERVER_DEBUG": "${workspaceFolder}/target/release/rust-analyzer"
      }
    },
    {
      // Used for testing the extension with a local build of the LSP server (in `target/release`)
      // with all other extensions loaded.
      "name": "Run With Extensions",
      "type": "extensionHost",
      "request": "launch",
      "runtimeExecutable": "${execPath}",
      "args": [
        "--disable-extension", "rust-lang.rust-analyzer",
        "--extensionDevelopmentPath=${workspaceFolder}/editors/code"
      ],
      "outFiles": [
        "${workspaceFolder}/editors/code/out/**/*.js"
      ],
      "preLaunchTask": "Build Server (Release) and Extension",
      "skipFiles": [
        "<node_internals>/**/*.js"
      ],
      "env": {
        "__RA_LSP_SERVER_DEBUG": "${workspaceFolder}/target/release/rust-analyzer"
      }
    },
    {
      // Used to attach LLDB to a running LSP server.
      // NOTE: Might require root permissions. For this run:
      //
      // `echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope`
      //
      // Don't forget to set `debug = 2` in `Cargo.toml` before building the server

      "name": "Attach To Server",
      "type": "lldb",
      "request": "attach",
      "program": "${workspaceFolder}/target/debug/rust-analyzer",
      "pid": "${command:pickMyProcess}",
      "sourceLanguages": [
        "rust"
      ]
    },
    {
      "name": "Run Unit Tests",
      "type": "extensionHost",
      "request": "launch",
      "runtimeExecutable": "${execPath}",
      "args": [
          "--extensionDevelopmentPath=${workspaceFolder}/editors/code",
          "--extensionTestsPath=${workspaceFolder}/editors/code/out/tests/unit" ],
      "sourceMaps": true,
      "outFiles": [ "${workspaceFolder}/editors/code/out/tests/unit/**/*.js" ],
      "preLaunchTask": "Pretest"
    },
    {
      "name": "Win Attach to Server",
      "type": "cppvsdbg",
      "processId":"${command:pickProcess}",
      "request": "attach"
    }
  ]
}
