Skip to content

Commit 1312e5f

Browse files
committed
feat: add initial Topineur language support for VSCode
- Introduced language configuration, syntax highlighting, and editor settings for Topineur (.top) files. - Added README for installation instructions and feature overview. - Created package.json and package-lock.json for extension management. - Included a .vsix file for easy distribution of the extension.
1 parent 3f08b10 commit 1312e5f

File tree

6 files changed

+468
-0
lines changed

6 files changed

+468
-0
lines changed

editor/vscode-topineur/README.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Topineur VSCode Extension
2+
3+
Cette extension fournit :
4+
- coloration syntaxique complète pour les fichiers `.top`
5+
- configuration d'éditeur (commentaires, paires de brackets, pliage)
6+
- reconnaissance des déclarations (`package`, `import`, `def`, `object type`, `let`, etc.)
7+
- mise en valeur des types (`Int`, `Float`, types utilisateurs, génériques `List[T]`, …), des décorateurs (`@cache`), des booléens, des opérateurs et du mot-clé `self`
8+
9+
## Installation rapide
10+
11+
1. Ouvrir VSCode.
12+
2. Appuyer sur `F1` puis exécuter `Developer: Install Extension from Location...`.
13+
3. Sélectionner le dossier `editor/vscode-topineur` de ce dépôt.
14+
15+
En alternative, depuis un terminal :
16+
17+
```bash
18+
code --install-extension editor/vscode-topineur
19+
```
20+
21+
(Adapter le chemin si vous n'êtes pas à la racine du dépôt.)
22+
23+
## Tests manuels
24+
25+
Une fois installée, ouvrez un exemple Topineur, par exemple `examples/all.top`, et vérifiez :
26+
- coloration des commentaires `|-`
27+
- coloration des mots-clés de contrôle (`if`, `while`, `for`, `end`, `top`)
28+
- mise en évidence des noms de fonctions et objets (`def foo`, `object type Person`)
29+
- reconnaissance des types génériques (`List[Int]`, `Tuple[Float, Float]`)
30+
- chaînes, nombres entiers/flottants, opérateurs (`..`, `++`, `==`, `!=`, `->`, etc.)
31+
32+
## Personnalisation
33+
34+
Le fichier `syntaxes/top.tmLanguage.json` contient toutes les règles TextMate si vous souhaitez ajuster ou étendre la coloration.
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
{
2+
"comments": {
3+
"lineComment": "|-"
4+
},
5+
"brackets": [
6+
[
7+
"{",
8+
"}"
9+
],
10+
[
11+
"[",
12+
"]"
13+
],
14+
[
15+
"(",
16+
")"
17+
]
18+
],
19+
"autoClosingPairs": [
20+
{
21+
"open": "{",
22+
"close": "}",
23+
"notIn": [
24+
"string",
25+
"comment"
26+
]
27+
},
28+
{
29+
"open": "[",
30+
"close": "]",
31+
"notIn": [
32+
"string",
33+
"comment"
34+
]
35+
},
36+
{
37+
"open": "(",
38+
"close": ")",
39+
"notIn": [
40+
"string",
41+
"comment"
42+
]
43+
},
44+
{
45+
"open": "\"",
46+
"close": "\"",
47+
"notIn": [
48+
"string",
49+
"comment"
50+
]
51+
}
52+
],
53+
"surroundingPairs": [
54+
[
55+
"{",
56+
"}"
57+
],
58+
[
59+
"[",
60+
"]"
61+
],
62+
[
63+
"(",
64+
")"
65+
],
66+
[
67+
"\"",
68+
"\""
69+
]
70+
],
71+
"wordPattern": "(?:[A-Za-z_][A-Za-z0-9_]*|@?[A-Za-z_][A-Za-z0-9_]*|\\d+)",
72+
"folding": {
73+
"markers": {
74+
"start": "^\\s*(?:object\\s+type|def|while|for|if|@\\w+).*\\b(?:do|{)?\\s*$",
75+
"end": "^\\s*(?:end|})\\s*$"
76+
}
77+
}
78+
}

editor/vscode-topineur/package-lock.json

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
{
2+
"name": "topineur-language-support",
3+
"displayName": "Topineur Language Support",
4+
"description": "Adds syntax highlighting and editor configuration for Topineur (.top) files used in the GLaDOS project.",
5+
"version": "0.1.0",
6+
"publisher": "glados",
7+
"license": "MIT",
8+
"engines": {
9+
"vscode": "^1.87.0"
10+
},
11+
"categories": [
12+
"Programming Languages"
13+
],
14+
"contributes": {
15+
"languages": [
16+
{
17+
"id": "topineur",
18+
"aliases": [
19+
"Topineur",
20+
"top"
21+
],
22+
"extensions": [
23+
".top"
24+
],
25+
"configuration": "./language-configuration.json"
26+
}
27+
],
28+
"grammars": [
29+
{
30+
"language": "topineur",
31+
"scopeName": "source.topineur",
32+
"path": "./syntaxes/top.tmLanguage.json"
33+
}
34+
]
35+
}
36+
}

0 commit comments

Comments
 (0)