| 📦 Turbo Go 3d7798b k33g 16h ago | 1 | # Insérer des snippets depuis un menu |
| 2 | |
| 3 | Ce 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 Go déjà installé. |
| 4 | |
| 5 | ## Obtenir un fichier de départ |
| 6 | |
| 7 | Lancez l'éditeur **depuis le dossier du projet**, puis choisissez **Snippets ▸ Create snippets file** (`Alt-N`, puis `C`). |
| 8 | |
| 9 | Cela écrit `.turbo-go/snippets.toml`, rempli de quelques exemples travaillés, et l'ouvre — coloré, puisque Turbo Go colore le TOML : |
| 10 | |
| 11 | ```toml |
| 12 | [[snippet]] |
| 13 | name = "if err != nil" |
| 14 | group = "Go" |
| 15 | languages = ["go"] |
| 16 | body = """ |
| 17 | if err != nil { |
| 18 | return err |
| 19 | }""" |
| 20 | |
| 21 | [[snippet]] |
| 22 | name = "TODO" |
| 23 | body = "TODO: " |
| 24 | ``` |
| 25 | |
| 26 | Chaque `[[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. |
| 27 | |
| 28 | ## En insérer un |
| 29 | |
| 30 | Ouvrez **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**. |
| 31 | |
| 32 | | Touche | Effet | |
| 33 | | --- | --- | |
| 34 | | `Alt-N`, ou `F10` puis `→` jusqu'à Snippets | Ouvrir le menu | |
| 35 | | `↑` `↓` | Parcourir les groupes | |
| 36 | | `→`, ou `Entrée` | Ouvrir le groupe surligné | |
| 37 | | `↑` `↓` puis `Entrée` | Insérer le snippet surligné | |
| 38 | | `←` | Ressortir d'un groupe | |
| 39 | | `Échap` | Refermer tout le menu | |
| 40 | |
| 41 | Le 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é : |
| 42 | |
| 43 | ``` |
| 44 | func f() { |
| 45 | | ← curseur ici |
| 46 | } |
| 47 | ``` |
| 48 | |
| 49 | devient |
| 50 | |
| 51 | ``` |
| 52 | func f() { |
| 53 | if err != nil { |
| 54 | return err |
| 55 | } |
| 56 | } |
| 57 | ``` |
| 58 | |
| 59 | C'est une seule opération d'annulation : `Ctrl-Z` retire tout le snippet. |
| 60 | |
| 61 | ## Garder ses snippets d'un projet à l'autre |
| 62 | |
| 63 | Mettez-les dans `~/.config/turbo-go/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. |
| 64 | |
| 65 | Quand 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. |
| 66 | |
| 67 | ## N'afficher un snippet que là où il a un sens |
| 68 | |
| 69 | Ajoutez `languages`, avec les noms que l'éditeur emploie — `go`, `toml`, `markdown`, `javascript`, `html`, `bash` : |
| 70 | |
| 71 | ```toml |
| 72 | [[snippet]] |
| 73 | name = "strict mode" |
| 74 | group = "Shell" |
| 75 | languages = ["bash"] |
| 76 | body = "set -euo pipefail" |
| 77 | ``` |
| 78 | |
| 79 | Ce 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`. |
| 80 | |
| 81 | Un groupe que le filtrage laisse vide n'apparaît pas du tout. |
| 82 | |
| 83 | ## Variantes |
| 84 | |
| 85 | - **Vous avez lancé l'éditeur depuis un sous-dossier.** Le fichier du projet n'est pas trouvé : seul `./.turbo-go` est consulté, la même règle que `settings.toml`. Vos propres snippets apparaissent quand même. |
| 86 | - **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. |
| 87 | - **Vous voulez des tabulations dans un corps.** Écrivez `\t`, comme le fichier de départ — le TOML le transforme en tabulation à la lecture. |
| 88 | |
| 89 | ## Voir aussi |
| 90 | |
| 91 | - Toutes les clés du fichier et toutes les règles : [Référence des snippets](../reference/snippets.md) |
| 92 | - Pourquoi le menu est reconstruit à chaque ouverture, et pourquoi l'insertion réindente : [Snippets](../explanation/snippets.md) |
| 93 | - L'autre fichier de `.turbo-go` : [Réglages de projet](../reference/project-settings.md) |