turbo-editors/turbo-golopublic Fork 0
v1.0.1
Commits
Clone
git clone https://git.rickub.com/turbo-editors/turbo-golo.git
git clone ssh://git@rickub.com/turbo-editors/turbo-golo.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

use-snippets.md · 116 lines · 4.8 KBmarkdown Blame HistoryRaw
📦 Turbo Golo d710c1b k33g 14h ago1# Insérer des snippets depuis un menu
2
3Ce guide montre comment mettre en place des morceaux de texte réutilisables et les insérer dans un fichier à l'endroit du curseur. Il suppose Turbo Golo déjà installé.
4
5## Obtenir un fichier de départ
6
7Lancez l'éditeur **depuis le dossier du projet**, puis choisissez **Snippets ▸ Create snippets file** (`Alt-N`, puis `C`).
8
9Cela écrit `.turbo-golo/snippets.toml`, rempli de douze snippets Golo — `module`, `main`, `function`, `closure`, `struct`, `union`, `augment`, `match`, `foreach`, `for`, `try`, `comprehension` — plus deux exemples d'autres groupes, et l'ouvre — coloré, puisque Turbo Golo colore le TOML :
10
11```toml
12[[snippet]]
13name = "main"
14group = "Golo"
15languages = ["golo"]
16body = '''
17function main = |args| {
18 println("Hello, Golo!")
19}'''
20
21[[snippet]]
22group = "General"
23name = "Hello"
24body = "Hello!!!"
25```
26
27Chaque `[[snippet]]` devient une ligne du menu. Le fichier est relu **chaque fois que le menu s'ouvre** : une modification prend effet immédiatement, sans redémarrage.
28
29## En insérer un
30
31Ouvrez **Snippets** (`Alt-N`). Les snippets partageant un `group` apparaissent ensemble dans un sous-menu de ce nom ; celui qui n'a pas de groupe va dans **General**.
32
33| Touche | Effet |
34| --- | --- |
35| `Alt-N`, ou `F10` puis `→` jusqu'à Snippets | Ouvrir le menu |
36| `↑` `↓` | Parcourir les groupes |
37| `→`, ou `Entrée` | Ouvrir le groupe surligné |
38| `↑` `↓` puis `Entrée` | Insérer le snippet surligné |
39| `←` | Ressortir d'un groupe |
40| `Échap` | Refermer tout le menu |
41
42Le snippet arrive au curseur. **Les lignes suivant la première sont indentées sur la ligne où vous l'avez inséré**, de sorte qu'un snippet multi-ligne déposé dans un bloc imbriqué atterrit là où vous l'auriez tapé :
43
44```
45function main = |args| {
46 | ← curseur ici
47}
48```
49
50devient, avec le snippet `foreach`,
51
52```
53function main = |args| {
54 foreach item in list[1, 2, 3] {
55 println(item)
56 }
57}
58```
59
60C'est une seule opération d'annulation : `Ctrl-Z` retire tout le snippet.
61
62## Garder ses snippets d'un projet à l'autre
63
64Mettez-les dans `~/.config/turbo-golo/snippets.toml` — le même dossier que vos thèmes. Ceux-là apparaissent dans tous les projets, et le fichier d'un projet s'y **ajoute** plutôt que de les remplacer.
65
66Quand un projet et vous employez le même `name` dans le même `group`, **celui du projet gagne** : c'est le plus spécifique des deux énoncés.
67
68## N'afficher un snippet que là où il a un sens
69
70Ajoutez `languages`, avec les noms que l'éditeur emploie — `golo`, `toml`, `markdown`, `javascript`, `html`, `bash` :
71
72```toml
73[[snippet]]
74name = "strict mode"
75group = "Shell"
76languages = ["bash"]
77body = "set -euo pipefail"
78```
79
80Ce snippet n'apparaît alors que si un script shell est au premier plan. Omettez `languages` et le snippet est proposé partout, ce que vous voulez pour un en-tête de licence ou un `TODO`.
81
82Un groupe que le filtrage laisse vide n'apparaît pas du tout.
83
84## Écrire un corps Golo
85
86Deux habitudes du fichier de départ valent d'être reprises dans les vôtres :
87
88- **Deux espaces d'indentation.** C'est ce que font tous les exemples de GoloScript, et Golo n'a pas de formateur pour dire le contraire.
89- **Des chaînes littérales, `'''…'''`.** Une chaîne Golo porte `\n` et `\"` ; dans une chaîne TOML basique, `"""…"""`, ces échappements seraient résolus à la lecture du fichier, avant que l'éditeur ne voie le corps. Dans une chaîne littérale, une barre oblique inverse est une barre oblique inverse, et le snippet arrive dans le fichier tel que vous l'avez écrit :
90
91```toml
92[[snippet]]
93name = "try"
94group = "Golo"
95languages = ["golo"]
96body = '''
97try {
98 throw "boom"
99} catch (e) {
100 println("caught: \"" + e + "\"")
101} finally {
102 println("done")
103}'''
104```
105
106## Variantes
107
108- **Vous avez lancé l'éditeur depuis un sous-dossier.** Le fichier du projet n'est pas trouvé : seul `./.turbo-golo` est consulté, la même règle que `settings.toml`. Vos propres snippets apparaissent quand même.
109- **Le fichier contient une erreur.** Le menu affiche un `Cannot read snippets` grisé à la place des groupes, et **Create snippets file** est toujours là. Ouvrez le fichier et corrigez-le.
110- **Vous voulez une tabulation dans un corps.** Dans une chaîne `"""…"""`, écrivez `\t` : le TOML le transforme en tabulation à la lecture. Dans une chaîne `'''…'''`, tapez une vraie tabulation — rien n'y est interprété.
111
112## Voir aussi
113
114- Toutes les clés du fichier et toutes les règles : [Référence des snippets](../reference/snippets.md)
115- Pourquoi le menu est reconstruit à chaque ouverture, pourquoi l'insertion réindente, et pourquoi deux espaces : [Snippets](../explanation/snippets.md)
116- L'autre fichier de `.turbo-golo` : [Réglages de projet](../reference/project-settings.md)