#!⌨

Environnement de rédaction pour les fichiers RST

Dans ma vie professionnelle, j'ai régulièrement des documents à rédiger. La plupart des gens utilisent un logiciel de traitement de texte comme LibreOffice pour réaliser ce genre de tâches. En ce qui me concerne, j'aime pouvoir versionner ces documents dans un dépôt Mercurial. Et le format de fichier de LibreOffice ne permet pas d'afficher aisèment la différence entre deux versions d'un fichier.

J'ai donc opté pour le format reStructuredText (RST) qui me permet de rédiger mon document dans un simple éditeur de texte avec toutes les options de formatage dont j'ai besoin.

Et malgrès tout, j'aime bien avoir un rendu de mon texte en temps réel. Pour ce faire, j'utilise la transformation de RST en HTML que j'affiche dans un navigateur. Mon bureau est donc divisé en deux : Epiphany d'un côté et mon terminal de l'autre. Dans mon terminal, j'ai alors deux onglets : un pour vim et un pour lancer la transformation RST vers HTML.

Pour lancer la transformation dès qu'une modification est faite au fichier, j'utilise inotifywait. inotifywait est un utilitaire qui surveille efficacement les changements sur un fichier. Efficacement car cet utilitaire utilise l'API inotify du noyau Linux. Cette interface fournit un méchanisme pour être rappelé lors des événements touchant au système de fichier.

Ainsi, je configure inotifywait pour attendre l'événement write_close sur mon fichier, et je lance rst2html. J'encapsule tout ça dans une boucle infinie, et c'est terminé :

while true ; do
    inotifywait -e close_write file.rst
    rst2html file.rst file.html
done

Un simple CTRL+C nous permettra de quitter la boucle.

On peut également noter qu'il vaut mieux utiliser un navigateur basé sur Webkit car ceux ci rechargent automatiquement les fichiers provenant du système de fichier lorsqu'ils changent, contrairement à Firefox.