- VS Code ≥ 1.93
- Toolchain installée et accessible :
vitlc
(compilateur)vitlv
(VM / interpréteur)
- Variables d’environnement correctement configurées (
PATH
doit contenir les binaires) - Projet contenant au moins un fichier
.vitte
,.vit
ou.vitl
- Ouvrez un fichier source
.vitte
,.vit
ou.vitl
dans VS Code. - Placez un breakpoint (F9 ou clic dans la gouttière).
- Appuyez sur F5 pour exécuter la configuration par défaut Vitl: Launch current file.
- Le débogueur démarre et vous accédez à :
- Exécution pas à pas (Step In / Step Over / Step Out)
- Variables locales et globales
- Observateur (Watch expressions)
- Pile d’appels (Call Stack)
- Points d’arrêt conditionnels et logpoints
Créez ou ouvrez .vscode/launch.json
(VS Code le propose à la première exécution) :
{
"version": "0.2.0",
"configurations": [
{
"type": "vitl",
"request": "launch",
"name": "Vitl: Launch current file",
"program": "${file}",
"cwd": "${workspaceFolder}",
"stopOnEntry": true,
"args": []
},
{
"type": "vitl",
"request": "launch",
"name": "Vitl: Launch with args",
"program": "${file}",
"cwd": "${workspaceFolder}",
"args": ["--flag", "value", "--verbose"],
"stopOnEntry": false,
"env": {
"VITTE_LOG": "debug",
"VITTE_FEATURES": "exp1,exp2"
}
},
{
"type": "vitl",
"request": "attach",
"name": "Vitl: Attach to running VM",
"host": "127.0.0.1",
"port": 6009,
"timeout": 10000
}
],
"compounds": [
{
"name": "Run app + Attach tools",
"configurations": ["Vitl: Launch current file", "Vitl: Attach to running VM"]
}
]
}
vitte.debug.start
— démarre une session de débogage sur le fichier courantvitte.debug.stop
— arrête la session activevitte.debug.runFile
— exécute immédiatement le fichier ouvert sans configuration avancéevitte.debug.attachServer
— se connecte à un processus Vitl/Vitte déjà en coursvitte.debug.restart
— redémarre la session en cours
Extension Visual Studio Code pour le langage Vitte et le dialecte Vitl. Fonctionnalités incluses : coloration syntaxique, snippets, configuration de langage, LSP (auto-complétion, hover, navigation, symboles, diagnostics, semantic tokens) et thème d’icônes.
- VitteStudio
- Vitte Language Support (Vitte/Vitl) — VS Code
- Deux langages supportés :
vitte
etvitl
- Extensions reconnues :
.vitte
,.vit
et.vitl
- Coloration syntaxique via :
syntaxes/vitte.tmLanguage.json
syntaxes/vitl.tmLanguage.json
- Snippets intégrés :
snippets/vitte.json
snippets/vitl.json
- Configuration de langage :
language-configuration.json
(Vitte)language-configuration-vitl.json
(Vitl)
- LSP intégré (Node.js) :
- Auto-complétion, hover, go to definition, document symbols
- Semantic Tokens : surlignage précis (keywords, fonctions, variables, constantes…)
- Diagnostics :
TODO
/FIXME
, séquence???
, espaces en fin de ligne, lignes trop longues - Surveillance de fichiers de configuration :
**/.vitteconfig
,**/vitte.toml
,**/.vitlconfig
,**/vitl.toml
- Sélecteurs de documents :
vitte
,vitl
, fichiers et buffers non sauvegardés - Options d’exécution :
VITTE_LSP_PATH
: pointer vers un serveur LSP externeVITTE_LSP_INSPECT
: activer le mode debug Node (ex.6009
)
- Thème d’icônes personnalisé
- Compatibilité :
- Visual Studio Code
^1.75.0
- Node.js
>=18
recommandé
- Visual Studio Code
- Build & packaging :
- Scripts
npm run build
,watch
,clean
- Génération VSIX avec
npx vsce package
- Installation locale :
code --install-extension vitte-lang-*.vsix
- Scripts
Langage | Extensions | Scope TextMate | Snippets |
---|---|---|---|
Vitte | .vitte , .vit |
source.vitte |
snippets/vitte.json |
Vitl | .vitl |
source.vitl |
snippets/vitl.json |
npm ci
npx tsc -p ./client && npx tsc -p ./server
mkdir -p dist
npx @vscode/vsce package -o dist/vitte-lang-$(jq -r .version package.json).vsix
# installation locale
code --install-extension dist/*.vsix
### Depuis le Marketplace
1) Créer un **Personal Access Token** (Azure DevOps → User settings → *Personal access tokens* → scope `Marketplace > Manage`).
2) Se connecter : `npx vsce login VitteStudio` (coller le PAT).
3) Publier : `npx vsce publish` ou `npx vsce publish 0.3.0`.
---
## Utilisation
- Ouvrir un fichier `*.vitte`, `*.vit` ou `*.vitl`.
- Activer le LSP si désactivé par défaut : `F1 → Preferences: Open Settings (JSON)` puis :
```json
{
"vitte.enableLSP": true,
"vitte.trace.server": "off"
}
Le serveur propage aussi une section
vitl
si vous l’ajoutez dans vos settings, ex.:
{ "vitl": { "enableSemanticTokens": true } }
- L’option "vitte.trace.server" peut être définie sur "off", "messages" ou "verbose" afin d’ajuster la quantité de journaux échangés entre le client VS Code et le serveur de langage. "messages" est utile pour observer les requêtes LSP entrantes/sortantes, tandis que "verbose" fournit un traçage complet incluant le contenu.
Paramètres déclarés dans package.json
(section contributes.configuration
):
vitte.enableLSP
(boolean
, défautfalse
) : active le serveur de langage.vitte.trace.server
("off" | "messages" | "verbose"
, défautoff
) : niveau de trace LSP.
Paramètres dynamiques vus côté serveur (non déclarés dans contributes
) :
vitl.enableSemanticTokens
(boolean
, défauttrue
si non défini).
Variables d’environnement utiles :
VITTE_LSP_PATH
: chemin d’un serveur LSP externe (binaire).VITTE_LSP_INSPECT
: port d’inspection Node pour le LSP, ex.6009
.
VitteLangVsCode/
├── .vscode/
│ ├── launch.json
│ ├── tasks.json
│ └── extensions.json
├── package.json
├── tsconfig.json
├── README.md
├── CHANGELOG.md
├── icon.png
│
├── client/
│ ├── src/extension.ts # Client LSP (vitte + vitl)
│ └── out/
│
├── server/
│ ├── src/server.ts # Serveur LSP (vitte + vitl)
│ └── out/
│
├── syntaxes/
│ ├── vitte.tmLanguage.json
│ └── vitl.tmLanguage.json
│
├── snippets/
│ ├── vitte.json
│ └── vitl.json
│
├── icons/
│ └── vitte-icon-theme.json
│
├── language-configuration.json
├── language-configuration-vitl.json
│
└── scripts/
├── build.sh
└── release.sh
Prérequis : Node 18+, npm, VS Code ≥ 1.75.
# installer
npm ci
# builder (TS → JS)
npx tsc -p ./client && npx tsc -p ./server
# lancer en mode extension (F5) avec .vscode/launch.json
# option debug serveur
export VITTE_LSP_INSPECT=6009
npm run compile
: compileclient
etserver
viatsc
.npm run watch
: compilation incrémentale en watch.npm run build:vsix
: compile + check + package en.vsix
.npm run publish
: compile + publication Marketplace.
npm ci
npx tsc -p ./client && npx tsc -p ./server
mkdir -p dist
VSIX="dist/vitte-lang-$(jq -r .version package.json).vsix"
npx @vscode/vsce package -o "$VSIX"
unzip -p "$VSIX" extension/package.json | jq -r '.name, .publisher, .version'
code --install-extension "$VSIX"
npm ci
npx tsc -p ./client; npx tsc -p ./server
if (!(Test-Path dist)) { New-Item -ItemType Directory dist | Out-Null }
$ver = (Get-Content package.json | ConvertFrom-Json).version
$vsix = "dist/vitte-lang-$ver.vsix"
npx @vscode/vsce package -o $vsix
code --install-extension $vsix
# connexion (1ère fois)
npx vsce login VitteStudio
# publier version exacte
npx vsce publish 0.3.0
# ou bump auto
npx vsce publish patch # ex. 0.3.1
npx vsce publish minor # ex. 0.4.0
Erreurs fréquentes et correction :
The version 0.2.0 already exists and cannot be modified
→ incrémenter la version (npm version patch --no-git-tag-version
), re-packager, republier.ENOENT .vsix
lors de l’installation → vérifier le répertoire d’exécution et l’option-o
devsce package
.tsc not found
→npm i -D typescript
et utilisernpx tsc
(éviter le paquettsc
qui n’est pas TypeScript).
module demo
pub fn main() {
let msg: string = "Hello Vitte"
print(msg)
}
module demo
fn main(): void {
let msg: string = "Hello Vitl"
println(msg)
}
-
LSP ne démarre pas
- Vérifiez la console des extensions (
Ctrl+Shift+U
) et le canal Vitte/Vitl LSP. - Assurez la présence du fichier
server/out/server.js
(recompiler avecnpm run compile
). - Si vous utilisez un serveur externe, définissez la variable d’environnement
VITTE_LSP_PATH
vers le binaire compilé. - Si vous avez activé le mode inspection (
VITTE_LSP_INSPECT
), vérifiez que le port choisi (ex.6009
) est libre et non bloqué par un pare-feu.
- Vérifiez la console des extensions (
-
Coloration syntaxique manquante
- Contrôlez que les fichiers
syntaxes/vitte.tmLanguage.json
etsyntaxes/vitl.tmLanguage.json
existent et soient valides. - Vérifiez l’association des extensions (
.vitte
,.vit
,.vitl
) danspackage.json
→contributes.languages
. - Rechargez la fenêtre VS Code (
F1 → Reload Window
) pour forcer la relecture des fichiers de grammaire.
- Contrôlez que les fichiers
-
Snippets absents
- Confirmez que les fichiers
snippets/vitte.json
etsnippets/vitl.json
sont bien référencés danspackage.json
→contributes.snippets
. - Assurez-vous que la structure interne du JSON respecte le format attendu (
prefix
,body
,description
). - Si un snippet ne s’affiche pas, testez avec
F1 → Insert Snippet
et vérifiez qu’il est bien listé.
- Confirmez que les fichiers
-
Publisher invalide
- Le champ
publisher
depackage.json
doit correspondre exactement au publisher Marketplace (VitteStudio
). - En cas de mismatch, mettez à jour
package.json
puis regénérez le.vsix
. - Vérifiez avec
npx vsce ls-publishers
pour lister vos publishers enregistrés.
- Le champ
-
Erreur
The version X already exists and cannot be modified
- Il faut incrémenter la version dans
package.json
(npm version patch --no-git-tag-version
) puis relancernpx vsce package
etnpx vsce publish
. - Exemple :
0.3.0
déjà publiée → passez en0.3.1
.
- Il faut incrémenter la version dans
-
Erreur
ENOENT .vsix
lors de l’installation locale- Vérifiez que le fichier
.vsix
a bien été généré dansdist/
. - Commande correcte :
code --install-extension dist/vitte-lang-x.y.z.vsix
. - Attention : le
-o
devsce package
doit pointer vers un dossier existant.
- Vérifiez que le fichier
-
Erreur
tsc not found
ou compilation impossible- Installez TypeScript en local :
npm i -D typescript
- Compilez avec
npx tsc -p ./client && npx tsc -p ./server
. - Évitez d’utiliser le paquet
tsc
global qui n’est pas le compilateur officiel.
- Installez TypeScript en local :
-
Debug adapter non reconnu
- Vérifiez que
client/src/extension.ts
importe et enregistre correctementVitlDebugAdapterFactory
. - Assurez-vous que la section
contributes.debuggers
est bien définie danspackage.json
. - Testez la configuration par défaut dans
.vscode/launch.json
(type: "vitl"
).
- Vérifiez que
-
Icônes non appliquées
- Vérifiez que
icons/vitte-icon-theme.json
est bien référencé danspackage.json
→contributes.iconThemes
. - Rechargez VS Code et activez le thème d’icônes via
F1 → File Icon Theme → Vitte
.
- Vérifiez que
-
Performances dégradées
- Si le LSP consomme trop de ressources, réduisez la verbosité du trace :
{ "vitte.trace.server": "off" }
- Désactivez temporairement les
semanticTokens
si vous avez un projet massif :{ "vitl": { "enableSemanticTokens": false } }
- Si le LSP consomme trop de ressources, réduisez la verbosité du trace :
-
Tests ou compilation VSIX échouent sur CI/CD
- Assurez-vous que la CI installe Node.js ≥ 18 et
vsce
. - Ajoutez un cache npm (
npm ci
plutôt quenpm install
). - Vérifiez que
scripts/build.sh
ourelease.sh
ont les droits d’exécution (chmod +x
).
- Assurez-vous que la CI installe Node.js ≥ 18 et
La feuille de route suivante décrit les fonctionnalités planifiées et les améliorations envisagées pour les prochaines versions de l’extension VitteStudio (support Vitte/Vitl dans VS Code). Les jalons sont indicatifs et sujets à ajustements selon les retours utilisateurs et la progression du langage.
-
Formateur intégré (
DocumentRangeFormatting
etOnTypeFormatting
)- Normalisation indentation (espaces vs tabulations)
- Gestion automatique des espaces autour des opérateurs, virgules et
:
- Trim des espaces en fin de ligne et insertion newline final
- Options configurables via
settings.json
-
Renommage de symboles (
RenameProvider
)- Renommage cohérent dans tout le document et projet
- Support des variables locales, globales et fonctions
-
Diagnostics enrichis
- Détection des variables inutilisées
- Avertissement sur les imports non utilisés
- Détection des blocs vides
-
Inlay hints
- Affichage des types implicites (ex: paramètres, retours de fonction)
- Indices pour les valeurs par défaut des arguments
-
Code lenses
- Actions rapides au-dessus des fonctions (
Run
,Debug
,Test
) - Informations de référence : nombre d’appels à une fonction
- Actions rapides au-dessus des fonctions (
-
Amélioration du debug
- Watch expressions évoluées
- Support des breakpoints conditionnels
- Console interactive (REPL connecté au runtime Vitl/Vitte)
-
Indexation avancée
- Recherche de symboles multi-fichiers plus rapide
- Navigation croisée : Go to Implementation et Find References
-
Tests end-to-end via
@vscode/test-electron
- Jeux de tests complets pour valider LSP, snippets, debug, formatteur
- CI automatisée sur Linux, macOS et Windows
-
Refactorings avancés
- Extraction de fonction/méthode
- Organisation automatique des imports
- Conversion automatique
let ↔ const
selon usage
-
Télémétrie opt-in
- Statistiques anonymes (activation manuelle par l’utilisateur)
- Aide à prioriser les fonctionnalités les plus utilisées
-
Écosystème & packaging
- Intégration avec GitHub Codespaces / VS Code Web
- Publication automatisée sur Marketplace + GitHub Releases
- Documentation intégrée interactive (tutoriels dans VS Code)
- Support partiel de Vitl FFI (interop avec C/Rust directement dans VS Code).
- Mode Playground pour exécuter des snippets
.vitl
sans projet. - Visualisation graphique (ex. graphe d’appel, diagrammes d’imports).
- Support d’autres éditeurs via LSP (Neovim, JetBrains, etc.).
- Intégration avec des outils d’analyse statique tiers (Clippy-like).
Issues et PRs bienvenues : https://github.com/vitte-lang/vscode-vitte. Style : TypeScript strict, commits clairs, CI verte.
MIT. Voir LICENSE
.