Activer la complétion Rust
Ce guide montre comment faire fonctionner la complétion, les descriptions de symboles et le saut à la définition. Il suppose que Turbo Rust est déjà installé et que vous savez ce qu'est une caisse Cargo.
La complétion vient de rust-analyzer, le serveur de langage officiel de Rust. Turbo Rust ne l'embarque pas : l'édition et la coloration fonctionnent sans lui, et seule la complétion est perdue.
1. Installer rust-analyzer
rustup component add rust-analyzer
2. S'assurer que Turbo Rust le trouve
Turbo Rust 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 :
rust-analyzer version
Si cette commande répond « introuvable » alors que Turbo Rust le trouve quand même, c'est normal et sans conséquence.
3. Ouvrir un fichier à l'intérieur d'un module
cd /chemin/vers/votre/module # le répertoire qui contient Cargo.toml
turbo-rust main.rs
Turbo Rust remonte l'arborescence depuis le fichier à la recherche d'un Cargo.toml et démarre rust-analyzer dans le répertoire trouvé. Hors d'un module, rust-analyzer 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 :
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 :
turbo-rust -no-lsp main.rs
La complétion est morte dans une fenêtre née sans nom. Une fenêtre « Untitled » n'a aucun fichier à annoncer à rust-analyzer tant qu'elle n'est pas enregistrée — appuyez sur F2 et donnez-lui un nom en .rs, quelque part sous le crate. 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. rust-analyzer a besoin que le paquet du fichier se construise. Vérifiez d'abord cargo build — un paquet qui ne compile pas ne donne souvent rien d'utile.
La première complétion sur un gros module est lente. rust-analyzer 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. rust-analyzer 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 — cargo build 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 parcourt l'ensemble.
Voir aussi
- Pourquoi le serveur est optionnel : Coloration et complétion
- Toutes les touches : référence du clavier
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 |
|