Inform7 et Gedit
J'ai recommencé à bidouiller avec Inform7*, mais comme l'IDE officiel (à savoir gnome-inform7), même si convivial et relativement bien foutu, est d'une exaspérante lenteur sur mon pauvre petit portable, j'ai décidé d'utiliser plutôt Gedit, un simple éditeur texte, et de le configurer pour mes besoins.
Je documente ici les étapes que j'ai suivies.
(* J'ai déjà parlé de Inform7, jadis, ici et là, notamment)
1 - Installer gnome-inform7 et i7
Duh, ça semble stupide, mais on va avoir besoin de certains fichiers. Et mon module ne replace pas complètement l'IDE (quoique ce serait possible): gnome-inform7 est toujours nécessaire pour publier un fiction, par exemple.
Il faut aussi installer le compilateur en ligne de commande i7. On verra plus loin pourquoi.
Les deux logiciels sont disponibles sur le site de Inform7
2 - Coloration syntaxique
On veut que Gedit utilise une coloration syntaxique appropriée. Ce n'est pas nécessaire, mais c'est tellement, tellement plus agréable.
Il y a deux sous-étapes ici: d'abord, pointer vers le fichier de configuration pour les couleurs. Avec une installation typique, il se trouve dans /usr/share/gnome-inform7/styles/inform.xml . On peut l'ajouter à partir de la fenêtre 'Gedit Preferences', dans l'onglet 'Font & Colours'.
Ensuite, il faut aider Gedit à comprendre la syntaxe propre à Inform7. Pour ce faire, il faut utiliser les trois fichiers .lang (inform.lang, naturalinform.lang et naturalinformextension.lang) qui se trouvent dans le dossier /usr/share/gnome-inform7/languages/. Il suffit en fait de les copier dans /usr/share/gtksourceview-3.0/language-specs/. Si Gedit est ouvert, il faut le refermer, et tadam, les syntaxes Inform sont reconnues!
3 - Ajouter un plugin de compilation
Bon, c'est bien beau, avec l'étape 2, Gedit reconnaît la syntaxe d'Inform7 et affiche le code source correctement, mais ce serait bien de pouvoir compiler une fiction pour faire des tests pendant le développement, non?
Tout d'abord, il faut activer le plugin 'External Tools', qui va nous permettre d'ajouter un script de compilation. Si ça ne fonctionne pas, vérifier que le package 'gedit-plugins' est bien installé.
Ensuite, dans 'Tools/Manage External Tools", on peut rajouter le script en question, dans le champ 'Edit', idéalement après avoir créé une nouvelle entrée. Voici ce que j'utilise (c'est, évidemment, un work in progress) :
AJOUT : Depuis, j'ai écrit une meilleure version de ce script.
----------------------------------------------
#############################################
#
# Go (Inform)
# Script pour compiler une fiction,
# la jouer dans une interpréteur si
# la compilation fonctionne, ou afficher
# les messages d'erreur en cas d'échec.
#
##############################################
cd "$GEDIT_CURRENT_DOCUMENT_DIR/"
# Par défaut, le format est z5.
format=5
interpreteur=gargoyle-free
fureteur="midori --app="
output=../Build/output.z$format
msg_erreur=../Build/Problems.html
# Compilation de la fiction interactive et
# suppression des outputs textuels
i7 -s zcode=$format -c ../ > /dev/null 2>&1 &&
# Si la compilation fonctionne
if [ -e $output ];
# l'interpréteur, puis l'effacer
then $interpreteur $output && rm $output
# Sinon, afficher le message d'erreur
else $fureteur$msg_erreur
fi
# Ce dossier est créé automatiquement,
# j'ignore pourquoi. Vidanges.
rm -R ". Materials/" > /dev/null 2>&1;
----------------------------------------------
Quelques remarques:
-Évidemment, l'interpréteur et le fureteur doivent être installés pour que le script fonctionne. J'ai choisi gargoyle-free et midori par préférence personnelle; ça peut être modifié sans problème.
- Le compilateur i7, cependant, est complètement nécessaire. Il est disponible sur le site du projet.
- Il y a techniquement moyen d'afficher le message d'erreur directement dans la console de Gedit, mais si je me souviens bien, cela produisait une certaine quantité d'informations indésirables.
- J'ai hardcodé l'utilisation du format z* un peu par paresse. On peut aisément modifier le script pour changer le format, mais c'est certain qu'il serait préférable de rendre ça plus flexible.
- Comme je l'ai mentionné plus haut, ce script ne supporte pas la publication finale des fictions. Il faut soit utiliser l'IDE ou i7, en ligne de commande.
Donc voilà, c'est ce que j'utilise pour écrire des fictions interactives. Maintenant, si je pouvais seulement trouver le temps d'en terminer une...