| 📦 Turbo Golo d710c1b k33g 21h ago | 1 | # Référence : menus |
| 2 | |
| 3 | > Liste complète des entrées de la barre de menus, avec leurs raccourcis et les conditions dans lesquelles elles peuvent être choisies. |
| 4 | |
| 5 | Une entrée marquée **fichier requis** est grisée quand aucune fenêtre n'est ouverte. |
| 6 | |
| 7 | La barre porte toujours File, Edit, Search, Run, Code, Options, Window, Snippets, Golo et Help, dans cet ordre : |
| 8 | |
| 9 | ``` |
| 10 | File Edit Search Run Code Options Window Snippets Golo Help |
| 11 | ``` |
| 12 | |
| 13 | Le fichier d'outils d'un projet peut y ajouter ses propres menus, entre Golo et Help ; ils sont décrits sous [Menus du projet](#menus-du-projet) plus bas. |
| 14 | |
| 15 | ## File |
| 16 | |
| 17 | | Entrée | Raccourci | Fichier requis | Effet | |
| 18 | | --- | --- | --- | --- | |
| 19 | | New | `F4` | | Ouvrir une fenêtre vide sans titre | |
| 20 | | Open… | `F3` | | Ouvrir l'explorateur de fichiers et ouvrir ce qui est choisi | |
| 21 | | Save | `F2` | oui | Écrire le fichier ; demande un nom s'il n'en a pas | |
| 22 | | Save as… | | oui | Demander un nom et écrire dedans, en adoptant ce chemin | |
| 23 | | Close | `Ctrl-W` | oui | Fermer la fenêtre courante, en proposant d'enregistrer d'abord | |
| 24 | | Exit | `Alt-X` | | Quitter l'éditeur, en proposant d'enregistrer chaque fichier modifié | |
| 25 | |
| 26 | ## Edit |
| 27 | |
| 28 | | Entrée | Raccourci | Fichier requis | Effet | |
| 29 | | --- | --- | --- | --- | |
| 30 | | Undo | `Ctrl-Z` | oui | Annuler la dernière modification | |
| 31 | | Redo | `Ctrl-R` | oui | Rétablir la dernière modification annulée. **`Ctrl-Y` le faisait avant** ; il supprime désormais une ligne, comme dans Turbo C. | |
| 32 | | Insert line | `Ctrl-N` | oui | Ouvrir une ligne vide au-dessus du curseur, en laissant le curseur sur son propre texte | |
| 33 | | Delete line | `Ctrl-Y` | oui | Supprimer la ligne où est le curseur. Le curseur reste au même numéro de ligne : maintenir la touche en supprime une série. | |
| 34 | | Cut | `Maj-Suppr` | oui | Copier la sélection dans le presse-papier et la supprimer | |
| 35 | | Copy | `Ctrl-Inser` | oui | Copier la sélection dans le presse-papier | |
| 36 | | Paste | `Maj-Inser` | oui | Insérer le presse-papier, en remplaçant la sélection | |
| 37 | | Select all | `Ctrl-A` | oui | Sélectionner tout le fichier | |
| 38 | |
| 39 | Le presse-papier est partagé entre toutes les fenêtres d'une même session. |
| 40 | |
| 41 | ## Search |
| 42 | |
| 43 | | Entrée | Raccourci | Fichier requis | Effet | |
| 44 | | --- | --- | --- | --- | |
| 45 | | Find… | `Ctrl-F` | oui | Demander un texte et des options, puis aller à la première occurrence | |
| 46 | | Find next | `F7` | oui | Aller à l'occurrence suivante, en bouclant en fin de fichier | |
| 47 | | Find previous | `Maj-F7` | oui | Aller à l'occurrence précédente, en bouclant en début de fichier | |
| 48 | | Go to line… | `Ctrl-G` | oui | Demander un numéro de ligne, à partir de un | |
| 49 | |
| 50 | ## Run |
| 51 | |
| 52 | | Entrée | Raccourci | Fichier requis | Effet | |
| 53 | | --- | --- | --- | --- | |
| 54 | | Completion | `Ctrl-Espace` | oui | Ouvrir la liste de complétion au curseur | |
| 55 | | Language server status | | | Indiquer si un serveur de langage tourne, et ce qu'il fait | |
| 56 | |
| 57 | ## Code |
| 58 | |
| 59 | Tout ce que l'éditeur demande au serveur de langage à propos du symbole **sous le curseur**. Rien ici n'exige de sélection : presque toutes les requêtes du protocole prennent une position et non une plage, il n'y a donc rien de plus à dire en sélectionnant d'abord. |
| 60 | |
| 61 | Sa touche d'accès est `Alt-C`. |
| 62 | |
| 63 | Le serveur de Turbo Golo est `golo lsp`, l'interpréteur lui-même. Il répond à sept des huit entrées ci-dessous et publie les problèmes de lui-même ; la colonne **Avec `golo lsp`** dit ce qu'il advient de chacune. |
| 64 | |
| 65 | | Entrée | Raccourci | Fichier requis | Effet | Avec `golo lsp` | |
| 66 | | --- | --- | --- | --- | --- | |
| 67 | | Describe symbol | `F1` | oui | Montre ce que le serveur de langage sait du symbole sous le curseur | Fonctionne : signature et documentation ; pour une fonction du fichier, les commentaires `#` écrits juste au-dessus | |
| 68 | | Go to definition | `F12` | oui | Où le symbole est déclaré. Une seule réponse l'ouvre ; plusieurs proposent la liste. | Fonctionne, dans le fichier : fonctions et unions du premier niveau | |
| 69 | | Go to type definition | | oui | Où le *type* du symbole est déclaré, ce qui est une autre question | Répond qu'il n'y a rien : le serveur n'annonce pas `typeDefinition` | |
| 70 | | Find implementations… | | oui | Ce qui l'implémente | Répond par la déclaration de la fonction, là où va Go to definition : Golo n'a pas d'interfaces, une fonction est sa propre implémentation | |
| 71 | | Find references… | `Shift-F12` | oui | Où il est utilisé, sa déclaration comprise | Fonctionne, dans le fichier : la déclaration et chaque appel | |
| 72 | | Symbol in file… | | oui | Le plan du fichier, indenté, avec la sorte de chaque symbole. En choisir un y va. | Fonctionne : fonctions et unions du premier niveau, les variantes sous leur union | |
| 73 | | Symbol in project… | `Ctrl-T` | non | Demande un nom et cherche dans tout le projet | Fonctionne : fonctions, unions et noms de module de premier niveau de chaque fichier `.golo` sous la racine du projet, ouvert ou non ; un nom vide les liste tous | |
| 74 | | Problems… | | non | Tous les problèmes signalés par le serveur, pour tous les fichiers dont il a parlé | Fonctionne : erreurs de syntaxe, confusion `:`/`.`, commentaires à la C ; une ligne entière à la fois | |
| 75 | |
| 76 | Une liste de lieux montre le fichier, la ligne, et le texte de cette ligne — douze entrées affichant `shapes.golo:42` ne disent rien de celle qu'on veut. Le texte vient d'une fenêtre ouverte quand il y en a une : un fichier modifié et non enregistré est donc listé tel qu'il se lit maintenant. |
| 77 | |
| 78 | Trois réponses sont distinguées, et la différence compte : **rien trouvé** le dit avec les mots de la question (`No references found`), **le serveur n'est pas prêt** montre ce qu'il est en train de faire, et **une seule réponse** vous y emmène sans dialogue. |
| 79 | |
| 80 | *Symbol in file* n'a pas de raccourci, à dessein. Le raccourci évident serait `Ctrl-Shift-O`, et un terminal ne sait pas le distinguer de `Ctrl-O` — la touche Maj est perdue avant que l'éditeur ne la voie. |
| 81 | |
| 82 | ## Options |
| 83 | |
| 84 | | Entrée | Fichier requis | Effet | |
| 85 | | --- | --- | --- | |
| 86 | | Theme… | | Lister tous les thèmes chargeables et appliquer immédiatement celui choisi. Si un fichier de réglages de projet existe, y écrit aussi le choix. | |
| 87 | | Line numbers | oui | Afficher ou masquer la gouttière dans la fenêtre courante | |
| 88 | | Create project settings | | Écrire `.turbo-golo/settings.toml` avec le thème en cours, et l'ouvrir. **Grisée dès que le projet en a un.** | |
| 89 | | Project settings… | | Ouvrir `.turbo-golo/settings.toml`. **Grisée tant que le projet n'en a pas.** | |
| 90 | |
| 91 | ## Window |
| 92 | |
| 93 | | Entrée | Raccourci | Fichier requis | Effet | |
| 94 | | --- | --- | --- | --- | |
| 95 | | Next | `F6` | oui | Passer au premier plan la fenêtre située derrière | |
| 96 | | New terminal | `F8` | non | Ouvrir une fenêtre exécutant un shell, dans le dossier du fichier au premier plan | |
| 97 | | Project tree | `F9` | non | Ouvrir une fenêtre montrant les fichiers du projet ; ramène l'existante au premier plan s'il y en a une | |
| 98 | | Tile | | oui | Disposer toutes les fenêtres en grille, sans recouvrement | |
| 99 | | Cascade | | oui | Empiler les fenêtres décalées, tous les titres visibles | |
| 100 | | Maximise | | oui | Donner tout le bureau à la fenêtre courante, ou la remettre où elle était si elle l'a déjà. Le même bascule que la case `[■]` sur le cadre de la fenêtre. | |
| 101 | | List… | `Alt-0` | oui | Lister les fenêtres ouvertes et passer la choisie au premier plan | |
| 102 | |
| 103 | ## Snippets |
| 104 | |
| 105 | Construit depuis `.turbo-golo/snippets.toml` et votre propre fichier à chaque ouverture. Sa touche d'accès est `Alt-N`, parce que Search répond déjà au S. |
| 106 | |
| 107 | | Entrée | Fichier requis | Effet | |
| 108 | | --- | --- | --- | |
| 109 | | Un sous-menu par groupe | | Insérer le snippet choisi au curseur ; les entrées exigent un fichier ouvert | |
| 110 | | Create snippets file | non | Écrire `.turbo-golo/snippets.toml` avec des exemples travaillés, puis l'ouvrir. **Grisée dès que le projet en a un.** | |
| 111 | | Open snippets file | non | Ouvrir `.turbo-golo/snippets.toml`. **Grisée tant que le projet n'en a pas.** Toujours le fichier du projet, jamais le vôtre. | |
| 112 | |
| 113 | Voir [Snippets](snippets.md). |
| 114 | |
| 115 | ## Golo |
| 116 | |
| 117 | Construit depuis `.turbo-golo/tools.toml` à chaque ouverture. Sa touche d'accès est `Alt-G` : les menus fixes prennent F, E, S, R, C, O, W, N et H, et la première lettre du langage était libre. |
| 118 | |
| 119 | | Entrée | Effet | |
| 120 | | --- | --- | |
| 121 | | Une ligne par outil ne nommant aucun `menu` | Lancer cette commande, en montrant sa sortie là où l'outil le demande : une popup, une fenêtre terminal, ou une fenêtre d'édition | |
| 122 | | Create tools file | Écrire `.turbo-golo/tools.toml` avec les huit commandes GoloScript — exécuter, tester, déboguer, le REPL, un nouveau script, une compilation native et une en WebAssembly — et un exemple de menu à part, puis l'ouvrir. **Grisée dès que le projet en a un.** | |
| 123 | | Open tools file | Ouvrir `.turbo-golo/tools.toml`. **Grisée tant que le projet n'en a pas.** | |
| 124 | |
| 125 | Voir [Outils Golo](golo-tools.md). |
| 126 | |
| 127 | ## Menus du projet |
| 128 | |
| 129 | Non fixes : un menu par nom de `menu` dans `.turbo-golo/tools.toml`, dans l'ordre où les noms y apparaissent pour la première fois, entre Golo et Help. Un projet sans fichier d'outils, ou dont tous les outils restent dans Golo, n'en a aucun. Le fichier de départ en crée un, **Tools**, qui contient un seul `echo` : c'est l'exemple du mécanisme. |
| 130 | |
| 131 | | Entrée | Effet | |
| 132 | | --- | --- | |
| 133 | | Une ligne par outil nommant ce menu | Lancer cette commande, en montrant sa sortie là où l'outil le demande | |
| 134 | |
| 135 | Leurs touches d'accès sont attribuées et non fixées, pour qu'un nom venu d'un fichier ne puisse jamais prendre une lettre à laquelle un des menus ci-dessus répond déjà. Les règles sont dans [Outils Golo](golo-tools.md#touches-daccès). |
| 136 | |
| 137 | ## Help |
| 138 | |
| 139 | | Entrée | Effet | |
| 140 | | --- | --- | |
| 141 | | Keyboard | Afficher les touches à connaître | |
| 142 | | About | Afficher la version, le commit et la date de build quand le build les a enregistrés, et le thème courant. Voir [le numéro de version](versioning.md). | |
| 143 | |
| 144 | ## Barre d'état |
| 145 | |
| 146 | Les indices du bas sont cliquables et exécutent les mêmes actions. |
| 147 | |
| 148 | | Indice | Action | |
| 149 | | --- | --- | |
| 150 | | `F1 Describe` | Code ▸ Describe symbol | |
| 151 | | `F2 Save` | File ▸ Save | |
| 152 | | `F3 Open` | File ▸ Open… | |
| 153 | | `F6 Window` | Window ▸ Next | |
| 154 | | `F7 Next` | Search ▸ Find next | |
| 155 | | `F10 Menu` | Ouvrir la barre de menus | |
| 156 | | `Alt-X Exit` | File ▸ Exit | |
| 157 | |
| 158 | L'extrémité droite affiche, dans cet ordre : le curseur sous la forme `ligne:colonne`, puis soit la première erreur signalée par le serveur de langage pour ce fichier (précédée de `⚠`), soit l'état du serveur de langage — `LSP: ready` quand `golo lsp` tourne, `LSP: off` quand aucun serveur n'a été demandé, et `LSP: no golo — see https://codeberg.org/TypeUnsafe/golo-script/releases` quand il n'a pas été trouvé. |