Créer une extension
Format .scrext, version d’API 2 : thèmes de couleurs, thèmes d’icônes, extraits de code, types de fichiers, abréviations et modèles de fichiers. Pour le moment, seules les extensions des Arcanes de Cookie sont proposées dans le catalogue ; vous pouvez néanmoins créer les vôtres pour vous.
Principe
Un fichier .scrext est un fichier JSON (UTF-8). Il ne contient jamais de code exécutable : Scriptorium vérifie chaque champ (couleurs en #rrggbb, noms de fichiers sans caractère interdit, tailles limitées) et ignore tout ce qu’il ne connaît pas.
Champs communs
| Champ | Contenu |
|---|---|
format, api | 1, 1 (thèmes, icônes) / 2 (le reste) |
id | Identifiant unique en minuscules : lettres, chiffres, points, tirets (ex. fr.mondomaine.theme.rose). |
version | Trois nombres : 1.0.0. À augmenter à chaque changement (les mises à jour en dépendent). |
category | appearance · languages · tools · universe |
name, description | Un texte, ou {"fr":"…","en":"…"}. |
author, color | Nom de l’auteur ; couleur #rrggbb de la pastille. |
contributes | themes, iconTheme, snippets, fileTypes, emmet, templates |
Thème de couleurs
"contributes": { "themes": [{
"id": "rose-dark", "label": {"fr": "Rose sombre", "en": "Rose dark"}, "type": "dark",
"ui": { "bg": "#1a1018", "bg2": "#221620", "bg3": "#2c1c29", "panel": "#201420", "line": "#40283c",
"fg": "#f2e6ef", "dim": "#b399ad", "accent": "#f08cc0", "accent2": "#a8467e",
"hover": "#2f1f2c", "active": "#432a3e", "danger": "#e5646e", "shadow": "#00000073" },
"editor": { "bg": "#1a1018", "fg": "#f2e6ef", "line": "#221620", "sel": "#5a2f4c", "cursor": "#f08cc0",
"ln": "#6b4a62", "widget": "#221620",
"comment": "8c7084", "keyword": "f08cc0", "string": "f0c27f", "number": "f0a07f", "type": "9ec1f5" }
}]}
« type » vaut dark ou light. Les couleurs de « ui » sont facultatives (celles du thème Arcanes servent par défaut) ; celles de « editor » sont obligatoires. Dans « editor », les couleurs de jetons (comment, keyword, string, number, type) s’écrivent sans le #. Un fichier peut contenir jusqu’à 8 thèmes.
Thème d’icônes
"contributes": { "iconTheme": {
"default": {"t": "", "c": "#8a7aa8"},
"files": {"js": {"t": "JS", "c": "#f0db4f"}, "php": {"t": "PHP", "c": "#8892bf"}},
"names": {"package.json": {"t": "NPM", "c": "#cb3837"}},
"folder": {"c": "#e6b85c"},
"folders": {"src": "#5fc8a0", "docs": "#6aa5f0"}
}}
« files » : par extension (sans le point) ; « names » : par nom complet de fichier (prioritaire) ; « t » : 1 à 4 caractères affichés dans le badge ; « folders » : couleur selon le nom du dossier.
Extraits de code (API 2)
"contributes": { "snippets": [{ "language": "php", "items": [
{ "prefix": "foreachk", "label": "foreach clé => valeur",
"description": {"fr": "Boucle sur un tableau", "en": "Loop over an array"},
"body": ["foreach (\\$${1:liste} as \\$${2:cle} => \\$${3:valeur}) {", "\t$0", "}"] }
]}]}
« language » est l’identifiant du langage dans Scriptorium (html, css, php, lua, java, python, dart, kotlin, swift, xml…). Le corps utilise la syntaxe des extraits : ${1:défaut} (zones à remplir, dans l’ordre), $0 (position finale du curseur). Un $ littéral s’écrit \$. Les extraits apparaissent dans les suggestions (Ctrl+Espace) et se valident avec Tab ou Entrée.
Types de fichiers et abréviations (API 2)
"contributes": {
"fileTypes": [{ "language": "ini", "extensions": [".cfg"], "filenames": ["server.cfg"] }],
"emmet": ["html", "php"]
}
« fileTypes » associe des extensions ou des noms de fichier à un langage. « emmet » active les abréviations HTML (ul>li*3, div.carte#un>h2{Titre}…) dans les langages listés.
Modèles de fichiers (API 2)
"contributes": { "templates": [{
"id": "fivem-resource", "label": {"fr": "Ressource FiveM", "en": "FiveM resource"},
"files": [
{ "path": "{{name}}/fxmanifest.lua", "content": "fx_version 'cerulean'\ngame 'gta5'\n" },
{ "path": "{{name}}/client/main.lua", "content": "-- {{name}}\n" }
]
}]}
L’utilisateur choisit le modèle (Fichier › Nouveau à partir d’un modèle) puis un nom ; {{name}} et {{NAME}} sont remplacés dans les chemins et les contenus. Les chemins sont relatifs au dossier ouvert (pas de « .. »), 30 fichiers au plus, 100 Ko par fichier. Rien n’est écrasé : si un fichier existe déjà, rien n’est créé.
L’essayer
Enregistrez le fichier en .scrext puis glissez-le dans Scriptorium (voir « Installer une extension »). Si le fichier est refusé, l’extension n’est pas installée.