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

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

snippets.md · 114 lines · 5.0 KBmarkdown Blame HistoryRaw
📦 Turbo Go 3d7798b k33g 12h ago1# Référence : snippets
2
3> Description neutre des fichiers de snippets, du menu Snippets, et de la façon dont un snippet est inséré.
4
5## Fichiers
6
7Les deux sont lus, et les deux sont facultatifs.
8
9| Fichier | Contient |
10| --- | --- |
11| `./.turbo-go/snippets.toml` | Les snippets du projet |
12| `$TURBO_GO_SNIPPET_DIR/snippets.toml`, sinon `<config utilisateur>/turbo-go/snippets.toml` | Les vôtres, partagés entre projets |
13
14`<config utilisateur>` est `os.UserConfigDir()` : `~/.config` sous Linux, `~/Library/Application Support` sous macOS.
15
16| Propriété | Valeur |
17| --- | --- |
18| Recherche du projet | Le répertoire de travail seulement. Les dossiers parents ne sont **pas** parcourus. |
19| Lecture | À chaque ouverture du menu Snippets |
20| Ordre | Les vôtres d'abord, puis ceux du projet |
21| Conflit de nom | Même `group` **et** même `name` → celui du projet remplace le vôtre |
22| Fichier absent | Pas une erreur |
23| Fichier illisible | Une erreur, signalée dans le menu |
24
25## Format du fichier
26
27Une table `[[snippet]]` par snippet.
28
29| Clé | Type | Obligatoire | Description |
30| --- | --- | --- | --- |
31| `name` | chaîne | oui | Ce que le menu affiche |
32| `body` | chaîne | oui | Le texte inséré au curseur |
33| `group` | chaîne | non | Le sous-menu où il va ; absent signifie `General` |
34| `languages` | tableau de chaînes | non | Restreint le snippet à ces langages ; absent signifie tous les fichiers |
35
36`languages` emploie les noms de langages de l'éditeur : `go`, `toml`, `yaml`, `markdown`, `javascript`, `html`, `xml`, `dockerfile`, `bash`. Voir [Langages colorés](languages.md).
37
38Un snippet sans `name` ou sans `body` rend tout le fichier erroné — il n'aurait pu être affiché, ou n'aurait rien à insérer.
39
40### Exemple
41
42```toml
43[[snippet]]
44name = "if err != nil"
45group = "Go"
46languages = ["go"]
47body = """
48if err != nil {
49 return err
50}"""
51```
52
53Les chaînes `"""` du TOML suppriment le saut de ligne qui suit immédiatement les guillemets d'ouverture, et interprètent `\t` comme une tabulation.
54
55## Le menu
56
57| Entrée | Condition |
58| --- | --- |
59| Un sous-menu par groupe, dans l'ordre d'apparition des groupes dans les fichiers | Un groupe ayant au moins un snippet applicable à la fenêtre au premier plan |
60| `Cannot read snippets`, grisé | Un fichier est présent mais illisible |
61| `Create snippets file` | Le projet n'a pas de fichier d'extraits |
62| `Open snippets file` | Le projet en a un |
63
64La touche d'accès du menu est `Alt-N`, pas `Alt-S` : Search répond déjà au S.
65
66Les groupes, et les snippets à l'intérieur, sortent dans l'ordre de lecture : le menu correspond aux fichiers.
67
68Une entrée de snippet est grisée quand aucun fichier n'est ouvert pour l'y insérer — un terminal ou l'arbre du projet au premier plan compte comme aucun fichier.
69
70### Filtrage
71
72| Fenêtre au premier plan | Snippets proposés |
73| --- | --- |
74| Un fichier d'un langage reconnu | Ceux qui nomment ce langage, plus ceux qui n'en nomment aucun |
75| Un fichier d'aucun langage reconnu | Ceux qui n'en nomment aucun |
76| Un terminal, l'arbre du projet, ou rien | Ceux qui n'en nomment aucun |
77
78## Insertion
79
80| Comportement | Détail |
81| --- | --- |
82| Position | Au curseur |
83| Première ligne | Insérée là où est le curseur |
84| Lignes suivantes | Préfixées par l'indentation de la ligne où était le curseur |
85| Lignes vides du corps | Laissées vides, non complétées d'espaces |
86| Annulation | Une seule opération pour tout le snippet |
87| Curseur ensuite | À la fin du texte inséré |
88| Signalement | `Snippet inserted` dans la barre d'état |
89
90L'indentation copiée est le **préfixe d'espaces de la ligne courante**, tabulations ou espaces telles quelles : un snippet suit donc ce que le fichier emploie déjà.
91
92## Entrées de menu
93
94| Entrée | Menu | Effet |
95| --- | --- | --- |
96| Create snippets file | Snippets | Écrit `.turbo-go/snippets.toml` avec des exemples travaillés, puis l'ouvre. Grisée dès que le projet en a un. |
97| Open snippets file | Snippets | Ouvre `.turbo-go/snippets.toml`. Grisée tant que le projet n'en a pas. Toujours le fichier du projet, jamais le vôtre — c'est celui qu'écrit l'entrée au-dessus. |
98
99Le fichier est écrit via un fichier temporaire du même dossier, renommé en place : une écriture interrompue laisse le fichier précédent intact.
100
101## Erreurs
102
103| Message | Cause |
104| --- | --- |
105| `Cannot read snippets` dans le menu | Un fichier de snippets est présent mais n'est pas du TOML valide, ou contient un snippet sans nom ou sans corps |
106| `Already there: .turbo-go/snippets.toml` | Créer dans un projet qui en a déjà un. Inatteignable depuis le menu, qui grise l'entrée ; reste possible pour un appelant qui n'est pas un menu. |
107| `This project has no .turbo-go/snippets.toml yet.` | Ouvrir dans un projet qui n'en a pas, de même |
108| `Cannot tell which directory this is: …` | Le répertoire de travail n'a pas pu être lu |
109
110## Voir aussi
111
112- [Insérer des snippets depuis un menu](../how-to/use-snippets.md)
113- [Snippets](../explanation/snippets.md)
114- [Clavier](keyboard.md)