Journal vim: Au revoir syntastic, bonjour ALE

Posté par  . Licence CC By‑SA.
Étiquettes :
37
24
août
2018

J'utilise Vim pour éditer des fichiers et notamment pour coder. Et j'aime bien avoir l'intégration des linters dans mon éditeur pour afficher les erreurs à côté du texte.

Un linter, c'est un programme qui analyse le code et signale les infractions aux règles de codages, les potentiels problèmes, erreurs de syntaxes, variables non utilisées, etc. En Python, par exemple, j'utilise pylint et flake8.

Pour intégrer ces linters à un éditeur de texte, il existe des plugins.

Depuis longtemps je bataille avec syntastic parce que la config par défaut est pas top donc il faut bidouiller, et surtout parce que l'exécution des linters est synchrone et bloque l'interface. Donc j'enregistre le fichier, pylint et flake8 se lancent et mettent trois plombes à s'exécuter, je me rends compte que j'ai fait une faute de frappe, et je dois attendre la fin de l'exécution pour reprendre le main. Frustration. Ou bien j'enregistre et je dois attendre pour changer d'onglet. Frustration encore.

J'ai découvert hier un équivalent asynchrone: ALE. J'utilise la config par défaut et pour l'instant c'est que du bonheur. Les linters s'exécutent en tâche de fond et les erreurs apparaissent/disparaissent après quelques secondes.

pylint est toujours très long mais j'ai arrêté de me battre pour le rendre plus rapide puisque ce n'est plus vraiment un problème.

  • # NeoVim ?

    Posté par  (site web personnel) . Évalué à 8. Dernière modification le 24 août 2018 à 11:37.

    Il me semble que NeoVim n'a plus ces problèmes de lancement synchrone, ça a été rendu asynchrone, ça vaut peut être le coup d'essayer si tu veux conserver ton plugin ?

    Cf paragraphe Meet Neovim: Plugin Compatibility.

    • [^] # Re: NeoVim ?

      Posté par  . Évalué à 3.

      Je connais pas NeoVim. Je crois comprendre que c'est "vim en mieux" mais j'ai jamais pris le temps d'essayer.

      Je suis pas sûr de comprendre. Tu veux dire que NeoVim exécute les plugins synchrones de façon asynchrone ? syntastic est synchrone, c'est pas la faute de vim. (voir. https://github.com/vim-syntastic/syntastic/issues/1370#issuecomment-372807959)

      A vrai dire, pour l'instant, ALE me va bien, je suis pas plus attaché que ça à syntastic.

      • [^] # Re: NeoVim ?

        Posté par  (site web personnel) . Évalué à 3. Dernière modification le 24 août 2018 à 11:58.

        Ah, effectivement, si tu es sûr que le problème vient du plugin qui n'est pas asynchrone… Je prends bonne note de l'existence de ALE, en tout cas, merci :). N'hésite pas à refaire un journal pour un retour d'expérience ;).

    • [^] # Re: NeoVim ?

      Posté par  (site web personnel) . Évalué à 6.

      NeoVim ne rend pas magiquement l'exécution des plugins asynchrones, il a juste proposé une API asynchrone pour les plugins en premier, avant que Vim ne suive un peu plus tard. Sur la page que tu as lié:

      The one area where you have to be cautious is with any plugin that uses job control to perform work asynchronously. Neovim came out with this feature first, way back in 2014. Vim released a similar feature with version 8, but the job control APIs are different.

      • [^] # Re: NeoVim ?

        Posté par  (site web personnel) . Évalué à 3. Dernière modification le 24 août 2018 à 12:00.

        Je pensais au début que NeoVim interprétait différemment certaines commandes pour les rendre asynchrones, merci de m'avoir détrompé ;). Je ne l'ai pas encore utilisé, c'était plus des souvenirs de lectures…

      • [^] # Re: NeoVim ?

        Posté par  . Évalué à 2.

        NeoVim ne rend pas magiquement l'exécution des plugins asynchrones,

        Aucun des 2 ne gère l'ui dans un thread séparé ? C'est pas un peu dommage ça ?

        • [^] # Re: NeoVim ?

          Posté par  (site web personnel) . Évalué à 2.

          Même si ce sont des threads distincts, j'imagine que ça lance le calcul sur le fichier complet fraîchement enregistré sur disque à chaque modification. Ça doit se ressentir sur des fichiers un peu longs.

          • [^] # Re: NeoVim ?

            Posté par  . Évalué à 1.

            Tout comme en asynchrone. Il semble qu'il est question de bloquer l'interface.

  • # Mainteneurs recherchés

    Posté par  (site web personnel) . Évalué à 10. Dernière modification le 24 août 2018 à 12:26.

    Salut,

    J'ai un petit peu contribué à ALE, et je profite de ce journal pour indiquer que le mainteneur principal d'ALE, w0rp, cherche des co-mainteneurs pour le projet qui devient de plus en plus gros (avec notamment un client LSP)

    https://old.reddit.com/r/vim/comments/9922tm/i_still_need_help_with_ale/

  • # YouCompleteMe

    Posté par  (site web personnel, Mastodon) . Évalué à 3.

    J'utilise de plus en plus YouCompleteMe, qui fonctionne sous forme d'un démon en arrière plan (lancé par vim de façon transparente) et fournit à la fois le soulignement des erreurs de syntaxe et autres problèmes, et la complétion automatique.

    Je ne l'ai testé qu'en C et C++ pour l'instant, mais il sait faire ça pour plusieurs langages, dont Python.

    • [^] # Re: YouCompleteMe

      Posté par  (site web personnel) . Évalué à 2.

      Je l'utilise pour python et il est très bien.
      D'ailleurs j'utilise aussi ALE et j'en suis très content.

      kentoc'h mervel eget bezan saotred

  • # Une autre alternative

    Posté par  (site web personnel) . Évalué à 5.

    J'utilise depuis un bout de temps Neomake (avec Neovim). Ce greffon avait justement été initié pour corriger le côté synchrone bloquant de syntastic. Je suis content de neomake, même si je n'ai pas comparé avec ALE.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.