# Insérer des snippets depuis un menu 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 Python déjà installé. ## Obtenir un fichier de départ Lancez l'éditeur **depuis le dossier du projet**, puis choisissez **Snippets ▸ Create snippets file** (`Alt-N`, puis `C`). Cela écrit `.turbo-python/snippets.toml`, rempli de quelques exemples travaillés, et l'ouvre — coloré, puisque Turbo Python colore le TOML : ```toml [[snippet]] name = "if err != nil" group = "Python" languages = ["python"] body = """ if err != nil { return err }""" [[snippet]] name = "TODO" body = "TODO: " ``` 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. ## En insérer un 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**. | Touche | Effet | | --- | --- | | `Alt-N`, ou `F10` puis `→` jusqu'à Snippets | Ouvrir le menu | | `↑` `↓` | Parcourir les groupes | | `→`, ou `Entrée` | Ouvrir le groupe surligné | | `↑` `↓` puis `Entrée` | Insérer le snippet surligné | | `←` | Ressortir d'un groupe | | `Échap` | Refermer tout le menu | 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é : ``` func f() { | ← curseur ici } ``` devient ``` func f() { if err != nil { return err } } ``` C'est une seule opération d'annulation : `Ctrl-Z` retire tout le snippet. ## Garder ses snippets d'un projet à l'autre Mettez-les dans `~/.config/turbo-python/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. 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. ## N'afficher un snippet que là où il a un sens Ajoutez `languages`, avec les noms que l'éditeur emploie — `python`, `toml`, `markdown`, `javascript`, `html`, `bash` : ```toml [[snippet]] name = "strict mode" group = "Shell" languages = ["bash"] body = "set -euo pipefail" ``` 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`. Un groupe que le filtrage laisse vide n'apparaît pas du tout. ## Variantes - **Vous avez lancé l'éditeur depuis un sous-dossier.** Le fichier du projet n'est pas trouvé : seul `./.turbo-python` est consulté, la même règle que `settings.toml`. Vos propres snippets apparaissent quand même. - **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. - **Vous voulez des tabulations dans un corps.** Écrivez `\t`, comme le fichier de départ — le TOML le transforme en tabulation à la lecture. ## Voir aussi - Toutes les clés du fichier et toutes les règles : [Référence des snippets](../reference/snippets.md) - Pourquoi le menu est reconstruit à chaque ouverture, et pourquoi l'insertion réindente : [Snippets](../explanation/snippets.md) - L'autre fichier de `.turbo-python` : [Réglages de projet](../reference/project-settings.md)