Pour la séparation entre l’éditeur et le moteur de rendu, c’est plutôt bien séparé en fait
node-gtk
affiche un terminal virtuel (dans la moitié gauche de l’éditeur). Je lance neovim
dans ce terminal virtuel, avec en argument une commande à exécuter en cas de modifs.
Comme on peut le voir sur le shéma, en cas de modifs neovim
exécute simplement le fichier neovim-hook-handler.js
, qui via TCP transmet les modifs à md2html/engine.js
(le script qui coordonne éditeur, moteur de rendu et affichage)
Si je met une option (c’est prévu) pour utiliser d’autres éditeur, rien ne m’empêche de définir que le comportement par défaut avec tous les éditeurs c’est de surveiller les fichiers, et que pour neovim/vim
exceptionnellement fonctionner comme il fonctionne actuellement
Le code est assez souple et cloisonné pour permettre de fonctionner des deux manières
Juste pour clarifier mon propos, je parle de couplage dans le code mais aussi et surtout de couplage à l’utilisation. En l’occurrence là, le couplage dans le code est peut être relativement faible, mais à l’utilisation il est encore là. C’est très bien si s’en défaire n’est pas compliqué parce que le couplage dans le code reste faible, mais c’est prévu et c’est fait sont deux choses bien différentes pour l’utilisateur. C’est le design "je branche directement mon éditeur et mon moteur ensemble pour faire du rendu temps réel" qui crée forcément un couplage fort à l’utilisation et présent quoiqu’il arrive dans le code que je critique plutôt que son implémentation effective. Si c’est bien fait et que généraliser pour affaiblir le couplage à l’usage est faisable sans trop d’efforts, c’est déjà pas mal.