Configuration des éditeurs

Quelques informations sur la configuration des éditeurs.

Pour commencer tous les éditeurs de texte vont nécessiter des outils externes :

Tous ces outils sont installés à l’Ensimag mais ce n’est peut être pas le cas sur votre machine perso. Vérifiez donc qu’ils sont bien installés. Si ce n’est pas le cas, vous avez deux options :

Le plus simple est de tout installer à l’aide de rustup. Pour installer rustup, rustc, cargo vous pouvez suivre les indications sur cette page. Vous pourrez ensuite installer clippy, rustfmt, rust-analyzer à l’aide de la commande :

rustup component add rustfmt rust-analyzer clippy

Neovim

Configurer vim ou neovim est une tâche particulièrement délicate. Il y a une montagne de plugins et l’écosystème est en constante évolution. Plutôt que de réaliser une configuration manuelle je propose d’utiliser une distribution de paquets préconfigurés : lazyvim.

Il s’agit de ce que j’utilise en amphi et dans les vidéos du cours en ligne. Tout fonctionne avec peu d’efforts même si ça prend pas mal de place sur le disque.

La configuration se fait en quatre étapes (voir le guide d’installation ou la vidéo).

On commence par nettoyer les fichiers existants.

rm -rf ~/.config/nvim
rm -rf ~/.local/share/nvim
rm -rf ~/.local/state/nvim
rm -rf ~/.cache/nvim

Puis on clone lazyvim :

git clone https://github.com/LazyVim/starter ~/.config/nvim

On ajoute ensuite le support de rust et d’autres langages en modifiant le fichier ~/.config/nvim/lua/config/lazy.lua

Le plus simple est de simplement le remplacer par celui-ci. (Note: il faut juste ajouter l’import du plugin rust dans la spec : { import = “lazyvim.plugins.extras.lang.rust” },)

Enfin, on lance neovim et on attend un peu que tous les plugins s’installent.

Emacs

Bon, je ne suis pas un expert en emacs.

Comme pour neovim j’utilise une configuration “clef en main” : spacemacs.

On commence par cloner la config comme indiqué sur leur page :

git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d

Je lance ensuite emacs. Il me demande mon style d’éditeur favoris. Je choisis “emacs” (enfin je suppose que vous êtes là pour ça). Puis je sélectionne la distribution standard.

Il se connecte à melpa pour télécharger ses plugins.

Je ferme emacs puis le relance sur un fichier Rust. Il me demande si je veux installer les paquets liés à Rust et je réponds oui. J’ai quelques logs un peu bizarre, j’attend que tout s’installe puis je ferme.

J’édite alors ~/.spacemacs

Dans les layers (dotspacemacs-configuration-layers) je peux voir celui qui concerne Rust : un peu plus bas (ligne 46 pour moi) je peux voir une ligne “;; lsp”. Je décommente la ligne en enlevant les ‘;’.

Dernière étape : activer les inlay hints pour voir le type des variables.

J’éditer le fichier ~/.emacs.d/init.el et je rajoute les lignes:

(setq lsp-rust-analyzer-server-display-inlay-hints t)
(setq lsp-inlay-hint-enable t)
(add-hook 'lsp-mode-hook 'lsp-inlay-hints-mode)

Enfin je relance une dernière fois emacs et tout semble fonctionner.

emacs

Vscode

Vous devez installer le plugin rust-analyzer. Il est ensuite nécessaire lorsque vous travaillez sur un projet d’ouvrir le répertoire du projet et non pas le code source.

Helix

Helix est un éditeur de texte modal, écrit en Rust. Beaucoup de choses fonctionnent par défaut mais il est tout de même nécessaire d’activer les inlay hints pour que l’éditeur affiche le type des variables.

Il faut modifier (créer si besoin) ~/.config/helix/config.toml en ajoutant

[editor.lsp]
display-inlay-hints = true
helix