Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>Rhai highlighting, outline and language configurationNew to Visual Studio Code? Get it now.
Rhai highlighting, outline and language configuration

Rhai highlighting, outline and language configuration

jhenriot alias lemeran81

|
1 install
| (0) | Free
Syntax highlighting, outline and language configuration for Rhai scripts
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Rhai Language Support pour VS Code

Version License VS Code Rhai

Extension VS Code dédiée au langage de scripting Rhai, offrant une coloration syntaxique complète, une structure/outline des fichiers, un formateur de code et des snippets pour une productivité optimale.

🐛 Limitations connues

  • La coloration syntaxique est basique et pourrait être améliorée
  • L'autocomplétion est limitée aux snippets
  • Le formateur de code est rudimentaire
  • Windsurf uniquement : Le hover peut parfois afficher la documentation deux fois de manière intermittente (race condition dans Windsurf). Ce problème n'existe pas sur VS Code standard.

Auteur

jhenriot alias lemeran81

Fonctionnalités

🎨 Coloration Syntaxique

Support complet de la syntaxe Rhai :

  • Mots-clés : fn, const, let, if, else, for, in, while, switch, import, as, export, private, break, continue, return, throw, try, catch
  • Types : nombres entiers, flottants, hexadécimaux, binaires, octaux
  • Opérateurs : and, or, not, is, is_empty, is_undefined
  • Fonctions : définitions fn nom() et appels nom()
  • Objets : maps #{}, closures |...| {}
  • Chaînes : interpolation ${...} dans les strings double-quote "" et templates `...`
  • Commentaires : //, /* */, documentation /// et //!
  • Constantes : true, false, ()

📋 Structure / Outline

