turbo-editors/turbo-golopublic Fork 0
v1.0.0
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.

📦 Turbo Golo d710c1b · on v1.0.0 · k33g · 11h ago
ask-about-code.md · 70 lines · 5.3 KBmarkdown
Blame HistoryOpen raw

Comment interroger le code

Ce 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.

Pour se déplacer dans un fichier — chercher, aller à une ligne, changer de fenêtre — voir plutôt Comment se déplacer dans un fichier.

Placez le curseur sur un nom

N'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.

Demandez

Pour trouver Faites Raccourci
Ce que c'est Code ▸ Describe symbol F1
Où c'est déclaré Code ▸ Go to definition F12
Où son type est déclaré Code ▸ Go to type definition
Ce qui l'implémente Code ▸ Find implementations…
Partout où c'est utilisé Code ▸ Find references… Shift-F12

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 pour savoir pourquoi cette seule lacune est écrite plutôt que cachée derrière une entrée de menu grisée.

Ce 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.

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.

Une 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.

Quand rien ne revient

Trois choses se ressemblent, et la barre d'état les distingue :

Elle affiche Signification
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
Autre chose, par exemple LSP: starting… Le serveur n'est pas encore prêt. Attendez un instant et redemandez.
LSP: off dans la barre d'état Aucun serveur ne tourne. Voir Comment activer la complétion.

La 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.

Chercher par le nom

  • 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.
  • 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.

Voir ce qui ne va pas

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.

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.

Les lignes à problème portent une marque dans la gouttière, à côté du numéro de ligne :

Marque Signification
× Une erreur
! Un avertissement
i Une information
· Une suggestion

Une ligne qui a plusieurs problèmes montre le pire d'entre eux.

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.

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
# Comment interroger le code

Ce 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.

Pour 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).

## Placez le curseur sur un nom

N'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.

## Demandez

| Pour trouver | Faites | Raccourci |
| --- | --- | --- |
| Ce que c'est | **Code ▸ Describe symbol** | `F1` |
| Où c'est déclaré | **Code ▸ Go to definition** | `F12` |
| Où son *type* est déclaré | **Code ▸ Go to type definition** | |
| Ce qui l'implémente | **Code ▸ Find implementations…** | |
| Partout où c'est utilisé | **Code ▸ Find references…** | `Shift-F12` |

**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.

Ce 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.

**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.

Une 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.

## Quand rien ne revient

Trois choses se ressemblent, et la barre d'état les distingue :

| Elle affiche | Signification |
| --- | --- |
| `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 |
| Autre chose, par exemple `LSP: starting…` | Le serveur n'est pas encore prêt. Attendez un instant et redemandez. |
| `LSP: off` dans la barre d'état | Aucun serveur ne tourne. Voir [Comment activer la complétion](enable-completion.md). |

La 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.

## Chercher par le nom

- **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.
- **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.

## Voir ce qui ne va pas

**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.

`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.

Les lignes à problème portent une marque dans la gouttière, à côté du numéro de ligne :

| Marque | Signification |
| --- | --- |
| `×` | Une erreur |
| `!` | Un avertissement |
| `i` | Une information |
| `·` | Une suggestion |

Une ligne qui a plusieurs problèmes montre le pire d'entre eux.

**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.

## Voir aussi

- Chaque entrée et sa touche : [Menus](../reference/menus.md)
- Faire tourner un serveur : [Comment activer la complétion](enable-completion.md)
- Ce que l'éditeur demande, et pourquoi : [Coloration et complétion](../explanation/colouring-and-completion.md)
- Ce que `golo lsp` sait et ne sait pas répondre : [Outils Golo](../explanation/golo-tools.md)