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

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

📦 Turbo JS 91999d1 · on v1.0.1 · k33g · 11h ago
menus.md · 171 lines · 10.9 KBmarkdown
Blame HistoryOpen raw

Référence : menus

Liste complète des entrées de la barre de menus, avec leurs raccourcis et les conditions dans lesquelles elles peuvent être choisies.

Une entrée marquée fichier requis est grisée quand aucune fenêtre n'est ouverte.

La barre porte toujours File, Edit, Search, Run, Code, Options, Window, Snippets, Agent, JavaScript et Help, dans cet ordre :

 File  Edit  Search  Run  Code  Options  Window  Snippets  Agent  JavaScript  Help

Le fichier d'outils d'un projet peut y ajouter ses propres menus, entre JavaScript et Help ; ils sont décrits sous Menus du projet plus bas.

File

Entrée Raccourci Fichier requis Effet
New F4 Ouvrir une fenêtre vide sans titre
Open… F3 Ouvrir l'explorateur de fichiers et ouvrir ce qui est choisi
Save F2 oui Écrire le fichier ; demande un nom s'il n'en a pas
Save as… oui Demander un nom et écrire dedans, en adoptant ce chemin
Close Ctrl-W oui Fermer la fenêtre courante, en proposant d'enregistrer d'abord
Exit Alt-X Quitter l'éditeur, en proposant d'enregistrer chaque fichier modifié

Edit

Entrée Raccourci Fichier requis Effet
Undo Ctrl-Z oui Annuler la dernière modification
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.
Insert line Ctrl-N oui Ouvrir une ligne vide au-dessus du curseur, en laissant le curseur sur son propre texte
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.
Cut Maj-Suppr oui Copier la sélection dans le presse-papier et la supprimer
Copy Ctrl-Inser oui Copier la sélection dans le presse-papier
Paste Maj-Inser oui Insérer le presse-papier, en remplaçant la sélection
Select all Ctrl-A oui Sélectionner tout le fichier

Le presse-papier est partagé entre toutes les fenêtres d'une même session.

Entrée Raccourci Fichier requis Effet
Find… Ctrl-F oui Demander un texte et des options, puis aller à la première occurrence
Find next F7 oui Aller à l'occurrence suivante, en bouclant en fin de fichier
Find previous Maj-F7 oui Aller à l'occurrence précédente, en bouclant en début de fichier
Go to line… Ctrl-G oui Demander un numéro de ligne, à partir de un

Run

Entrée Raccourci Fichier requis Effet
Completion Ctrl-Espace oui Ouvrir la liste de complétion au curseur
Language server status Indiquer si un serveur de langage tourne, et ce qu'il fait

Code

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.

Sa touche chaude est Alt-C.

Le serveur de Turbo JS est typescript-language-server, une enveloppe autour de tsserver, le moteur de TypeScript, qui sert aussi le JavaScript ordinaire. Il répond aux huit entrées ci-dessous et publie les problèmes de lui-même ; la colonne Avec typescript-language-server dit ce qu'il advient de chacune.

Entrée Raccourci Fichier requis Effet Avec typescript-language-server
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, le commentaire JSDoc écrit juste au-dessus
Go to definition F12 oui Où le symbole est déclaré. Une seule réponse l'ouvre ; plusieurs proposent la liste. Fonctionne
Go to type definition oui Où le type du symbole est déclaré, ce qui est une autre question Fonctionne : const shape = new Circle() mène à la classe Circle
Find implementations… oui Ce qui l'implémente Fonctionne : les sous-classes d'une classe
Find references… Shift-F12 oui Où il est utilisé, sa déclaration comprise Fonctionne : la déclaration et chaque appel
Symbol in file… oui Le plan du fichier, indenté, avec la sorte de chaque symbole. En choisir un y va. Fonctionne : fonctions et classes
Symbol in project… Ctrl-T non Demande un nom et cherche dans tout le projet Fonctionne
Problems… non Tous les problèmes signalés par le serveur, pour tous les fichiers dont il a parlé Fonctionne : les erreurs de syntaxe, sans qu'on les demande ; une erreur de type n'est signalée qu'avec // @ts-check en tête du fichier ou checkJs dans un jsconfig.json

Une liste de lieux montre le fichier, la ligne, et le texte de cette ligne — douze entrées affichant shapes.js: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.

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.

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.

Options

