From dde66ac61f9a936a0ebde77c99bcff63a0cb4d74 Mon Sep 17 00:00:00 2001 From: Vitte_Lang Date: Mon, 9 Feb 2026 13:05:10 +0100 Subject: [PATCH 1/7] Enhance README with Vitte Studio details Expanded README with detailed features, installation instructions, and troubleshooting tips for Vitte Studio. --- README.md | 223 +++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 205 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 404b555..8c39808 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,215 @@ -# Vitte in VS Code +**Vitte Studio** is the official VS Code extension for the Vitte language. It delivers a complete developer experience: syntax highlighting, rich IntelliSense, hover docs, diagnostics, navigation, formatting, semantic tokens, debugging, tasks, and project tooling for real-world Vitte codebases. -This folder contains a minimal VS Code language definition for Vitte. +## Badges -## Install locally (user settings) +**Marketplace** -1. Copy files to your VS Code user folder: +[![Version](https://img.shields.io/visual-studio-marketplace/v/VitteStudio.vitte-studio)](https://marketplace.visualstudio.com/items?itemName=VitteStudio.vitte-studio) +[![Installs](https://img.shields.io/visual-studio-marketplace/i/VitteStudio.vitte-studio)](https://marketplace.visualstudio.com/items?itemName=VitteStudio.vitte-studio) +[![Downloads](https://img.shields.io/visual-studio-marketplace/d/VitteStudio.vitte-studio)](https://marketplace.visualstudio.com/items?itemName=VitteStudio.vitte-studio) +[![Rating](https://img.shields.io/visual-studio-marketplace/r/VitteStudio.vitte-studio)](https://marketplace.visualstudio.com/items?itemName=VitteStudio.vitte-studio) +[![Last Updated](https://img.shields.io/visual-studio-marketplace/last-updated/VitteStudio.vitte-studio)](https://marketplace.visualstudio.com/items?itemName=VitteStudio.vitte-studio) -- `vitte.tmLanguage.json` -- `language-configuration.json` -- `snippets/vitte.json` +**GitHub** -2. Add a user settings entry (or use the included `settings.json` as a base): +[![CI](https://img.shields.io/github/actions/workflow/status/vitte-lang/VitteLangVsCode/ci.yml?branch=main)](https://github.com/vitte-lang/VitteLangVsCode/actions) +[![Webpack](https://img.shields.io/github/actions/workflow/status/vitte-lang/VitteLangVsCode/webpack.yml?branch=main)](https://github.com/vitte-lang/VitteLangVsCode/actions) +[![Release](https://img.shields.io/github/v/release/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode/releases) +[![License](https://img.shields.io/github/license/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode/blob/main/LICENSE) +[![Stars](https://img.shields.io/github/stars/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode) +[![Forks](https://img.shields.io/github/forks/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode) +[![Issues](https://img.shields.io/github/issues/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode/issues) +[![PRs](https://img.shields.io/github/issues-pr/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode/pulls) +[![Contributors](https://img.shields.io/github/contributors/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode/graphs/contributors) +[![Last Commit](https://img.shields.io/github/last-commit/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode/commits/main) +[![Repo Size](https://img.shields.io/github/repo-size/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode) -```json -{ - "files.associations": { "*.vit": "vitte" } -} -``` +## Marketplace Descriptions -## Workspace tasks +**Short** -This repo includes `/.vscode/tasks.json` with `vitte` tasks and a problem matcher that -understands `file:line:col` diagnostics. +Vitte Studio is the official VS Code extension for the Vitte language — syntax, IntelliSense, LSP, diagnostics, formatting, and tooling. + +**Long** + +Vitte Studio brings first‑class Vitte support to VS Code. You get rich completions, hover docs, diagnostics and linting, go‑to definition and references, formatting, and semantic tokens. The extension includes a built‑in language server, workspace indexing, and project tooling commands for build, run, test, and benchmarks. If you write Vitte, this is the all‑in‑one, modern IDE experience. + +## Highlights + +- Full language support for `.vitte` and `.vit` +- Rich completions (keywords, types, fields, methods, modules) +- Hover documentation (docstrings) +- Diagnostics and linting +- Go-to definition, references, rename +- Workspace-wide indexing and references +- Formatting +- Semantic tokens +- Built-in language server +- Debugger integration +- Tasks and quick actions for build/run/test/bench + +## Supported Languages + +- `vitte` (`.vitte`) +- `vit` (`.vit`) + +## Core Features + +- Syntax highlighting for Vitte and Vit +- Bracket/indentation rules and language configuration +- Snippets (including docstring helpers) +- IntelliSense completions (keywords, types, symbols, imports) +- Hover with documentation and type info +- Diagnostics (errors, warnings, style hints) +- Go-to definition and find references +- Rename symbols +- Document formatting +- Semantic tokens for precise coloring +- Workspace structure and module explorer + +## Language Server + +Vitte Studio ships with a built-in LSP server. It provides: + +- Workspace indexing for fast navigation +- Cross-file references and symbol search +- Intelligent diagnostics and lint rules +- Completion and hover computed from project context +- Fast incremental updates on file change + +## Views + +The extension adds a Vitte activity bar with dedicated views. + +- **Vitte Explorer**: project structure and modules +- **Vitte Metrics**: live diagnostics and performance data + +## Commands + +All commands are available from the Command Palette. + +- `Vitte: Show Server Log` +- `Vitte: Show Server Metrics` +- `Vitte: Refresh Metrics View` +- `Vitte: Show Command Menu` +- `Vitte: Restart Language Server` +- `Vitte: Run Action` +- `Vitte: Run Action (Args)` +- `Vitte Debug: Run File` +- `Vitte Debug: Attach` +- `Vitte: Organize Imports` +- `Vitte: Fix All` +- `Vitte: Rename Symbol` +- `Vitte: Apply Sample Edit` +- `Vitte: Progress Sample` +- `Vitte: Show Info` +- `Vitte: Refresh Diagnostics` +- `Vitte: Open Diagnostic` +- `Vitte: Refresh Structure` +- `Vitte: Refresh Explorer` +- `Vitte: Reveal in Explorer` +- `Vitte: Open Docs` +- `Vitte: Open Playground` +- `Vitte: Detect Toolchain` +- `Vitte: Run Benchmarks` +- `Vitte: Run Benchmarks and Open Report` +- `Vitte: Open Bench Directory` +- `Vitte: Build` +- `Vitte: Clean` +- `Vitte: Run` +- `Vitte: Test` +- `Vitte: Test Current File` +- `Vitte: Switch Build Profile` +- `Vitte: Toggle Incremental Build` +- `Vitte: Refresh Tests` +- `Vitte: Run All Tests` +- `Vitte: Quick` +- `Vitte: Quick Export` +- `Vitte: Toggle Telemetry` + +## Debugging + +Vitte Studio registers a `vitte` debugger with launch configurations for: + +- Launch current file +- Launch project entry +- Attach to server + +## Configuration + +You can configure the extension in VS Code settings. + +- `vitte.trace.server`: `off | messages | verbose` +- `vitte.serverPath`: custom server binary (empty = bundled) +- `vitte.debug.program`: path to `vitte-runtime` +- `vitte.toolchain.root`: toolchain root directory +- `vitte.toolchainPath`: legacy fallback for toolchain +- `vitte.runtime.path`: runtime binary path +- `vitte.lsp.path`: LSP binary path +- `vitte.build.path`: build binary path +- `vitte.fmt.path`: formatter binary path +- `vitte.bench.path`: benchmark binary path +- `vitte.build.profile`: `dev | test | release | bench` +- `vitte.build.incremental`: enable incremental build +- `vitte.build.distributed`: enable distributed build +- `vitte.bench.reportDir`: benchmark report output +- `vitte.docs.include`: docs include glob +- `vitte.docs.exclude`: docs exclude glob +- `vitte.docs.indexLimit`: max indexed markdown files +- `vitte.telemetry.enabled`: local telemetry toggle +- `vitte.telemetry.sampleRate`: sampling rate +- `vitte.quickActions.sequences`: custom action chains +- `vitte.quickActions.defaults`: override built-in actions +- `vitte.commandShortcuts`: status bar shortcuts + +## Quick Actions + +The `Vitte: Quick` command provides curated, multi-step workflows. You can override defaults or add custom sequences using `vitte.quickActions.sequences` and `vitte.quickActions.defaults`. + +## Tasks + +Vitte Studio adds a `vitte` task definition for build tooling: + +- `build` +- `run` +- `test` +- `clean` +- `bench` + +## Getting Started + +1. Install the extension from the Marketplace or via VSIX. +2. Open a Vitte project (or any `.vitte` / `.vit` file). +3. Run `Vitte: Detect Toolchain` to auto-detect your binaries. +4. Use `Vitte: Quick` for common workflows like build/run/test. +5. Use `Vitte: Restart Language Server` if IntelliSense feels stale. + +## Installation (VSIX) + +1. Open VS Code +2. Run `Extensions: Install from VSIX...` +3. Select the VSIX file, for example `vitte-studio-2.0.0.vsix` + + +## Changelog Highlights + +### 2.0.0 + +- Richer completions (keywords, types, methods, modules) +- Hover documentation (docstrings) +- Improved diagnostics and linting +- Go-to definition and workspace references +- Formatting and semantic tokens +- Updated VSIX packaging and tooling + +## Troubleshooting + +- If completions or diagnostics are missing, run `Vitte: Restart Language Server`. +- If toolchain paths are custom, set `vitte.toolchain.root` and related binary paths. +- If workspace features are slow, reduce `vitte.docs.indexLimit` or refine include/exclude globs. + +## License + +MIT -## Install as a workspace extension -You can also create a minimal extension by placing these files into a VS Code extension template. From 91d46b02959823624fbbed3343425923a113bfa7 Mon Sep 17 00:00:00 2001 From: Vincent Rousseau Date: Mon, 9 Feb 2026 13:17:21 +0100 Subject: [PATCH 2/7] fix --- README.md | 218 +++++++++++++++++++++++++++++++++++ server/src/docstrings.ts | 3 +- server/src/lint.ts | 3 +- server/src/lsp.ts | 12 +- src/commands/quickActions.ts | 2 +- 5 files changed, 229 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 8c39808..6da3a07 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ +<<<<<<< Updated upstream **Vitte Studio** is the official VS Code extension for the Vitte language. It delivers a complete developer experience: syntax highlighting, rich IntelliSense, hover docs, diagnostics, navigation, formatting, semantic tokens, debugging, tasks, and project tooling for real-world Vitte codebases. ## Badges @@ -213,3 +214,220 @@ Vitte Studio adds a `vitte` task definition for build tooling: MIT +======= +# Vitte Language Support (Vitte Studio) + +**Vitte Studio** is the official VS Code extension for the Vitte language. It delivers a complete developer experience: syntax highlighting, rich IntelliSense, hover docs, diagnostics, navigation, formatting, semantic tokens, debugging, tasks, and project tooling for real-world Vitte codebases. + +## Badges + +**Marketplace** + +[![Version](https://img.shields.io/visual-studio-marketplace/v/VitteStudio.vitte-studio)](https://marketplace.visualstudio.com/items?itemName=VitteStudio.vitte-studio) +[![Installs](https://img.shields.io/visual-studio-marketplace/i/VitteStudio.vitte-studio)](https://marketplace.visualstudio.com/items?itemName=VitteStudio.vitte-studio) +[![Downloads](https://img.shields.io/visual-studio-marketplace/d/VitteStudio.vitte-studio)](https://marketplace.visualstudio.com/items?itemName=VitteStudio.vitte-studio) +[![Rating](https://img.shields.io/visual-studio-marketplace/r/VitteStudio.vitte-studio)](https://marketplace.visualstudio.com/items?itemName=VitteStudio.vitte-studio) +[![Last Updated](https://img.shields.io/visual-studio-marketplace/last-updated/VitteStudio.vitte-studio)](https://marketplace.visualstudio.com/items?itemName=VitteStudio.vitte-studio) + +**GitHub** + +[![CI](https://img.shields.io/github/actions/workflow/status/vitte-lang/VitteLangVsCode/ci.yml?branch=main)](https://github.com/vitte-lang/VitteLangVsCode/actions) +[![Webpack](https://img.shields.io/github/actions/workflow/status/vitte-lang/VitteLangVsCode/webpack.yml?branch=main)](https://github.com/vitte-lang/VitteLangVsCode/actions) +[![Release](https://img.shields.io/github/v/release/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode/releases) +[![License](https://img.shields.io/github/license/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode/blob/main/LICENSE) +[![Stars](https://img.shields.io/github/stars/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode) +[![Forks](https://img.shields.io/github/forks/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode) +[![Issues](https://img.shields.io/github/issues/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode/issues) +[![PRs](https://img.shields.io/github/issues-pr/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode/pulls) +[![Contributors](https://img.shields.io/github/contributors/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode/graphs/contributors) +[![Last Commit](https://img.shields.io/github/last-commit/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode/commits/main) +[![Repo Size](https://img.shields.io/github/repo-size/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode) + +## Marketplace Descriptions + +**Short** + +Vitte Studio is the official VS Code extension for the Vitte language — syntax, IntelliSense, LSP, diagnostics, formatting, and tooling. + +**Long** + +Vitte Studio brings first‑class Vitte support to VS Code. You get rich completions, hover docs, diagnostics and linting, go‑to definition and references, formatting, and semantic tokens. The extension includes a built‑in language server, workspace indexing, and project tooling commands for build, run, test, and benchmarks. If you write Vitte, this is the all‑in‑one, modern IDE experience. + +## Highlights + +- Full language support for `.vitte` and `.vit` +- Rich completions (keywords, types, fields, methods, modules) +- Hover documentation (docstrings) +- Diagnostics and linting +- Go-to definition, references, rename +- Workspace-wide indexing and references +- Formatting +- Semantic tokens +- Built-in language server +- Debugger integration +- Tasks and quick actions for build/run/test/bench + +## Supported Languages + +- `vitte` (`.vitte`) +- `vit` (`.vit`) + +## Core Features + +- Syntax highlighting for Vitte and Vit +- Bracket/indentation rules and language configuration +- Snippets (including docstring helpers) +- IntelliSense completions (keywords, types, symbols, imports) +- Hover with documentation and type info +- Diagnostics (errors, warnings, style hints) +- Go-to definition and find references +- Rename symbols +- Document formatting +- Semantic tokens for precise coloring +- Workspace structure and module explorer + +## Language Server + +Vitte Studio ships with a built-in LSP server. It provides: + +- Workspace indexing for fast navigation +- Cross-file references and symbol search +- Intelligent diagnostics and lint rules +- Completion and hover computed from project context +- Fast incremental updates on file change + +## Views + +The extension adds a Vitte activity bar with dedicated views. + +- **Vitte Explorer**: project structure and modules +- **Vitte Metrics**: live diagnostics and performance data + +## Commands + +All commands are available from the Command Palette. + +- `Vitte: Show Server Log` +- `Vitte: Show Server Metrics` +- `Vitte: Refresh Metrics View` +- `Vitte: Show Command Menu` +- `Vitte: Restart Language Server` +- `Vitte: Run Action` +- `Vitte: Run Action (Args)` +- `Vitte Debug: Run File` +- `Vitte Debug: Attach` +- `Vitte: Organize Imports` +- `Vitte: Fix All` +- `Vitte: Rename Symbol` +- `Vitte: Apply Sample Edit` +- `Vitte: Progress Sample` +- `Vitte: Show Info` +- `Vitte: Refresh Diagnostics` +- `Vitte: Open Diagnostic` +- `Vitte: Refresh Structure` +- `Vitte: Refresh Explorer` +- `Vitte: Reveal in Explorer` +- `Vitte: Open Docs` +- `Vitte: Open Playground` +- `Vitte: Detect Toolchain` +- `Vitte: Run Benchmarks` +- `Vitte: Run Benchmarks and Open Report` +- `Vitte: Open Bench Directory` +- `Vitte: Build` +- `Vitte: Clean` +- `Vitte: Run` +- `Vitte: Test` +- `Vitte: Test Current File` +- `Vitte: Switch Build Profile` +- `Vitte: Toggle Incremental Build` +- `Vitte: Refresh Tests` +- `Vitte: Run All Tests` +- `Vitte: Quick` +- `Vitte: Quick Export` +- `Vitte: Toggle Telemetry` + +## Debugging + +Vitte Studio registers a `vitte` debugger with launch configurations for: + +- Launch current file +- Launch project entry +- Attach to server + +## Configuration + +You can configure the extension in VS Code settings. + +- `vitte.trace.server`: `off | messages | verbose` +- `vitte.serverPath`: custom server binary (empty = bundled) +- `vitte.debug.program`: path to `vitte-runtime` +- `vitte.toolchain.root`: toolchain root directory +- `vitte.toolchainPath`: legacy fallback for toolchain +- `vitte.runtime.path`: runtime binary path +- `vitte.lsp.path`: LSP binary path +- `vitte.build.path`: build binary path +- `vitte.fmt.path`: formatter binary path +- `vitte.bench.path`: benchmark binary path +- `vitte.build.profile`: `dev | test | release | bench` +- `vitte.build.incremental`: enable incremental build +- `vitte.build.distributed`: enable distributed build +- `vitte.bench.reportDir`: benchmark report output +- `vitte.docs.include`: docs include glob +- `vitte.docs.exclude`: docs exclude glob +- `vitte.docs.indexLimit`: max indexed markdown files +- `vitte.telemetry.enabled`: local telemetry toggle +- `vitte.telemetry.sampleRate`: sampling rate +- `vitte.quickActions.sequences`: custom action chains +- `vitte.quickActions.defaults`: override built-in actions +- `vitte.commandShortcuts`: status bar shortcuts + +## Quick Actions + +The `Vitte: Quick` command provides curated, multi-step workflows. You can override defaults or add custom sequences using `vitte.quickActions.sequences` and `vitte.quickActions.defaults`. + +## Tasks + +Vitte Studio adds a `vitte` task definition for build tooling: + +- `build` +- `run` +- `test` +- `clean` +- `bench` + +## Getting Started + +1. Install the extension from the Marketplace or via VSIX. +2. Open a Vitte project (or any `.vitte` / `.vit` file). +3. Run `Vitte: Detect Toolchain` to auto-detect your binaries. +4. Use `Vitte: Quick` for common workflows like build/run/test. +5. Use `Vitte: Restart Language Server` if IntelliSense feels stale. + +## Installation (VSIX) + +1. Open VS Code +2. Run `Extensions: Install from VSIX...` +3. Select the VSIX file, for example `vitte-studio-2.0.0.vsix` + + +## Changelog Highlights + +### 2.0.0 + +- Richer completions (keywords, types, methods, modules) +- Hover documentation (docstrings) +- Improved diagnostics and linting +- Go-to definition and workspace references +- Formatting and semantic tokens +- Updated VSIX packaging and tooling + +## Troubleshooting + +- If completions or diagnostics are missing, run `Vitte: Restart Language Server`. +- If toolchain paths are custom, set `vitte.toolchain.root` and related binary paths. +- If workspace features are slow, reduce `vitte.docs.indexLimit` or refine include/exclude globs. + +## License + +MIT +>>>>>>> Stashed changes diff --git a/server/src/docstrings.ts b/server/src/docstrings.ts index df9c6d1..4623c28 100644 --- a/server/src/docstrings.ts +++ b/server/src/docstrings.ts @@ -26,7 +26,7 @@ function extractBlockDoc(lines: string[], start: number, end: number): string { export function getDocstringAtLine(doc: TextDocument, declLine: number): string | null { const lines = doc.getText().split(/\r?\n/); let i = Math.min(declLine - 1, lines.length - 1); - let collected: string[] = []; + const collected: string[] = []; let seenDoc = false; while (i >= 0) { @@ -62,4 +62,3 @@ export function getDocstringAtLine(doc: TextDocument, declLine: number): string } return null; } - diff --git a/server/src/lint.ts b/server/src/lint.ts index 213adf5..95cace2 100644 --- a/server/src/lint.ts +++ b/server/src/lint.ts @@ -468,7 +468,6 @@ function checkStyleConventions( const rxFnDecl = /\b(?:fn|proc)\s+([A-Za-z_]\w*)/g; const rxConstDecl = /\b(?:const|static)\s+([A-Za-z_]\w*)/g; const rxVarDecl = /\blet\s+([A-Za-z_]\w*)/g; - const rxUseDecl = /\buse\s+([A-Za-z0-9_./:]+)/g; for (let i = 0; i < lines.length; i++) { const L = lines[i]; @@ -576,7 +575,7 @@ function checkModulePaths( if (!isDisabled(i, RULES.StyleUsePath, lineDisables, blockDisables)) { for (const m of L.matchAll(/\buse\s+([A-Za-z0-9_./:]+)/g)) { const name = m[1]; - if (/::/.test(name)) { + if (name.includes("::")) { const idx = (m.index ?? 0) + m[0].lastIndexOf(name); diags.push(diag(i, idx, i, idx + name.length, "Chemin use conseillé avec '/' et '.' (éviter '::').", diff --git a/server/src/lsp.ts b/server/src/lsp.ts index afcc330..ec4a114 100644 --- a/server/src/lsp.ts +++ b/server/src/lsp.ts @@ -33,7 +33,7 @@ import { logLsp, attachConnection } from './logger'; import { provideCompletions, resolveCompletion, triggerCharacters } from './completion'; import { getSemanticTokensLegend, buildSemanticTokens, provideHover as keywordHover } from './semantic'; import { lintToPublishable } from './lint'; -import { definitionAtPosition, referencesAtPosition, documentSymbols } from './navigation'; +import { definitionAtPosition, documentSymbols } from './navigation'; import { indexDocument, updateDocument, removeDocument, searchWorkspaceSymbols, toWorkspaceSymbols, getDocumentIndex, getIndex, indexText } from './indexer'; import { getDocstringAtLine } from './docstrings'; import { provideFormattingEdits } from './formatting'; @@ -387,7 +387,7 @@ connection.onInitialized(() => { const handleConfigChange = Config.makeOnDidChangeConfigurationHandler(connection, { getOpenDocuments: () => documents.all(), - validateDocument: async (doc) => { + validateDocument: (doc) => { try { const diagnostics = lintToPublishable(doc.getText(), doc.uri); void connection.sendDiagnostics({ uri: doc.uri, diagnostics }); @@ -401,7 +401,7 @@ connection.onDidChangeConfiguration(() => { void handleConfigChange(); }); -connection.onDidChangeWatchedFiles(async (e) => { +async function handleWatchedFiles(e: { changes: { uri: string; type: FileChangeType }[] }) { for (const change of e.changes) { const uri = change.uri; if (!uri.startsWith("file://")) continue; @@ -416,6 +416,10 @@ connection.onDidChangeWatchedFiles(async (e) => { if (text) indexText(uri, text); } } +} + +connection.onDidChangeWatchedFiles((e) => { + void handleWatchedFiles(e); }); // --------------------------------------------------------------------------- @@ -430,7 +434,7 @@ documents.onDidClose((e) => { removeDocument(e.document.uri); }); -async function handleValidate(doc: TextDocument) { +function handleValidate(doc: TextDocument) { try { const diags = lintToPublishable(doc.getText(), doc.uri); void connection.sendDiagnostics({ uri: doc.uri, diagnostics: diags }); diff --git a/src/commands/quickActions.ts b/src/commands/quickActions.ts index 25c193b..e44ff52 100644 --- a/src/commands/quickActions.ts +++ b/src/commands/quickActions.ts @@ -196,7 +196,7 @@ function getVitteConfiguration(): vscode.WorkspaceConfiguration | undefined { try { return vscode.workspace.getConfiguration('vitte'); } catch (error) { - console.debug('[vitte.quickActions] Unable to read vitte configuration', error); + console.warn('[vitte.quickActions] Unable to read vitte configuration', error); return undefined; } } From ca037555bc9e6df2f292fc9373138a8838a60bc1 Mon Sep 17 00:00:00 2001 From: Vincent Rousseau Date: Mon, 9 Feb 2026 13:27:39 +0100 Subject: [PATCH 3/7] fix Co-Authored-By: Vincent Rousseau <12572924+roussov@users.noreply.github.com> --- src/extension.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index b49f23f..bb17114 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -574,11 +574,16 @@ function resolveServerModule(context: vscode.ExtensionContext): string { } logServerResolution(`Custom server path not found: ${cfgPath}`); } - const nested = context.asAbsolutePath(path.join("server", "out", "server.js")); + const nested = context.asAbsolutePath(path.join("server", "out", "src", "server.js")); if (fs.existsSync(nested)) { - logServerResolution(`Using packaged server (server/out): ${nested}`); + logServerResolution(`Using packaged server (server/out/src): ${nested}`); return nested; } + const legacyNested = context.asAbsolutePath(path.join("server", "out", "server.js")); + if (fs.existsSync(legacyNested)) { + logServerResolution(`Using legacy server (server/out): ${legacyNested}`); + return legacyNested; + } const bundled = context.asAbsolutePath(path.join("out", "server.js")); if (fs.existsSync(bundled)) { logServerResolution(`Using embedded server: ${bundled}`); From d1b9cdf3eea88d0235e3055d7fea30eba69a159b Mon Sep 17 00:00:00 2001 From: Vincent Rousseau Date: Mon, 9 Feb 2026 13:29:25 +0100 Subject: [PATCH 4/7] fix ci Co-Authored-By: Vincent Rousseau <12572924+roussov@users.noreply.github.com> --- .github/workflows/ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5550e56..9646fbe 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,4 +31,7 @@ jobs: run: npm run build - name: Run tests - run: npm test + run: | + sudo apt-get update + sudo apt-get install -y xvfb + xvfb-run -a npm test From dd60f2a3c517c08087ecc2fbc93ec8afb542ed29 Mon Sep 17 00:00:00 2001 From: Vincent Rousseau Date: Mon, 9 Feb 2026 13:32:52 +0100 Subject: [PATCH 5/7] fix Co-Authored-By: Vincent Rousseau <12572924+roussov@users.noreply.github.com> --- .github/workflows/ci.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9646fbe..31af822 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,8 +30,10 @@ jobs: - name: Build run: npm run build - - name: Run tests + - name: Install Xvfb run: | sudo apt-get update sudo apt-get install -y xvfb - xvfb-run -a npm test + + - name: Run tests (xvfb) + run: xvfb-run -a --server-args="-screen 0 1920x1080x24" npm test From 1581092ee2aac56257c6769ce993cebb1f84bbf3 Mon Sep 17 00:00:00 2001 From: Vincent Rousseau Date: Mon, 9 Feb 2026 13:35:11 +0100 Subject: [PATCH 6/7] Update README.md Co-Authored-By: Vincent Rousseau <12572924+roussov@users.noreply.github.com> --- README.md | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/README.md b/README.md index 6da3a07..93400f5 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ <<<<<<< Updated upstream +<<<<<<< Updated upstream **Vitte Studio** is the official VS Code extension for the Vitte language. It delivers a complete developer experience: syntax highlighting, rich IntelliSense, hover docs, diagnostics, navigation, formatting, semantic tokens, debugging, tasks, and project tooling for real-world Vitte codebases. ## Badges @@ -249,6 +250,42 @@ MIT Vitte Studio is the official VS Code extension for the Vitte language — syntax, IntelliSense, LSP, diagnostics, formatting, and tooling. +======= +# Vitte Language Support (Vitte Studio) + +**Vitte Studio** is the official VS Code extension for the Vitte language. It delivers a complete developer experience: syntax highlighting, rich IntelliSense, hover docs, diagnostics, navigation, formatting, semantic tokens, debugging, tasks, and project tooling for real-world Vitte codebases. + +## Badges + +**Marketplace** + +[![Version](https://img.shields.io/visual-studio-marketplace/v/VitteStudio.vitte-studio)](https://marketplace.visualstudio.com/items?itemName=VitteStudio.vitte-studio) +[![Installs](https://img.shields.io/visual-studio-marketplace/i/VitteStudio.vitte-studio)](https://marketplace.visualstudio.com/items?itemName=VitteStudio.vitte-studio) +[![Downloads](https://img.shields.io/visual-studio-marketplace/d/VitteStudio.vitte-studio)](https://marketplace.visualstudio.com/items?itemName=VitteStudio.vitte-studio) +[![Rating](https://img.shields.io/visual-studio-marketplace/r/VitteStudio.vitte-studio)](https://marketplace.visualstudio.com/items?itemName=VitteStudio.vitte-studio) +[![Last Updated](https://img.shields.io/visual-studio-marketplace/last-updated/VitteStudio.vitte-studio)](https://marketplace.visualstudio.com/items?itemName=VitteStudio.vitte-studio) + +**GitHub** + +[![CI](https://img.shields.io/github/actions/workflow/status/vitte-lang/VitteLangVsCode/ci.yml?branch=main)](https://github.com/vitte-lang/VitteLangVsCode/actions) +[![Webpack](https://img.shields.io/github/actions/workflow/status/vitte-lang/VitteLangVsCode/webpack.yml?branch=main)](https://github.com/vitte-lang/VitteLangVsCode/actions) +[![Release](https://img.shields.io/github/v/release/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode/releases) +[![License](https://img.shields.io/github/license/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode/blob/main/LICENSE) +[![Stars](https://img.shields.io/github/stars/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode) +[![Forks](https://img.shields.io/github/forks/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode) +[![Issues](https://img.shields.io/github/issues/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode/issues) +[![PRs](https://img.shields.io/github/issues-pr/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode/pulls) +[![Contributors](https://img.shields.io/github/contributors/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode/graphs/contributors) +[![Last Commit](https://img.shields.io/github/last-commit/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode/commits/main) +[![Repo Size](https://img.shields.io/github/repo-size/vitte-lang/VitteLangVsCode)](https://github.com/vitte-lang/VitteLangVsCode) + +## Marketplace Descriptions + +**Short** + +Vitte Studio is the official VS Code extension for the Vitte language — syntax, IntelliSense, LSP, diagnostics, formatting, and tooling. + +>>>>>>> Stashed changes **Long** Vitte Studio brings first‑class Vitte support to VS Code. You get rich completions, hover docs, diagnostics and linting, go‑to definition and references, formatting, and semantic tokens. The extension includes a built‑in language server, workspace indexing, and project tooling commands for build, run, test, and benchmarks. If you write Vitte, this is the all‑in‑one, modern IDE experience. @@ -430,4 +467,7 @@ Vitte Studio adds a `vitte` task definition for build tooling: ## License MIT +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes From 4e811eb256d78da8fe3f982e2a31582795acc5a2 Mon Sep 17 00:00:00 2001 From: Vincent Rousseau Date: Mon, 9 Feb 2026 13:54:48 +0100 Subject: [PATCH 7/7] fix Co-Authored-By: Vincent Rousseau <12572924+roussov@users.noreply.github.com> --- server/src/lsp.ts | 8 ++++---- src/commands/quickActions.ts | 3 +-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/server/src/lsp.ts b/server/src/lsp.ts index ec4a114..1720a2c 100644 --- a/server/src/lsp.ts +++ b/server/src/lsp.ts @@ -387,10 +387,10 @@ connection.onInitialized(() => { const handleConfigChange = Config.makeOnDidChangeConfigurationHandler(connection, { getOpenDocuments: () => documents.all(), - validateDocument: (doc) => { + validateDocument: async (doc) => { try { const diagnostics = lintToPublishable(doc.getText(), doc.uri); - void connection.sendDiagnostics({ uri: doc.uri, diagnostics }); + await connection.sendDiagnostics({ uri: doc.uri, diagnostics }); } catch (e) { logLsp.warn('Validation error after config change', { uri: doc.uri, error: String(e) }); } @@ -434,10 +434,10 @@ documents.onDidClose((e) => { removeDocument(e.document.uri); }); -function handleValidate(doc: TextDocument) { +async function handleValidate(doc: TextDocument): Promise { try { const diags = lintToPublishable(doc.getText(), doc.uri); - void connection.sendDiagnostics({ uri: doc.uri, diagnostics: diags }); + await connection.sendDiagnostics({ uri: doc.uri, diagnostics: diags }); logLsp.debug('Diagnostics sent', { uri: doc.uri, count: diags.length }); } catch (err) { logLsp.error('Validation failed', { uri: doc.uri, error: String(err) }); diff --git a/src/commands/quickActions.ts b/src/commands/quickActions.ts index e44ff52..0853211 100644 --- a/src/commands/quickActions.ts +++ b/src/commands/quickActions.ts @@ -195,8 +195,7 @@ const UNPIN_BUTTON: vscode.QuickInputButton = { iconPath: new vscode.ThemeIcon(' function getVitteConfiguration(): vscode.WorkspaceConfiguration | undefined { try { return vscode.workspace.getConfiguration('vitte'); - } catch (error) { - console.warn('[vitte.quickActions] Unable to read vitte configuration', error); + } catch (_error) { return undefined; } }