Oct/090
Vim et Rake
La structure de notre projet implique des phases de pré-processing permettant soit de compiler des sources en binaires, soit de transformer des modèles de vues en fichiers cibles.
Ces actions sont réalisées via le gestionnaire de tâches rake
. Ces actions sont effectuées pour l’instant en ligne de commandes. Par exemple :
$ rake -T rake build # Build the sources rake clean # Clean workspace rake compile # Compile the sources rake db:create # Initialise a database rake edoc # Create documentation rake front # Preprocess views and styles rake release # Packaging rake start # Start application rake test # Unit tests $ rake front Creating style /d/apps/gns/priv/www/assets/styles/application.css $
Nous allons intégrer ces commandes au sein de Vim
afin de simplifier le processus (ne pas avoir à jongler entre les fenêtres) et l’automatiser (ne rien oublier afin de ne pas s’énerver parce que ça ne marche pas !).
Compilation sous Vim
Vim
permet de définir quel est le programme à appeler lors de la « compilation » d’un fichier. Les interactions entre le programme de compilation et vim
sont gérées par pipe
.
La commande est la suivante :
:set makeprg=rake
Si on ouvre un fichier, par exemple une vue modèle type SASS, et qu’on tape la commande précédente, on peut alors lancer la compilation sous vim
de la façon suivante :
:make front
On peut effectivement ajouter des arguments à la commande. De plus, taper :make
permet de lancer la commande de base, qui compilera tous les fichiers (mais c’est un peu plus long).
Configuration et automatisation
Le but est maintenant d’automatiser ce comportement.
Pour cela, on va créer/modifier le fichier de démarrage ~/.vimrc
(pour rappel, si vous faites ces modifications dans vim
, vous pouvez recharger les réglages de démarrage par :source /path/.vimrc
).
Pour cela, on peut exécuter des actions en fonction du type de fichier autocmd
:
autocmd FileType sass,haml set makeprg=rake\ front
Lors de l’ouverture d’un fichier SASS, la commande :make
pré-processera le fichier source. Le problème est que l’on est contraint à un seul type de compilation. Il vaut mieux ne pas embarquer l’option dans le make
et proposer à la place des raccourcis.
On redéfini donc les commandes ainsi :
autocmd FileType sass,haml set makeprg=rake au BufEnter *.sass,*.haml nnoremap <F9> :make front<CR> au BufWritePost *.sass,*.haml :make front
Lors de la sauvegarde d’un fichier, la compilation sera jouée automatiquement.
Il est alors possible de décliner ce comportement pour tous les types de fichiers (source erlang).