turbo-editors/turbo-golopublic Fork 0
49c12f54ef399972152fccd592ae27e94977f9b5
Commits
Clone
git clone https://git.rickub.com/turbo-editors/turbo-golo.git
git clone ssh://git@rickub.com/turbo-editors/turbo-golo.git

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

ask-about-code.md · 70 lines · 5.3 KBmarkdown Blame HistoryRaw
📦 Turbo Golo d710c1b k33g yesterday1# Comment interroger le code
2
3Ce guide montre comment suivre un nom dans un fichier Golo : ce que c'est, où il est déclaré, ce que déclare le fichier, et ce qui ne va pas. Il suppose Turbo Golo installé et un serveur de langage en marche — la barre d'état affiche `LSP: ready` quand c'est le cas.
4
5Pour se déplacer dans un fichier — chercher, aller à une ligne, changer de fenêtre — voir plutôt [Comment se déplacer dans un fichier](navigate-code.md).
6
7## Placez le curseur sur un nom
8
9N'importe lequel de ses caractères suffit. Chaque question ci-dessous porte sur la **position du curseur**, pas sur une sélection : il n'y a rien à surligner d'abord.
10
11## Demandez
12
13| Pour trouver | Faites | Raccourci |
14| --- | --- | --- |
15| Ce que c'est | **Code ▸ Describe symbol** | `F1` |
16| Où c'est déclaré | **Code ▸ Go to definition** | `F12` |
17| Où son *type* est déclaré | **Code ▸ Go to type definition** | |
18| Ce qui l'implémente | **Code ▸ Find implementations…** | |
19| Partout où c'est utilisé | **Code ▸ Find references…** | `Shift-F12` |
20
21**Une de ces cinq entrées ne signale rien avec `golo lsp`.** Le serveur — l'interpréteur lui-même, en mode serveur de langage — n'annonce pas `typeDefinition` : **Go to type definition** répond donc qu'il n'y a rien, quelle que soit la qualité du code. Les quatre autres fonctionnent, dans le fichier : **Find references** liste la déclaration et chaque appel, et **Find implementations** répond par la déclaration — Golo n'a pas d'interfaces, une fonction est sa propre implémentation. Les deux recherches de symbole ci-dessous fonctionnent aussi. Voir [coloration et complétion](../explanation/colouring-and-completion.md) pour savoir pourquoi cette seule lacune est écrite plutôt que cachée derrière une entrée de menu grisée.
22
23Ce que le serveur sait est **local au fichier** : la déclaration d'une fonction ou d'une union écrite au premier niveau du fichier devant vous, et les symboles apportés par un `import` d'un module de la bibliothèque standard embarquée — `gololang.Errors`, `gololang.Types`, `gololang.Ui`… Un `import` d'un module à vous, sur le disque, n'est pas résolu.
24
25**Describe symbol** sur une fonction que vous avez déclarée montre sa signature et les commentaires `#` écrits juste au-dessus d'elle : c'est là qu'il faut documenter.
26
27Une seule réponse vous y emmène directement. Plusieurs ouvrent une liste montrant le fichier, sa ligne, et le texte de cette ligne ; déplacez-vous aux flèches, `Entrée` pour y aller, `Échap` pour rester.
28
29## Quand rien ne revient
30
31Trois choses se ressemblent, et la barre d'état les distingue :
32
33| Elle affiche | Signification |
34| --- | --- |
35| `No references found`, ou l'équivalent pour la question posée | Le serveur a répondu, et il n'y en a pas — c'est la réponse permanente des trois questions que `golo lsp` ne sait pas traiter |
36| Autre chose, par exemple `LSP: starting…` | Le serveur n'est pas encore prêt. Attendez un instant et redemandez. |
37| `LSP: off` dans la barre d'état | Aucun serveur ne tourne. Voir [Comment activer la complétion](enable-completion.md). |
38
39La deuxième mérite d'être connue : un serveur qui démarre encore répond rien à toutes les questions, et c'est indiscernable d'une vraie réponse si l'éditeur ne le dit pas.
40
41## Chercher par le nom
42
43- **Code ▸ Symbol in file…** liste ce que déclare le fichier devant vous, indenté, avec la sorte de chaque symbole — un plan que l'on parcourt. Pour du Golo : les fonctions et les unions du premier niveau, les variantes d'une union rangées sous elle.
44- **Code ▸ Symbol in project…** (`Ctrl-T`) demande un nom et cherche dans chaque fichier `.golo` sous la racine du projet, ouvert ou non — fonctions, unions et noms de module de premier niveau. Un nom vide les liste tous.
45
46## Voir ce qui ne va pas
47
48**Code ▸ Problems…** liste tous les problèmes signalés par le serveur, pour **tous les fichiers qu'il a chargés** — le plus souvent davantage que celui que vous éditez. En choisir un vous mène à la ligne.
49
50`golo lsp` publie ses diagnostics à l'ouverture d'un fichier et à chaque modification, sans qu'on lui demande. Ce sont les erreurs de syntaxe de son lexeur et de son analyseur, plus deux vérifications qui lui sont propres : la confusion entre `:` et `.`, et les commentaires à la C — `//` et `/* */` — là où Golo emploie `#` et `----`. Une erreur porte sur une **ligne entière** : le serveur donne un numéro de ligne quand son message en contient un, la ligne 1 sinon, et jamais de colonne.
51
52Les lignes à problème portent une marque dans la gouttière, à côté du numéro de ligne :
53
54| Marque | Signification |
55| --- | --- |
56| `×` | Une erreur |
57| `!` | Un avertissement |
58| `i` | Une information |
59| `·` | Une suggestion |
60
61Une ligne qui a plusieurs problèmes montre le pire d'entre eux.
62
63**Les marques ont besoin des numéros de ligne.** Elles occupent la colonne qui sépare les numéros du texte : masquer la gouttière avec **Options ▸ Line numbers** les masque aussi.
64
65## Voir aussi
66
67- Chaque entrée et sa touche : [Menus](../reference/menus.md)
68- Faire tourner un serveur : [Comment activer la complétion](enable-completion.md)
69- Ce que l'éditeur demande, et pourquoi : [Coloration et complétion](../explanation/colouring-and-completion.md)
70- Ce que `golo lsp` sait et ne sait pas répondre : [Outils Golo](../explanation/golo-tools.md)