Entrée Fichier requis Effet
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.
Line numbers oui Afficher ou masquer la gouttière dans la fenêtre courante
Create project settings Écrire .turbo-js/settings.toml avec le thème en cours, et l'ouvrir. Grisée dès que le projet en a un.
Project settings… Ouvrir .turbo-js/settings.toml. Grisée tant que le projet n'en a pas.

Window

Entrée Raccourci Fichier requis Effet
Next F6 oui Passer au premier plan la fenêtre située derrière
New terminal F8 non Ouvrir une fenêtre exécutant un shell, dans le dossier du fichier au premier plan
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
Tile oui Disposer toutes les fenêtres en grille, sans recouvrement
Cascade oui Empiler les fenêtres décalées, tous les titres visibles
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.
List… Alt-0 oui Lister les fenêtres ouvertes et passer la choisie au premier plan

Snippets

Construit depuis .turbo-js/snippets.toml et votre propre fichier à chaque ouverture. Sa touche chaude est Alt-N, parce que Search répond déjà au S.

Entrée Fichier requis Effet
Un sous-menu par groupe Insérer le snippet choisi au curseur ; les entrées exigent un fichier ouvert
Create snippets file non Écrire .turbo-js/snippets.toml avec des exemples travaillés, puis l'ouvrir. Grisée dès que le projet en a un.
Open snippets file non Ouvrir .turbo-js/snippets.toml. Grisée tant que le projet n'en a pas. Toujours le fichier du projet, jamais le vôtre.

Voir Snippets.

Agent

Construit depuis .turbo-js/acp.toml et votre propre fichier. Sa touche chaude est Alt-A.

Entrée Effet
Une ligne par agent, par son nom Démarrer cet agent et ouvrir une fenêtre dessus
Create agents file Écrire .turbo-js/acp.toml avec un exemple, puis l'ouvrir. Grisée dès que le projet en a un.
Cancel turn Annuler le tour en cours dans la fenêtre de devant
Agent status Ce qui a été chargé, la ligne de commande de chacun, et ce qui a échoué

Voir Agents et ACP.

JavaScript

Construit depuis .turbo-js/tools.toml à chaque ouverture. Sa touche chaude est Alt-J : les menus fixes prennent F, E, S, R, C, O, W, N, A et H, et la première lettre du langage était libre.

Entrée Effet
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
Create tools file Écrire .turbo-js/tools.toml avec les six commandes Node.js — installer, formater, vérifier, tester, exécuter un script, démarrer — et un exemple de menu à part, puis l'ouvrir. Grisée dès que le projet en a un.
Open tools file Ouvrir .turbo-js/tools.toml. Grisée tant que le projet n'en a pas.

Voir Outils JavaScript.

Non fixes : un menu par nom de menu dans .turbo-js/tools.toml, dans l'ordre où les noms y apparaissent pour la première fois, entre JavaScript et Help. Un projet sans fichier d'outils, ou dont tous les outils restent dans JavaScript, 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.

Entrée Effet
Une ligne par outil nommant ce menu Lancer cette commande, en montrant sa sortie là où l'outil le demande

Leurs touches chaudes 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 JavaScript.

Help

Entrée Effet
Keyboard Afficher les touches à connaître
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.

Barre d'état

Les indices du bas sont cliquables et exécutent les mêmes actions.

Indice Action
F1 Describe Code ▸ Describe symbol
F2 Save File ▸ Save
F3 Open File ▸ Open…
F6 Window Window ▸ Next
F7 Next Search ▸ Find next
F10 Menu Ouvrir la barre de menus
Alt-X Exit File ▸ Exit

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 typescript-language-server tourne, LSP: off quand aucun serveur n'a été demandé, et LSP: no typescript-language-server — npm install -g typescript-language-server typescript@6 quand il n'a pas été trouvé.

  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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
# Référence : menus

> Liste complète des entrées de la barre de menus, avec leurs raccourcis et les conditions dans lesquelles elles peuvent être choisies.

Une entrée marquée **fichier requis** est grisée quand aucune fenêtre n'est ouverte.

La barre porte toujours File, Edit, Search, Run, Code, Options, Window, Snippets, Agent, JavaScript et Help, dans cet ordre :

```
 File  Edit  Search  Run  Code  Options  Window  Snippets  Agent  JavaScript  Help
```

