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
|
# Référence : ligne de commande
> Description neutre de la commande `turbo-js`, de ses options et de l'environnement qu'elle lit.
## Synopsis
```
turbo-js [options] [fichier...]
```
Chaque `fichier` est ouvert dans sa propre fenêtre. Un fichier qui n'existe pas encore est ouvert comme un tampon vide associé à ce chemin. Sans aucun fichier, une seule fenêtre vide sans titre est ouverte.
## Options
| Option | Type | Défaut | Description |
| --- | --- | --- | --- |
| `-theme <nom>` | chaîne | celui du projet, sinon `turbo-classic` | Thème de démarrage, l'emportant sur celui du projet. Un nom inconnu retombe sur le thème par défaut sans erreur. |
| `-list-themes` | booléen | `false` | Affiche chaque thème chargeable avec sa description, puis le répertoire de thèmes utilisateur, et quitte. |
| `-no-lsp` | booléen | `false` | Ne démarre pas de serveur de langage. La coloration et l'édition sont inchangées. |
| `-version` | booléen | `false` | Affiche `Turbo JS <version>` sur une ligne, avec le commit et la date de build quand le build les a enregistrés, puis quitte. Voir [le numéro de version](versioning.md). |
| `-h`, `-help` | booléen | `false` | Affiche la liste des options et quitte. |
## Environnement
| Variable | Lue par | Effet |
| --- | --- | --- |
| `TURBO_JS_DIR` | répertoire utilisateur | Remplace `~/.config/turbo-js` : les thèmes sont alors lus dans `$TURBO_JS_DIR/themes`, et vos snippets dans `$TURBO_JS_DIR/snippets.toml`. |
| `TURBO_JS_THEME_DIR` | chargement des thèmes | Répertoire des thèmes utilisateur, à la place de `<répertoire utilisateur>/themes`. |
| `TURBO_JS_SNIPPET_DIR` | chargement des snippets | Répertoire contenant votre `snippets.toml`, à la place du répertoire utilisateur. |
| `PATH` | recherche de `typescript-language-server` | Consulté en premier ; viennent ensuite `$NVM_BIN`, `$NPM_CONFIG_PREFIX/bin` ou `~/.npm-global/bin`, `$PNPM_HOME`, `$VOLTA_HOME/bin` ou `~/.volta/bin`, `/usr/local/bin` et `/opt/homebrew/bin`, même s'ils n'y figurent pas. |
| `NVM_BIN`, `NPM_CONFIG_PREFIX`, `PNPM_HOME`, `VOLTA_HOME` | recherche de `typescript-language-server` | Nomment les répertoires regardés après le `PATH`, quand elles sont définies ; une variable vide n'ajoute rien. |
| `TERM` | tcell | Description de terminal à utiliser. |
| `SHELL` | fenêtres terminal | Le shell qu'ouvre `F8` ; `/bin/sh` si elle est absente. |
## Fichiers
| Chemin | Rôle |
| --- | --- |
| `./.turbo-js/settings.toml` | Les réglages de ce projet, lus au démarrage puis à chaque enregistrement. Voir [réglages de projet](project-settings.md). |
| `./.turbo-js/snippets.toml` | Les snippets de ce projet. Voir [snippets](snippets.md). |
| `./.turbo-js/tools.toml` | Les outils du menu JavaScript. Voir [outils JavaScript](javascript-tools.md). |
| `~/.config/turbo-js/themes/*.toml` | Thèmes utilisateur sous Linux (`os.UserConfigDir`). |
| `~/Library/Application Support/turbo-js/themes/*.toml` | Thèmes utilisateur sous macOS. |
| `~/.config/turbo-js/snippets.toml` | Vos snippets, partagés entre projets. |
| `$TURBO_JS_THEME_DIR/*.toml` | Thèmes utilisateur, quand la variable est définie. |
| `<projet>/package.json` | Trouvé en remontant depuis le fichier ouvert ; son répertoire devient la racine du serveur de langage. |
| `$NVM_BIN/typescript-language-server`, `~/.npm-global/bin/…`, `$PNPM_HOME/…`, `~/.volta/bin/…`, `/usr/local/bin/…`, `/opt/homebrew/bin/…` | Le serveur de langage, quand `typescript-language-server` n'est pas dans le `PATH`. |
Le serveur de langage reçoit comme racine le dossier le plus proche, au niveau du fichier ouvert ou au-dessus, qui contient un `package.json` : c'est le seul fichier marqueur, et dans un monorepo le plus proche l'emporte. Sans `package.json` nulle part, la racine est le répertoire de travail.
## Code de sortie
| Code | Signification |
| --- | --- |
| `0` | L'éditeur s'est terminé normalement, ou une option d'information a été utilisée. |
| `1` | Le terminal n'a pas pu être ouvert ou initialisé. La raison est écrite sur la sortie d'erreur. |
## Cibles make
À exécuter depuis un clone.
| Cible | Ce qu'elle lance |
| --- | --- |
| `make help` | Liste les cibles. C'est la cible par défaut. |
| `make test` | `go test ./...` |
| `make test-verbose` | `go test -v ./...` |
| `make cover` | `go test -cover ./...` |
| `make build` | `go build` estampillé dans `bin/turbo-js`, puis `scripts/check-version.sh` sur le résultat |
| `make version` | Affiche la version que ce clone estampillerait, sans construire |
| `make ldflags` | Affiche les options d'édition de liens d'un build estampillé |
| `make install` | `scripts/install.sh` — compile et installe dans le PATH |
| `make uninstall` | `scripts/install.sh --uninstall` |
| `make run FILE=x.js` | `make build`, puis `./bin/turbo-js x.js` |
| `make fmt` | `go fmt ./...` |
| `make vet` | `go vet ./...` |
| `make check` | `fmt`, puis `vet`, puis `test` |
| `make clean` | Supprime `bin/` |
## Exemples
```bash
turbo-js # une fenêtre vide
turbo-js main.js README.md # deux fenêtres
turbo-js -theme turbo-dark main.js # un autre thème
turbo-js -no-lsp main.js # sans serveur de langage
turbo-js -list-themes # quels thèmes existent
```
## Installateur
`scripts/install.sh`, également accessible via `make install`.
| Option | Description |
| --- | --- |
| `-p`, `--prefix RÉP` | Installer dans `RÉP` au lieu de `$GOBIN` ou `$GOPATH/bin`. |
| `--with-server` | Installer aussi le serveur de langage — `npm install -g typescript-language-server typescript@6` — s'il n'est pas déjà présent ; sa présence est vérifiée en lançant `typescript-language-server --version`. |
| `--uninstall` | Retirer un `turbo-js` installé, puis s'arrêter. |
| `-h`, `--help` | Afficher les options, puis s'arrêter. |
| Code de sortie | Signification |
| --- | --- |
| `0` | Installé, retiré, ou aide affichée. |
| `1` | Go absent ou trop ancien, échec de compilation, destination non accessible en écriture, ou `npm` absent alors que `--with-server` est demandé. Rien n'est installé et une installation existante reste intacte. |
## Erreurs
| Message | Cause |
| --- | --- |
| `turbo-js: opening the terminal: …` | tcell n'a pas pu ouvrir le terminal ; en général `TERM` est absent ou inconnu. |
| `turbo-js: initialising the terminal: …` | Le terminal a été ouvert mais n'a pas pu être mis en mode brut. |
| `Cannot open` (dans une boîte) | Le chemin est un répertoire, ou n'est pas lisible. |
| `Cannot save` (dans une boîte) | Le répertoire n'existe pas, ou n'est pas accessible en écriture. |
| `LSP: no typescript-language-server — npm install -g typescript-language-server typescript@6` (barre d'état) | Le serveur n'a été trouvé ni dans le `PATH` ni dans les répertoires listés plus haut. |
|