# Activer la complétion Python Ce guide montre comment faire fonctionner la complétion, les descriptions de symboles et le saut à la définition. Il suppose que Turbo Python est déjà installé et que vous savez ce qu'est un projet Python. La complétion vient de **pylsp**, le serveur de langage officiel de Python. Turbo Python ne l'embarque pas : l'édition et la coloration fonctionnent sans lui, et seule la complétion est perdue. ## 1. Installer pylsp ```bash pipx component add pylsp ``` ## 2. S'assurer que Turbo Python le trouve Turbo Python cherche d'abord dans le `PATH`, puis dans `$GOBIN`, puis dans `$GOPATH/bin`. `go install` écrit dans le dernier, qui n'est très souvent pas dans le `PATH` — c'est pourquoi cela marche en général sans rien faire de plus. Pour vérifier : ```bash pylsp version ``` Si cette commande répond « introuvable » alors que Turbo Python le trouve quand même, c'est normal et sans conséquence. ## 3. Ouvrir un fichier à l'intérieur d'un module ```bash cd /chemin/vers/votre/module # le répertoire qui contient pyproject.toml turbo-python main.py ``` Turbo Python remonte l'arborescence depuis le fichier à la recherche d'un `pyproject.toml` et démarre pylsp dans le répertoire trouvé. **Hors d'un module, pylsp n'a presque rien à dire** — c'est la raison la plus fréquente pour laquelle la complétion semble ne pas fonctionner. ## 4. Demander une complétion Placez le curseur après un point et appuyez sur **Ctrl-Espace** : ```go fmt. ``` Une liste se déroule sous le curseur. Continuez à taper pour la restreindre, **↑ ↓** pour la parcourir, **Entrée** ou **Tab** pour accepter, **Échap** pour l'abandonner. Taper un `.` demande une complétion tout seul : la plupart du temps, vous n'appuyez sur rien. ## Savoir ce que fait le serveur L'extrémité droite de la barre d'état indique l'état du serveur de langage : `LSP: starting…`, `LSP: ready`, ou la raison pour laquelle il n'y en a pas. `Run ▸ Language server status` affiche la même chose dans une boîte. ## Variantes **Vous ne voulez pas de serveur de langage du tout :** ```bash turbo-python -no-lsp main.py ``` **La complétion est morte dans une fenêtre née sans nom.** Une fenêtre « Untitled » n'a aucun fichier à annoncer à pylsp tant qu'elle n'est pas enregistrée — appuyez sur **F2** et donnez-lui un nom en `.py`, quelque part sous le projet. Dès cette sauvegarde, la complétion, le survol et les marques d'erreur fonctionnent dans cette fenêtre ; inutile de quitter et relancer l'éditeur. **La complétion est vide dans un fichier qui compile.** pylsp a besoin que le paquet du fichier se construise. Vérifiez d'abord `uv sync` — un paquet qui ne compile pas ne donne souvent rien d'utile. **La première complétion sur un gros module est lente.** pylsp charge le graphe du module. La barre d'état affiche `LSP: starting…` jusqu'à ce qu'il soit prêt ; les requêtes faites avant sont refusées plutôt que mises en file. **Une requête met trop de temps.** Chaque requête abandonne au bout de trois secondes : un serveur bloqué ralentit l'éditeur mais ne le fige jamais. La barre d'état signale l'échec. **La liste est vide dans un fichier qui ne compile pas.** pylsp ne répond *rien du tout* — pas d'erreur, une liste vide — pour un paquet qu'il ne peut pas charger. Une déclaration en double ou un import non résolu suffit. L'éditeur indique désormais quel problème fait obstacle : ``` No completions — this file does not compile: main redeclared in this block ``` `Run ▸ Language server status` affiche la même chose, avec le chemin du serveur, la racine du projet et l'information de savoir si ce fichier lui a été annoncé. Corrigez d'abord le paquet — `uv sync` est la vérification la plus rapide. **Ctrl-Espace ne fait rien.** tmux, screen et les terminaux intégrés d'IDE interceptent très souvent `Ctrl-Espace` avant l'éditeur. Tapez plutôt un `.`, qui demande une complétion tout seul, ou passez par `Run ▸ Completion`. ## Ce que le serveur apporte d'autre La complétion est ce qu'il fait de plus bruyant et le moindre de ce qu'il sait. La même connexion répond à huit autres questions, toutes dans le menu **Code** et toutes à propos du symbole sous le curseur — aucune sélection n'est nécessaire. | Touche | Effet | | --- | --- | | **Ctrl-Espace** | Liste de complétion | | **F1** | Décrire le symbole sous le curseur | | **F12** | Sauter là où il est déclaré | | **Shift-F12** | Lister partout où il est utilisé | | **Ctrl-T** | Trouver un symbole par son nom dans tout le projet | Et, sans touche : *Go to type definition*, *Find implementations…*, *Symbol in file…* et *Problems…*. Les problèmes qu'il trouve arrivent sans qu'on demande. La première erreur du fichier que vous éditez apparaît à droite de la barre d'état, précédée de `⚠` ; chaque ligne à problème reçoit une marque dans la gouttière (`×` pour une erreur, `!` pour un avertissement) ; et **Code ▸ Problems…** les liste tous, pour tous les fichiers que le serveur a chargés. [Comment interroger le code](ask-about-code.md) parcourt l'ensemble. ## Voir aussi - Pourquoi le serveur est optionnel : [Coloration et complétion](../explanation/colouring-and-completion.md) - Toutes les touches : [référence du clavier](../reference/keyboard.md)