Le fichier d'outils d'un projet peut y ajouter ses propres menus, entre JavaScript et Help ; ils sont décrits sous [Menus du projet](#menus-du-projet) plus bas.

## File

| Entrée | Raccourci | Fichier requis | Effet |
| --- | --- | --- | --- |
| New | `F4` | | Ouvrir une fenêtre vide sans titre |
| Open… | `F3` | | Ouvrir l'explorateur de fichiers et ouvrir ce qui est choisi |
| Save | `F2` | oui | Écrire le fichier ; demande un nom s'il n'en a pas |
| Save as… | | oui | Demander un nom et écrire dedans, en adoptant ce chemin |
| Close | `Ctrl-W` | oui | Fermer la fenêtre courante, en proposant d'enregistrer d'abord |
| Exit | `Alt-X` | | Quitter l'éditeur, en proposant d'enregistrer chaque fichier modifié |

## Edit

| Entrée | Raccourci | Fichier requis | Effet |
| --- | --- | --- | --- |
| Undo | `Ctrl-Z` | oui | Annuler la dernière modification |
| 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. |
| Insert line | `Ctrl-N` | oui | Ouvrir une ligne vide au-dessus du curseur, en laissant le curseur sur son propre texte |
| 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. |
| Cut | `Maj-Suppr` | oui | Copier la sélection dans le presse-papier et la supprimer |
| Copy | `Ctrl-Inser` | oui | Copier la sélection dans le presse-papier |
| Paste | `Maj-Inser` | oui | Insérer le presse-papier, en remplaçant la sélection |
| Select all | `Ctrl-A` | oui | Sélectionner tout le fichier |

Le presse-papier est partagé entre toutes les fenêtres d'une même session.

## Search

| Entrée | Raccourci | Fichier requis | Effet |
| --- | --- | --- | --- |
| Find… | `Ctrl-F` | oui | Demander un texte et des options, puis aller à la première occurrence |
| Find next | `F7` | oui | Aller à l'occurrence suivante, en bouclant en fin de fichier |
| Find previous | `Maj-F7` | oui | Aller à l'occurrence précédente, en bouclant en début de fichier |
| Go to line… | `Ctrl-G` | oui | Demander un numéro de ligne, à partir de un |

## Run

| Entrée | Raccourci | Fichier requis | Effet |
| --- | --- | --- | --- |
| Completion | `Ctrl-Espace` | oui | Ouvrir la liste de complétion au curseur |
| Language server status | | | Indiquer si un serveur de langage tourne, et ce qu'il fait |

## Code

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.

Sa touche chaude est `Alt-C`.

Le serveur de Turbo JS est `typescript-language-server`, une enveloppe autour de tsserver, le moteur de TypeScript, qui sert aussi le JavaScript ordinaire. Il répond aux huit entrées ci-dessous et publie les problèmes de lui-même ; la colonne **Avec `typescript-language-server`** dit ce qu'il advient de chacune.

| Entrée | Raccourci | Fichier requis | Effet | Avec `typescript-language-server` |
| --- | --- | --- | --- | --- |
| 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, le commentaire JSDoc écrit juste au-dessus |
| Go to definition | `F12` | oui | Où le symbole est déclaré. Une seule réponse l'ouvre ; plusieurs proposent la liste. | Fonctionne |
| Go to type definition | | oui | Où le *type* du symbole est déclaré, ce qui est une autre question | Fonctionne : `const shape = new Circle()` mène à la classe `Circle` |
| Find implementations… | | oui | Ce qui l'implémente | Fonctionne : les sous-classes d'une classe |
| Find references… | `Shift-F12` | oui | Où il est utilisé, sa déclaration comprise | Fonctionne : la déclaration et chaque appel |
| Symbol in file… | | oui | Le plan du fichier, indenté, avec la sorte de chaque symbole. En choisir un y va. | Fonctionne : fonctions et classes |
| Symbol in project… | `Ctrl-T` | non | Demande un nom et cherche dans tout le projet | Fonctionne |
| Problems… | | non | Tous les problèmes signalés par le serveur, pour tous les fichiers dont il a parlé | Fonctionne : les erreurs de syntaxe, sans qu'on les demande ; une erreur de type n'est signalée qu'avec `// @ts-check` en tête du fichier ou `checkJs` dans un `jsconfig.json` |

Une liste de lieux montre le fichier, la ligne, et le texte de cette ligne — douze entrées affichant `shapes.js: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.

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.

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

## Options

| Entrée | Fichier requis | Effet |
| --- | --- | --- |
| 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. |
| Line numbers | oui | Afficher ou masquer la gouttière dans la fenêtre courante |
| Create project settings | | Écrire `.turbo-js/settings.toml` avec le thème en cours, et l'ouvrir. **Grisée dès que le projet en a un.** |
| Project settings… | | Ouvrir `.turbo-js/settings.toml`. **Grisée tant que le projet n'en a pas.** |

## Window

| Entrée | Raccourci | Fichier requis | Effet |
| --- | --- | --- | --- |
| Next | `F6` | oui | Passer au premier plan la fenêtre située derrière |
| New terminal | `F8` | non | Ouvrir une fenêtre exécutant un shell, dans le dossier du fichier au premier plan |
| 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 |
| Tile | | oui | Disposer toutes les fenêtres en grille, sans recouvrement |
| Cascade | | oui | Empiler les fenêtres décalées, tous les titres visibles |
| 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. |
| List… | `Alt-0` | oui | Lister les fenêtres ouvertes et passer la choisie au premier plan |

## Snippets

Construit depuis `.turbo-js/snippets.toml` et votre propre fichier à chaque ouverture. Sa touche chaude est `Alt-N`, parce que Search répond déjà au S.

| Entrée | Fichier requis | Effet |
| --- | --- | --- |
| Un sous-menu par groupe | | Insérer le snippet choisi au curseur ; les entrées exigent un fichier ouvert |
| Create snippets file | non | Écrire `.turbo-js/snippets.toml` avec des exemples travaillés, puis l'ouvrir. **Grisée dès que le projet en a un.** |
| Open snippets file | non | Ouvrir `.turbo-js/snippets.toml`. **Grisée tant que le projet n'en a pas.** Toujours le fichier du projet, jamais le vôtre. |

Voir [Snippets](snippets.md).

## Agent

Construit depuis `.turbo-js/acp.toml` et votre propre fichier. Sa touche chaude est `Alt-A`.

| Entrée | Effet |
| --- | --- |
| Une ligne par agent, par son nom | Démarrer cet agent et ouvrir une fenêtre dessus |
| Create agents file | Écrire `.turbo-js/acp.toml` avec un exemple, puis l'ouvrir. **Grisée dès que le projet en a un.** |
| Cancel turn | Annuler le tour en cours dans la fenêtre de devant |
| Agent status | Ce qui a été chargé, la ligne de commande de chacun, et ce qui a échoué |

Voir [Agents et ACP](acp.md).

## JavaScript

Construit depuis `.turbo-js/tools.toml` à chaque ouverture. Sa touche chaude est `Alt-J` : les menus fixes prennent F, E, S, R, C, O, W, N, A et H, et la première lettre du langage était libre.

| Entrée | Effet |
| --- | --- |
| 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 |
| Create tools file | Écrire `.turbo-js/tools.toml` avec les six commandes Node.js — installer, formater, vérifier, tester, exécuter un script, démarrer — et un exemple de menu à part, puis l'ouvrir. **Grisée dès que le projet en a un.** |
| Open tools file | Ouvrir `.turbo-js/tools.toml`. **Grisée tant que le projet n'en a pas.** |

Voir [Outils JavaScript](javascript-tools.md).

## Menus du projet

Non fixes : un menu par nom de `menu` dans `.turbo-js/tools.toml`, dans l'ordre où les noms y apparaissent pour la première fois, entre JavaScript et Help. Un projet sans fichier d'outils, ou dont tous les outils restent dans JavaScript, 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.

| Entrée | Effet |
| --- | --- |
| Une ligne par outil nommant ce menu | Lancer cette commande, en montrant sa sortie là où l'outil le demande |

Leurs touches chaudes 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 JavaScript](javascript-tools.md#touches-daccès).

## Help

| Entrée | Effet |
| --- | --- |
| Keyboard | Afficher les touches à connaître |
| 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). |

## Barre d'état

Les indices du bas sont cliquables et exécutent les mêmes actions.

| Indice | Action |
| --- | --- |
| `F1 Describe` | Code ▸ Describe symbol |
| `F2 Save` | File ▸ Save |
| `F3 Open` | File ▸ Open… |
| `F6 Window` | Window ▸ Next |
| `F7 Next` | Search ▸ Find next |
| `F10 Menu` | Ouvrir la barre de menus |
| `Alt-X Exit` | File ▸ Exit |

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 `typescript-language-server` tourne, `LSP: off` quand aucun serveur n'a été demandé, et `LSP: no typescript-language-server — npm install -g typescript-language-server typescript@6` quand il n'a pas été trouvé.