{
  "name": "bacon-ls-vscode",
  "displayName": "Bacon Language Server",
  "description": "Rust diagnostic based on Bacon",
  "publisher": "MatteoBigoi",
  "version": "0.28.0",
  "private": true,
  "icon": "img/icon.png",
  "repository": {
    "url": "https://github.com/crisidev/bacon-ls.git",
    "type": "git"
  },
  "license": "MIT",
  "keywords": [
    "diagnostic",
    "rust",
    "lsp"
  ],
  "categories": [
    "Linters",
    "Other"
  ],
  "engines": {
    "node": "^20.18.0",
    "vscode": "^1.84.0"
  },
  "activationEvents": [
    "onStartupFinished"
  ],
  "main": "./out/main.js",
  "contributes": {
    "commands": [
      {
        "category": "BaconLs",
        "command": "bacon-ls.restart",
        "title": "Restart"
      },
      {
        "category": "BaconLs",
        "command": "bacon-ls.run",
        "title": "Run check"
      }
    ],
    "configuration": {
      "type": "object",
      "title": "BaconLs",
      "properties": {
        "bacon-ls.path": {
          "scope": "machine-overridable",
          "type": "string",
          "description": "Path to the `bacon-ls` binary. If empty the bundled binary will be used."
        },
        "bacon-ls.logLevel": {
          "scope": "window",
          "type": "string",
          "enum": [
            "off",
            "error",
            "warn",
            "info",
            "debug",
            "trace"
          ],
          "default": "off",
          "markdownDescription": "Logging level of the language server. Logs will be saved in a file called bacon-ls.log if the level is not 'off'."
        },
        "bacon_ls.backend": {
          "scope": "machine-overridable",
          "type": "string",
          "enum": [
            "cargo",
            "bacon"
          ],
          "default": "cargo",
          "markdownDescription": "Which backend produces diagnostics. Cannot be changed at runtime — restart the server to switch."
        },
        "bacon_ls.cargo.command": {
          "scope": "machine-overridable",
          "type": "string",
          "enum": [
            "check",
            "clippy"
          ],
          "default": "check",
          "description": "Cargo backend: which cargo subcommand to run."
        },
        "bacon_ls.cargo.features": {
          "scope": "machine-overridable",
          "type": "array",
          "items": {
            "type": "string"
          },
          "default": [],
          "description": "Cargo backend: list of cargo features (passed as --features a,b,c)."
        },
        "bacon_ls.cargo.package": {
          "scope": "machine-overridable",
          "type": [
            "string",
            "null"
          ],
          "default": null,
          "description": "Cargo backend: when set, passed as -p <package> (useful in workspaces)."
        },
        "bacon_ls.cargo.extraArgs": {
          "scope": "machine-overridable",
          "type": "array",
          "items": {
            "type": "string"
          },
          "default": [],
          "description": "Cargo backend: extra arguments appended verbatim after the cargo subcommand."
        },
        "bacon_ls.cargo.env": {
          "scope": "machine-overridable",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "default": {},
          "description": "Cargo backend: extra environment variables (string -> string) for the cargo invocation."
        },
        "bacon_ls.cargo.cancelRunning": {
          "scope": "machine-overridable",
          "type": "boolean",
          "default": true,
          "description": "Cargo backend: cancel an in-flight run when a new one is triggered. When false, queue at most one follow-up run."
        },
        "bacon_ls.cargo.refreshIntervalSeconds": {
          "scope": "machine-overridable",
          "type": [
            "integer",
            "null"
          ],
          "default": 5,
          "description": "Cargo backend: partial publish interval in seconds. Set to null (or negative) to only publish once cargo has finished."
        },
        "bacon_ls.cargo.separateChildDiagnostics": {
          "scope": "machine-overridable",
          "type": [
            "boolean",
            "null"
          ],
          "default": null,
          "description": "Cargo backend: override 'related information' support. null = follow client capability; true = always emit children as standalone diagnostics; false = always nest them."
        },
        "bacon_ls.cargo.checkOnSave": {
          "scope": "machine-overridable",
          "type": "boolean",
          "default": true,
          "description": "Cargo backend: trigger cargo on file save."
        },
        "bacon_ls.cargo.clearDiagnosticsOnCheck": {
          "scope": "machine-overridable",
          "type": "boolean",
          "default": false,
          "description": "Cargo backend: clear existing diagnostics before each run."
        },
        "bacon_ls.bacon.locationsFile": {
          "scope": "machine-overridable",
          "type": "string",
          "default": ".bacon-locations",
          "description": "Bacon backend: bacon export file to read."
        },
        "bacon_ls.bacon.runInBackground": {
          "scope": "machine-overridable",
          "type": "boolean",
          "default": true,
          "description": "Bacon backend: start bacon automatically and tear it down on shutdown."
        },
        "bacon_ls.bacon.runInBackgroundCommand": {
          "scope": "machine-overridable",
          "type": "string",
          "default": "bacon",
          "description": "Bacon backend: command used to start bacon in the background."
        },
        "bacon_ls.bacon.runInBackgroundCommandArguments": {
          "scope": "machine-overridable",
          "type": "string",
          "default": "--headless -j bacon-ls",
          "description": "Bacon backend: command-line arguments passed to the background bacon process."
        },
        "bacon_ls.bacon.validatePreferences": {
          "scope": "machine-overridable",
          "type": "boolean",
          "default": true,
          "description": "Bacon backend: verify that bacon preferences contain a working bacon-ls job and matching export configuration."
        },
        "bacon_ls.bacon.createPreferencesFile": {
          "scope": "machine-overridable",
          "type": "boolean",
          "default": true,
          "description": "Bacon backend: when validation finds no preferences file, generate one with the bacon-ls job and export defined."
        },
        "bacon_ls.bacon.synchronizeAllOpenFilesWaitMillis": {
          "scope": "machine-overridable",
          "type": "integer",
          "default": 2000,
          "description": "Bacon backend: how often (in ms) the background loop re-publishes diagnostics for every open file."
        },
        "bacon_ls.bacon.updateOnSave": {
          "scope": "machine-overridable",
          "type": "boolean",
          "default": true,
          "description": "Bacon backend: re-publish diagnostics on file save."
        },
        "bacon_ls.bacon.updateOnSaveWaitMillis": {
          "scope": "machine-overridable",
          "type": "integer",
          "default": 1000,
          "description": "Bacon backend: delay in ms before reading the locations file after a save."
        }
      }
    }
  },
  "scripts": {
    "vscode:prepublish": "npm run esbuild-base -- --minify",
    "package": "vsce package",
    "esbuild-base": "esbuild ./vscode/extension.ts --bundle --outfile=out/main.js --external:vscode --format=cjs --platform=node",
    "build": "npm run esbuild-base -- --sourcemap",
    "watch": "npm run esbuild-base -- --sourcemap --watch",
    "lint": "prettier --check . && eslint",
    "fix": "prettier --write . && eslint --fix",
    "pretest": "tsc && npm run build",
    "test": "cross-env BACON_LS_PATH=$PWD/target/debug/bacon-ls node ./out/test/runTest.js"
  },
  "devDependencies": {
    "@stylistic/eslint-plugin": "^5.10.0",
    "@types/glob": "^9.0.0",
    "@types/mocha": "^10.0.10",
    "@types/node": "25.x",
    "@types/vscode": "^1.84.0",
    "@typescript-eslint/eslint-plugin": "^8.58.0",
    "@typescript-eslint/parser": "^8.31.1",
    "@vscode/test-electron": "^2.5.2",
    "@vscode/vsce": "^3.7.1",
    "cross-env": "^10.1.0",
    "esbuild": "^0.27.4",
    "eslint": "^10.1.0",
    "glob": "^13.0.6",
    "mocha": "^11.7.5",
    "ovsx": "^0.10.10",
    "prettier": "^3.8.1",
    "typescript": "^6.0.2"
  },
  "dependencies": {
    "vscode-languageclient": "^9.0.1"
  }
}
