Scriptorium FR EN

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

ChampContenu
format, api1, 1 (thèmes, icônes) / 2 (le reste)
idIdentifiant unique en minuscules : lettres, chiffres, points, tirets (ex. fr.mondomaine.theme.rose).
versionTrois nombres : 1.0.0. À augmenter à chaque changement (les mises à jour en dépendent).
categoryappearance · languages · tools · universe
name, descriptionUn texte, ou {"fr":"…","en":"…"}.
author, colorNom de l’auteur ; couleur #rrggbb de la pastille.
contributesthemes, 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.