Jacques Foucry bio photo

Jacques Foucry

IT, râleur et faiseur de pain

Email Twitter



Il m’arrive d’avoir d’éditer des fichiers Objective-C sur machine Linux. Ou de me rendre compte que Xcode, c’est bien gentil, mais que pour être efficace, il faut un véritable éditeur de texte, Vim.

Il est possible d’éditer un fichier Objective-C avec Vim de base, sans rien faire de spécial. Dans ce cas, on ne dispose pas de la coloration syntaxique. Tout au plus peut-on utiliser celle prévue pour le C.

Heureusement, il existe (merci à Dominique qui me l’a signalé) un greffon qui active la coloration syntaxique spécifique à notre langage (préféré ?).

Attention, à partir de là on utilise le Terminal !

Télécharger et installer le greffon

Tout d’abord, il faut télécharger le greffon sur le site de Vim. Pour l’installer, en supposant que vous l’ayiez téléchargé dans ~/Download.

1
$ unzip ~/Download/cocoa.zip -d ~/.vim</pre>

Dans le répertoire .vim qui se trouve dans votre répertoire de connexion, vous devriez trouvez 6 dossiers :

1
2
$ ls .vim/
after  autoload  doc  ftplugin  lib  plugin

Désormais, si vous éditez un fichier .m… vous n’avez pas la coloration syntaxique spécifique.

En effet, vVim ne sais pas détecter que votre fichier .m est de l’Objective-C. Il va falloir lui apprendre.

Attention, jusque-là c’était fastoche !

Patcher Vim

Sur Mac, il est possible que le patch ait déjà été intégré à MacVim. Pour le vérifier, recherche la chaîne objc dans le fichier à patcher :

1
2
3
$ grep objc /usr/share/vim/vim72 
    setf objc
    setf objcpp

Je sais ici que le fichier est déjà prêt. Dans ce cas, passez à la suite.

Il faut télécharger un patch à appliquer à l’un des fichiers de configuration de Vim. Téléchargez le patch attaché avec le message de Björn Winckler.

Le fichier à patcher est filetype.vim. Sur ma CentOS, il se trouve dans /usr/share/vim/vim70. À vous de le trouver sur votre machine (pensez à locate ou mdfind).

Rendez-vous donc dans le répertoire qui contient ce fichier :

1
$ cd /usr/share/vim/vim70

Et passez root avec la commande sudo -s

Une fois root, on va commencer par faire une copie de sauvegarde du fichier :

1
$ cp filetype.vim filetype.cim.ORIG

Et nous allons appliquer le patch (en supposant que le patch a été téléchargé dans ~/Download) :

1
$ patch -d0 < ~/Download/filetype.vim.diff

Une fois le patch appliqué vous pouvez relancer vim en éditant un fichier .m et admirer le résultat.

Premier essai

Pour ma part, sur mon Linux je n’ai pas eu de problème, mais sur mon Mac, le résultat n’était pas probant.

Sur Mac, ça ne marche pas !

Voici donc la suite des manipulations à faire pour que cette extension fonctionne correctement.

Toujours avec le Terminal nous allons nous rendre dans les entrailles de MacVim :

1
$ cd /Applications/MacVim/Contents/Resources/vim/runtime/syntax

Dans ce répertoire nous allons créer des liens symboliques vers certains éléments sur greffon qui se trouvent dans votre répertoire de départ :

1
2
$ ln -s ~/.vim/after/syntax/objc_enhanced.vim
$ ln -s ~/.vim/after/syntax/cocoa_keywords.vim

Il nous faut à présent faire en sorte que Vim prenne en compte ces modifications en éditant le fichier /Applications/MacVim/Contents/Resources/vim/runtime/syntax/objc.vim et en ajoutant au début du fichier, après les commentaires ru syntax/objc_enhanced.vim

On sauvegarde, on sort du shell root que vous venez d’utiliser avec le raccourci CTRL+d ou exit.

Et on tente à nouveau d’éditer un fichier Objective-C…

Utiliser MacVim comme éditeur dans Xcode

Ensuite, sous Mac OS X, vous pouvez remplacer l’éditeur interne de Xcode par Vim, à condition d’être resté sous Xcode 3.x. En effet, malgré de nombreuses recherches à plusieurs, il semble que cette fonctionnalité ait disparue de Xcode4 (un grand merci à Apple).

Il existe d’autres greffons pour Vim, comme vim.comment qui permet de commenter ou décommenter une ligne ou une série de ligne. Si vous êtes sages et que ce genre d’article vous intéresse, je consentirai peut être à en faire d’autres.


Laisser un commentaire

Les commentaires sont soumis à modération.