L'outline affiche dans la barre latérale :

  • Fonctions (fn) — avec nom et paramètres (ex: creer_arme(nom, description))
  • Constantes (const) — en majuscules
  • Imports (import "module" as alias) — avec alias et module source
  • Régions (// region: Nom) — pliables, avec hiérarchie

🔗 Navigation par définition (Ctrl+Click)

Naviguez rapidement dans votre code Rhai, même entre fichiers :

  • Ctrl+Click (ou F12) sur un nom de fonction → saute à sa définition fn nom()
  • Ctrl+Click sur une constante → saute à sa définition const NOM
  • Ctrl+Click sur module::fonction (ex: p::get_equipement) → ouvre le fichier importé et saute à la définition
  • Supporte les imports via import "fichier" as alias

Exemple :

import "personnage" as p;

// Ctrl+Click sur get_equipement ouvre personnage.rhai
let equipement = p::get_equipement(personnage);

📖 Documentation au survol (Hover)

Survolez une fonction pour voir sa documentation instantanée avec un affichage enrichi :

Fonctions natives Rhai : 🔷

  • Hover sur type_of(), print(), debug(), len(), etc.
  • Affichage coloré avec emoji et lien vers la documentation officielle

Fonctions utilisateur (locales et importées) : 🟢

  • Hover sur une fonction affiche sa documentation JSDoc formatée
  • Fonctions locales : documentation extraite du fichier courant
  • Fonctions importées : module::fonction() ouvre le fichier importé et affiche sa doc
  • Mise en forme intelligente :
    • 📌 Titres (# Arguments, # Returns) en gras
    • • Puces pour les listes de paramètres
    • `Code` mis en évidence
    • Séparateurs visuels pour une meilleure lisibilité

Exemple :

// Dans personnage.rhai :
/// Calcule les points de vie d'un personnage
///
/// # Arguments
/// * `constitution` - Valeur de constitution (8-18)
/// * `niveau` - Niveau du personnage (1-20)
///
/// # Returns
/// Nombre de points de vie calculés
fn calculer_pv(constitution, niveau) {
    return constitution * 2 + niveau * 5
}

// Dans un autre fichier :
import "personnage" as p;

// Survoler p::calculer_pv() affiche :
// 🟢 calculer_pv()
// Calcule les points de vie d'un personnage
// ...
// 🔗 Importée depuis personnage
let pv = p::calculer_pv(12, 3);

🧩 Snippets

Snippet Description
fn Fonction avec documentation JSDoc complète
const Déclaration de constante
region Marqueurs de région avec nom
import Import de module avec alias
map Object map #{}
closure Closure \|...\| {}
for Boucle for
if Condition if/else

� Formateur de Code

Formate les signatures de fonctions avec un paramètre par ligne :

Avant :

fn creer_arme(nom, description, points_impact) {

Après (Shift+Alt+F) :

fn creer_arme(
	nom,
	description,
	points_impact,
) {

Règles du formateur :

  • Chaque paramètre sur sa propre ligne avec virgule finale
  • Indentation respectée (tab ou espaces selon les settings VS Code)
  • Les fonctions déjà bien formatées ne sont pas modifiées
  • Les fonctions sans paramètres restent fn nom() {
  • Supporte les signatures multi-lignes existantes

Configuration :

  • rhai.format.enable : Active/désactive le formateur (activé par défaut)

�🗂️ Configuration Langage

  • Commentaires : // ligne, /* */ bloc
  • Brackets : {}, [], (), #{}
  • Auto-fermeture : paires de caractères automatiques
  • Folding : régions // region: / // endregion:
  • Indentation : automatique sur { et }

Installation

Méthode 1 : Fichier VSIX

code --install-extension vscode-rhai-0.1.0.vsix

Ou via l'interface :

  1. Ouvrir Extensions (Ctrl+Shift+X)
  2. Cliquer sur ... (plus d'actions)
  3. Install from VSIX...
  4. Sélectionner vscode-rhai-0.1.0.vsix

Méthode 2 : Développement local

cd vscode-rhai
npm install
npm run compile
# F5 pour lancer dans VS Code

Utilisation

Coloration automatique

Les fichiers .rhai sont automatiquement reconnus avec la coloration syntaxique dédiée.

Outline

  1. Ouvrir un fichier .rhai
  2. La structure apparaît dans la barre latérale Explorer → section Outline
  3. Cliquer sur un élément pour naviguer

Snippets

Commencer à taper le nom du snippet, puis Tab pour l'insérer :

fn [Tab]  → Génère une fonction avec documentation

Exemple de code coloré

//! Module de gestion des personnages

// region: Types

const CLASSE_GUERRIER = #{
    "nom": "Guerrier",
    "pv_base": 10
};

// endregion: Types

/// Crée un nouveau personnage
///
/// # Arguments
///
/// * `nom` - Nom du personnage
/// * `classe` - Clé de la classe
fn creer_personnage(
	nom,
	classe,
) {
    let perso = #{
        "nom": nom,
        "classe": CLASSE_GUERRIER,
        "inventaire": []
    };
    
    for item in perso.inventaire {
        if item.cle == "epee" {
            print("Épée trouvée !");
        }
    }
    
    perso
}

import "utilitaires" as u;

Structure du projet

vscode-rhai/
├── package.json              # Manifest extension
├── language-configuration.json # Configuration langage
├── tsconfig.json             # Configuration TypeScript
├── README.md                 # Ce fichier
├── icons/                    # Icônes fichier
│   ├── rhai-light.svg
│   └── rhai-dark.svg
├── snippets/                 # Snippets
│   └── rhai.json
├── syntaxes/                 # Grammaire TextMate
│   └── rhai.tmLanguage.json
├── src/                      # Code source
│   └── extension.ts          # DocumentSymbolProvider + Formatter + DefinitionProvider + HoverProvider
├── LICENSE.md                # Licence MIT
└── .gitignore                # Fichiers ignorés par Git

Scripts disponibles

npm run compile       # Compiler TypeScript
npm run watch         # Compiler en mode watch
npm run package       # Créer le .vsix

Licence

MIT — jhenriot alias lemeran81

Liens

  • Rhai — Langage de scripting embarqué pour Rust
  • VS Code Extension API
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft