| 📦 Turbo Python 6fc62ea k33g 10h ago | 1 | # Tutoriel : votre premier fichier dans Turbo Python |
| 2 | |
| 3 | À la fin de ce tutoriel, vous aurez compilé l'éditeur, écrit un petit programme Python dedans, vu les mots-clés changer de couleur à la frappe, enregistré le fichier et exécuté le résultat. Comptez une dizaine de minutes. |
| 4 | |
| 5 | Aucune connaissance préalable de Turbo Python n'est nécessaire. Il vous faut Go 1.26 ou plus récent pour compiler l'éditeur, et [uv](https://docs.astral.sh/uv/) pour créer et lancer le projet Python. |
| 6 | |
| 7 | ## Prérequis |
| 8 | |
| 9 | Vérifiez que Go est là — l'éditeur est écrit en Go, même si c'est un éditeur pour Python : |
| 10 | |
| 11 | ```bash |
| 12 | go version |
| 13 | ``` |
| 14 | |
| 15 | Vous devriez voir quelque chose comme : |
| 16 | |
| 17 | ``` |
| 18 | go version go1.26.5 linux/arm64 |
| 19 | ``` |
| 20 | |
| 21 | Si la commande échoue, installez d'abord Go : https://go.dev/dl/ |
| 22 | |
| 23 | Vérifiez qu'uv est là aussi : |
| 24 | |
| 25 | ```bash |
| 26 | uv --version |
| 27 | ``` |
| 28 | |
| 29 | Vous devriez voir quelque chose comme : |
| 30 | |
| 31 | ``` |
| 32 | uv 0.9.26 |
| 33 | ``` |
| 34 | |
| 35 | Si la commande échoue, installez d'abord uv : https://docs.astral.sh/uv/getting-started/installation/ |
| 36 | |
| 37 | ## Étape 1 — Compiler l'éditeur |
| 38 | |
| 39 | Depuis le dossier du projet, tapez : |
| 40 | |
| 41 | ```bash |
| 42 | make build |
| 43 | ``` |
| 44 | |
| 45 | Vous devriez voir une ligne `go build`, puis une ligne qui nomme la version que le binaire annonce. Cette dernière ligne est une vérification, pas une décoration : elle exécute le binaire qui vient d'être lié et refuse une compilation dont l'estampille de version ne lui est jamais parvenue. |
| 46 | |
| 47 | Nous avons maintenant un exécutable dans `bin/turbo-python`. Retenez où il est, pour pouvoir le lancer de n'importe où : |
| 48 | |
| 49 | ```bash |
| 50 | export TURBO="$PWD/bin/turbo-python" |
| 51 | ``` |
| 52 | |
| 53 | ## Étape 2 — Se faire un endroit où travailler |
| 54 | |
| 55 | Turbo Python est à son meilleur à l'intérieur d'un projet, alors créons-en un : |
| 56 | |
| 57 | ```bash |
| 58 | cd /tmp && uv init hello && cd hello |
| 59 | ``` |
| 60 | |
| 61 | Vous devriez voir : |
| 62 | |
| 63 | ``` |
| 64 | Initialized project `hello` at `/tmp/hello` |
| 65 | ``` |
| 66 | |
| 67 | `uv init` écrit un `pyproject.toml`, un `README.md`, un `.python-version` et un `main.py` contenant un hello-world. C'est `pyproject.toml` que Turbo Python cherche pour trouver la racine d'un projet, et c'est là que `pylsp` sera lancé. Nous allons remplacer le contenu de `main.py` par le nôtre. |
| 68 | |
| 69 | ## Étape 3 — Ouvrir l'éditeur |
| 70 | |
| 71 | Lancez Turbo Python sur le fichier qu'uv a écrit : |
| 72 | |
| 73 | ```bash |
| 74 | $TURBO main.py |
| 75 | ``` |
| 76 | |
| 77 | L'écran se remplit d'un bureau bleu. Vous devriez voir : |
| 78 | |
| 79 | - une **barre de menus** en haut : `File Edit Search Run Code Options Window Snippets Python Help` |
| 80 | - une **fenêtre** encadrée d'un double trait, intitulée `main.py` |
| 81 | - une **barre d'état** en bas : `F1 Describe F2 Save F3 Open …` |
| 82 | |
| 83 | Le curseur clignote en ligne 1, colonne 1 — la barre d'état affiche `1:1` à droite. |
| 84 | |
| 85 | À côté, la barre d'état dit l'une de deux choses. `LSP: ready` signifie que le serveur de langage a été trouvé et démarré. `LSP: no pylsp — pipx install "python-lsp-server[all]"` signifie qu'il ne l'a pas été, et nomme l'unique commande qui l'installe. Dans les deux cas la suite de ce tutoriel fonctionne ; le [guide de la complétion](../how-to/enable-completion.md) est là pour transformer le second message en premier. |
| 86 | |
| 87 | Nous sommes dans l'éditeur. |
| 88 | |
| 89 | ## Étape 4 — Vider le fichier et taper un programme Python |
| 90 | |
| 91 | Appuyez sur **Ctrl-A** pour tout sélectionner, puis sur **Suppr** pour effacer. La fenêtre est vide et son titre indique `main.py *` — l'étoile signale des modifications non enregistrées. |
| 92 | |
| 93 | Tapez cette ligne, puis **Entrée** : |
| 94 | |
| 95 | ```python |
| 96 | def greet(name): |
| 97 | ``` |
| 98 | |
| 99 | Regardez les couleurs pendant que vous tapez. `def` passe en **blanc gras** dès que le mot se termine : c'est un mot-clé. `greet` passe en **jaune gras** dès que vous tapez la `(` qui suit, parce que c'est ce qui en fait une fonction. `name` reste en **jaune** simple : c'est un identifiant ordinaire. |
| 100 | |
| 101 | (Ce sont les couleurs de Turbo Classic, celles avec lesquelles l'éditeur démarre. L'étape 8 en change.) |
| 102 | |
| 103 | Tapez maintenant quatre espaces vous-même, puis la ligne suivante : |
| 104 | |
| 105 | ```python |
| 106 | message = f"Hello from {name}!" |
| 107 | ``` |
| 108 | |
| 109 | **Entrée recopie l'indentation de la ligne courante ; elle n'ajoute pas de niveau après un deux-points.** Les blocs de Python sont faits d'indentation, et l'éditeur ne cherche pas à deviner où un nouveau bloc commence — les quatre espaces sont donc à taper une fois, et toutes les lignes suivantes les gardent gratuitement. |
| 110 | |
| 111 | `f"Hello from {name}!"` passe en **vert**, en entier, `{name}` compris. C'est une seule chaîne : ce qui est entre les accolades est du Python, mais ce n'est pas coloré comme du Python, parce que décider où une expression s'arrête à l'intérieur d'un littéral demande un analyseur syntaxique et qu'ici il n'y a qu'un scanner. Ce compromis est écrit noir sur blanc dans [Coloration et complétion](../explanation/colouring-and-completion.md). |
| 112 | |
| 113 | Appuyez sur **Entrée** — le curseur se pose sous le `m`, déjà indenté — et tapez : |
| 114 | |
| 115 | ```python |
| 116 | print(message) |
| 117 | ``` |
| 118 | |
| 119 | `print` passe en **cyan gras** : c'est l'une des primitives que le langage fournit, et non un nom venu de votre code. |
| 120 | |
| 121 | Appuyez sur **Entrée**, puis sur **Maj-Tab** pour reprendre l'indentation, et tapez la dernière ligne : |
| 122 | |
| 123 | ```python |
| 124 | greet("Turbo Python") |
| 125 | ``` |
| 126 | |
| 127 | Nous venons d'écrire un programme Python complet, coloré par l'éditeur au fil de la frappe. |
| 128 | |
| 129 | Si la barre d'état affichait `LSP: ready` tout à l'heure, regardez le bord gauche de la dernière ligne : il y a un `!` dans la gouttière. Le serveur de langage a un avis sur notre fichier, et **Code ▸ Problems…** dit lequel — `warning main.py:4 E305 expected 2 blank lines after class or function definition`. C'est une règle de style et non une erreur, et la laisser ne coûte rien ; ce qui compte est que la marque et le message soient là, et qu'ils arrivent sans que personne ne les demande. |
| 130 | |
| 131 | ## Étape 5 — Enregistrer |
| 132 | |
| 133 | Appuyez sur **F2**. |
| 134 | |
| 135 | L'étoile disparaît du titre, et la barre d'état affiche, un instant : |
| 136 | |
| 137 | ``` |
| 138 | Saved main.py |
| 139 | ``` |
| 140 | |
| 141 | Elle revient ensuite aux rappels de touches — le message est une confirmation, pas un état. L'état, c'est le titre sans son étoile. |
| 142 | |
| 143 | ## Étape 6 — Regarder le fichier de l'extérieur |
| 144 | |
| 145 | Quittez l'éditeur avec **Alt-X**. Le terminal revient tel qu'il était. |
| 146 | |
| 147 | Vérifiez ce que nous avons écrit : |
| 148 | |
| 149 | ```bash |
| 150 | cat main.py |
| 151 | ``` |
| 152 | |
| 153 | Vous devriez voir : |
| 154 | |
| 155 | ```python |
| 156 | def greet(name): |
| 157 | message = f"Hello from {name}!" |
| 158 | print(message) |
| 159 | greet("Turbo Python") |
| 160 | ``` |
| 161 | |
| 162 | ## Étape 7 — L'exécuter |
| 163 | |
| 164 | ```bash |
| 165 | uv run main.py |
| 166 | ``` |
| 167 | |
| 168 | Le premier lancement fabrique l'environnement, vous verrez donc une ligne ou deux d'uv avant la sortie : |
| 169 | |
| 170 | ``` |
| 171 | Using CPython 3.14.4 interpreter at: /usr/bin/python3.14 |
| 172 | Creating virtual environment at: .venv |
| 173 | Hello from Turbo Python! |
| 174 | ``` |
| 175 | |
| 176 | C'est un programme Python qui marche, écrit entièrement dans l'éditeur. |
| 177 | |
| 178 | ## Étape 8 — Changer de thème |
| 179 | |
| 180 | Rouvrez le fichier : |
| 181 | |
| 182 | ```bash |
| 183 | $TURBO main.py |
| 184 | ``` |
| 185 | |
| 186 | Appuyez sur **F10**. Le menu `File` s'ouvre. Appuyez cinq fois sur **→** : le menu longe la barre jusqu'à `Options`, dont la première entrée, `Theme…`, est surlignée. Appuyez sur **Entrée**. |
| 187 | |
| 188 | Une liste de onze apparaît, par ordre alphabétique, le thème courant déjà surligné : |
| 189 | |
| 190 | ``` |
| 191 | borland-light |
| 192 | cappuccino |
| 193 | catppuccin-frappe |
| 194 | catppuccin-latte |
| 195 | cobalt |
| 196 | darcula |
| 197 | intellij-light |
| 198 | monochrome-dark |
| 199 | monochrome-light |
| 200 | turbo-classic |
| 201 | turbo-dark |
| 202 | ``` |
| 203 | |
| 204 | `turbo-classic` est la ligne surlignée, parce que c'est le thème dans lequel vous êtes. Appuyez une fois sur **↓** pour aller à `turbo-dark`, puis sur **Entrée**. |
| 205 | |
| 206 | Tout l'éditeur se repeint en gris sombre, et la barre d'état affiche `Theme: Turbo Dark`. |
| 207 | |
| 208 | Appuyez sur **Alt-X** pour sortir. |
| 209 | |
| 210 | ## Et maintenant ? |
| 211 | |
| 212 | Vous avez compilé l'éditeur, écrit un programme Python dedans, l'avez enregistré, exécuté, et vous avez changé son apparence. |
| 213 | |
| 214 | - Pour faire des choses précises — activer la complétion, écrire votre propre thème, chercher dans un fichier → voir les [guides pratiques](../how-to/) |
| 215 | - Pour retrouver une touche ou une entrée de menu → voir la [référence](../reference/) |
| 216 | - Pour comprendre comment la coloration et la complétion fonctionnent vraiment → voir les [explications](../explanation/) |