Référence : snippets
Description neutre des fichiers de snippets, du menu Snippets, et de la façon dont un snippet est inséré.
Fichiers
Les deux sont lus, et les deux sont facultatifs.
| Fichier | Contient |
|---|---|
./.turbo-golo/snippets.toml |
Les snippets du projet |
$TURBO_GOLO_SNIPPET_DIR/snippets.toml, sinon <config utilisateur>/turbo-golo/snippets.toml |
Les vôtres, partagés entre projets |
<config utilisateur> est os.UserConfigDir() : ~/.config sous Linux, ~/Library/Application Support sous macOS. TURBO_GOLO_DIR remplace <config utilisateur>/turbo-golo en entier.
| Propriété | Valeur |
|---|---|
| Recherche du projet | Le répertoire de travail seulement. Les dossiers parents ne sont pas parcourus. |
| Lecture | À chaque ouverture du menu Snippets |
| Ordre | Les vôtres d'abord, puis ceux du projet |
| Conflit de nom | Même group et même name → celui du projet remplace le vôtre |
| Fichier absent | Pas une erreur |
| Fichier illisible | Une erreur, signalée dans le menu |
Format du fichier
Une table [[snippet]] par snippet.
| Clé | Type | Obligatoire | Description |
|---|---|---|---|
name |
chaîne | oui | Ce que le menu affiche |
body |
chaîne | oui | Le texte inséré au curseur |
group |
chaîne | non | Le sous-menu où il va ; absent signifie General |
languages |
tableau de chaînes | non | Restreint le snippet à ces langages ; absent signifie tous les fichiers |
languages emploie les noms de langages de l'éditeur : golo, toml, yaml, markdown, javascript, html, xml, dockerfile, bash. Voir Langages colorés.
Un snippet sans name ou sans body rend tout le fichier erroné — il n'aurait pu être affiché, ou n'aurait rien à insérer.
Exemple
[[snippet]]
name = "function"
group = "Golo"
languages = ["golo"]
body = '''
function name = |a, b| {
return a + b
}'''
Les chaînes multi-lignes du TOML — '''…''' comme """…""" — suppriment le saut de ligne qui suit immédiatement les guillemets d'ouverture. Dans une chaîne basique ("""), \t devient une tabulation et \" un guillemet à la lecture du fichier ; dans une chaîne littérale ('''), rien n'est interprété. Les corps Golo du fichier de départ sont des chaînes littérales, parce qu'une chaîne Golo porte \n et \" et doit arriver intacte dans le fichier.
Le fichier de départ
Create snippets file écrit un fichier commenté contenant :
| Groupe | languages |
Snippets |
|---|---|---|
| Golo | ["golo"] |
module, main, function, closure, struct, union, augment, match, foreach, for, try, comprehension |
| General | aucun | Hello |
| Markdown | ["markdown"] |
Image |
Les corps Golo sont indentés de deux espaces, la convention de tous les exemples de GoloScript ; Golo n'a pas de formateur qui en imposerait une autre.
Le menu
| Entrée | Condition |
|---|---|
| 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 |
Cannot read snippets, grisé |
Un fichier est présent mais illisible |
Create snippets file |
Le projet n'a pas de fichier de snippets |
Open snippets file |
Le projet en a un |
La touche d'accès du menu est Alt-N, pas Alt-S : Search répond déjà au S.
Les groupes, et les snippets à l'intérieur, sortent dans l'ordre de lecture : le menu correspond aux fichiers.
Une 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.
Filtrage
| Fenêtre au premier plan | Snippets proposés |
|---|---|
| Un fichier d'un langage reconnu | Ceux qui nomment ce langage, plus ceux qui n'en nomment aucun |
| Un fichier d'aucun langage reconnu | Ceux qui n'en nomment aucun |
| Un terminal, l'arbre du projet, ou rien | Ceux qui n'en nomment aucun |
Un fichier .golo, ou un fichier sans extension dont la première ligne est un shebang nommant golo, est du langage golo.
Insertion
| Comportement | Détail |
|---|---|
| Position | Au curseur |
| Première ligne | Insérée là où est le curseur |
| Lignes suivantes | Préfixées par l'indentation de la ligne où était le curseur |
| Lignes vides du corps | Laissées vides, non complétées d'espaces |
| Annulation | Une seule opération pour tout le snippet |
| Curseur ensuite | À la fin du texte inséré |
| Signalement | Snippet inserted dans la barre d'état |
L'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à.
Entrées de menu
| Entrée | Menu | Effet |
|---|---|---|
| Create snippets file | Snippets | Écrit .turbo-golo/snippets.toml avec les exemples ci-dessus, puis l'ouvre. Grisée dès que le projet en a un. |
| Open snippets file | Snippets | Ouvre .turbo-golo/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. |
Le fichier est écrit via un fichier temporaire du même dossier, renommé en place : une écriture interrompue laisse le fichier précédent intact.
Erreurs
| Message | Cause |
|---|---|
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 |
Already there: .turbo-golo/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. |
This project has no .turbo-golo/snippets.toml yet. |
Ouvrir dans un projet qui n'en a pas, de même |
Cannot tell which directory this is: … |
Le répertoire de travail n'a pas pu être lu |
Voir aussi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
|