# Lux Language Extension for VS Code Visual Studio Code extension for the Lux programming language. ## Features - **Syntax Highlighting**: Full syntax highlighting for Lux files - **LSP Integration**: Real-time diagnostics, hover info, completions, go-to-definition - **Snippets**: Common code patterns (functions, types, effects, handlers) - **REPL Integration**: Start REPL and send code to it - **Commands**: Run, format, type-check files ## Installation ### From VS Code Marketplace Search for "Lux Language" in the VS Code extensions panel. ### From Source 1. Clone the repository 2. Navigate to `editors/vscode` 3. Run `npm install` 4. Run `npm run compile` 5. Press F5 to launch a development VS Code window ### Manual VSIX Install ```bash cd editors/vscode npm install npm run compile npx vsce package code --install-extension lux-lang-0.1.0.vsix ``` ## Requirements - **Lux binary**: Install Lux and ensure `lux` is in your PATH, or configure `lux.lspPath` - **Node.js**: For development ## Configuration | Setting | Default | Description | |---------|---------|-------------| | `lux.lspPath` | `""` | Path to Lux binary. Empty = search PATH | | `lux.lsp.enabled` | `true` | Enable the language server | | `lux.format.onSave` | `false` | Format files on save | | `lux.diagnostics.enabled` | `true` | Show inline diagnostics | ## Commands | Command | Keybinding | Description | |---------|------------|-------------| | `Lux: Run Current File` | `Ctrl+Shift+R` | Run the active file | | `Lux: Format Document` | - | Format the active file | | `Lux: Type Check File` | - | Type check without running | | `Lux: Start REPL` | - | Open Lux REPL in terminal | | `Lux: Send Selection to REPL` | `Ctrl+Enter` | Send selected code to REPL | | `Lux: Restart Language Server` | - | Restart the LSP | ## Snippets | Prefix | Description | |--------|-------------| | `fn` | Function definition | | `fne` | Function with effects | | `type` | Type definition | | `effect` | Effect definition | | `handler` | Effect handler | | `match` | Match expression | | `if` | If expression | | `let` | Let binding | | `run` | Run with handlers | | `trait` | Trait definition | | `impl` | Impl block | | `matchopt` | Match on Option | | `matchres` | Match on Result | | `print` | Console.print | | `main` | Main function template | ## Language Features ### Syntax Highlighting - Keywords (`fn`, `let`, `type`, `effect`, `handler`, `match`, etc.) - Built-in types (`Int`, `Float`, `Bool`, `String`, `Option`, `Result`) - Operators (`=>`, `|>`, `==`, etc.) - String interpolation - Comments (line `//` and doc `///`) ### LSP Features The Lux language server provides: - **Diagnostics**: Real-time error and warning display - **Hover**: Type information on hover - **Completions**: Context-aware suggestions - **Go to Definition**: Navigate to definitions ### Code Folding Fold: - Function bodies - Type definitions - Effect declarations - Handler blocks - Match expressions ## Development ```bash # Install dependencies npm install # Compile npm run compile # Watch mode npm run watch # Lint npm run lint # Package npx vsce package ``` ## Troubleshooting ### LSP not starting 1. Check `lux.lspPath` is correct 2. Ensure `lux` binary is executable 3. Run `Lux: Restart Language Server` 4. Check Output panel for errors ### No syntax highlighting 1. Ensure file has `.lux` extension 2. Try reloading VS Code ## Contributing 1. Fork the repository 2. Create a feature branch 3. Make changes 4. Submit a pull request ## License MIT License - see the main Lux repository for details.