{
  "name": "lux-lang",
  "displayName": "Lux Language",
  "description": "Language support for Lux - a functional language with algebraic effects",
  "version": "0.1.0",
  "publisher": "lux-lang",
  "repository": {
    "type": "git",
    "url": "https://github.com/lux-lang/lux"
  },
  "engines": {
    "vscode": "^1.75.0"
  },
  "categories": [
    "Programming Languages"
  ],
  "keywords": [
    "lux",
    "functional",
    "effects",
    "algebraic effects"
  ],
  "activationEvents": [
    "onLanguage:lux"
  ],
  "main": "./out/extension.js",
  "contributes": {
    "languages": [
      {
        "id": "lux",
        "aliases": ["Lux", "lux"],
        "extensions": [".lux"],
        "configuration": "./language-configuration.json",
        "icon": {
          "light": "./icons/lux-light.png",
          "dark": "./icons/lux-dark.png"
        }
      }
    ],
    "grammars": [
      {
        "language": "lux",
        "scopeName": "source.lux",
        "path": "./syntaxes/lux.tmLanguage.json"
      }
    ],
    "configuration": {
      "title": "Lux",
      "properties": {
        "lux.lspPath": {
          "type": "string",
          "default": "",
          "description": "Path to the Lux binary. If empty, searches PATH."
        },
        "lux.lsp.enabled": {
          "type": "boolean",
          "default": true,
          "description": "Enable the Lux language server"
        },
        "lux.format.onSave": {
          "type": "boolean",
          "default": false,
          "description": "Format files on save"
        },
        "lux.diagnostics.enabled": {
          "type": "boolean",
          "default": true,
          "description": "Enable inline diagnostics"
        }
      }
    },
    "commands": [
      {
        "command": "lux.run",
        "title": "Lux: Run Current File"
      },
      {
        "command": "lux.format",
        "title": "Lux: Format Document"
      },
      {
        "command": "lux.check",
        "title": "Lux: Type Check File"
      },
      {
        "command": "lux.startRepl",
        "title": "Lux: Start REPL"
      },
      {
        "command": "lux.sendToRepl",
        "title": "Lux: Send Selection to REPL"
      },
      {
        "command": "lux.restartLsp",
        "title": "Lux: Restart Language Server"
      }
    ],
    "keybindings": [
      {
        "command": "lux.run",
        "key": "ctrl+shift+r",
        "mac": "cmd+shift+r",
        "when": "editorLangId == lux"
      },
      {
        "command": "lux.sendToRepl",
        "key": "ctrl+enter",
        "mac": "cmd+enter",
        "when": "editorLangId == lux && editorHasSelection"
      }
    ],
    "menus": {
      "editor/context": [
        {
          "command": "lux.run",
          "when": "editorLangId == lux",
          "group": "lux"
        },
        {
          "command": "lux.sendToRepl",
          "when": "editorLangId == lux && editorHasSelection",
          "group": "lux"
        }
      ]
    },
    "snippets": [
      {
        "language": "lux",
        "path": "./snippets/lux.json"
      }
    ]
  },
  "scripts": {
    "vscode:prepublish": "npm run compile",
    "compile": "tsc -p ./",
    "watch": "tsc -watch -p ./",
    "lint": "eslint src --ext ts"
  },
  "devDependencies": {
    "@types/node": "^18.x",
    "@types/vscode": "^1.75.0",
    "@typescript-eslint/eslint-plugin": "^6.0.0",
    "@typescript-eslint/parser": "^6.0.0",
    "eslint": "^8.0.0",
    "typescript": "^5.0.0"
  },
  "dependencies": {
    "vscode-languageclient": "^9.0.0"
  }
}
