REMARQUE : ce projet est archivé et a été remplacé par la mise en évidence basée sur LSP, qui est moins lourde et moins gourmande en ressources. color_coded a sans aucun doute été le pionnier de cet espace et je suis reconnaissant pour tous les jetons qui ont été colorés depuis dans nos éditeurs.
color_coded est un plugin vim qui fournit une mise en évidence de code en temps réel (rapide) sans balise pour C++, C et Objective C à l'aide de libclang.
Avant color_coded | Après le code couleur |
---|---|
Avant d'installer color_coded sur OS X, veuillez lire ce qui suit. Le vim fourni avec (même le dernier) OS X n'est pas assez récent pour prendre en charge color_coded. De plus, le macvim par défaut de homebrew n'a pas activé Lua. Pour vous assurer que vous disposez d'une installation macvim valide sur OS X, procédez comme suit :
brew update
brew install macvim --with-lua --with-override-system-vim
brew linkapps macvim
brew install xz cmake
# Spawn a new shell to use the new system vim
Pour obtenir une mise en évidence appropriée, vous aurez également besoin des outils de ligne de commande Xcode, qui vous donneront les en-têtes système appropriés :
xcode-select --install
Tout d’abord, installez toutes les dépendances requises.
[sudo] apt-get install build-essential libclang-3.9-dev libncurses-dev libz-dev cmake xz-utils libpthread-workqueue-dev libtinfo-5
Pour Lua, vous devez installer la version pour laquelle votre version de vim est compilée.
vim --version | grep lua
Recherchez votre numéro de version -llua5.x
et utilisez-le pour installer la version correcte.
[sudo] apt-get install liblua5.x-dev lua5.x
Vous devez également vous assurer que vous disposez de GCC 4.9 (ou supérieur). Si ce n'est pas le cas, vous pouvez essayer ce qui suit (testé sur Ubuntu 14.04).
# Install GCC 4.9
[sudo] add-apt-repository ppa:ubuntu-toolchain-r/test
[sudo] apt-get update
[sudo] apt-get install g++-4.9
# Prefer 4.9 to other versions
[sudo] update-alternatives --remove-all g++
[sudo] update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 50
(Testé sous FreeBSD 11.1)
$ [sudo] pkg install llvm40 cmake
$ cd ~ /.vim/bundle/color_coded
$ mkdir build && cd build
$ cmake -DCUSTOM_CLANG=1 -DLLVM_ROOT_DIR=/usr/local/llvm40 ..
$ make && make install
L'installation a été testée avec vundle, mais doit également être compatible avec l'agent pathogène. Pour installer en utilisant vundle (ajoutez la ligne à votre ~/.vimrc
, redémarrez vim, exécutez :PluginInstall
):
Plugin ' jeaye/color_coded '
L'installation avec NeoBundle prend en charge automatiquement la construction et le chargement différé du plugin :
NeoBundleLazy ' jeaye/color_coded ' , {
' build ' : {
' unix ' : ' rm -f CMakeCache.txt && cmake . && make && make install ' ,
},
' autoload ' : { ' filetypes ' : [ ' c ' , ' cpp ' , ' objc ' , ' objcpp ' ] },
' build_commands ' : [ ' cmake ' , ' make ' ]
}
Étant donné que color_coded a un composant compilé, vous devrez le compiler manuellement lors de l'installation et de la mise à jour (à moins que votre gestionnaire de packages vim ne le fasse pour vous). La compilation fonctionne comme suit, en supposant l'utilisation de vundle (voir la section dépendances pour vous assurer que vous pouvez make
correctement) :
cd ~ /.vim/bundle/color_coded
rm -f CMakeCache.txt
mkdir build && cd build
cmake ..
make && make install # Compiling with GCC is preferred, ironically
# Clang works on OS X, but has mixed success on Linux and the BSDs
# Cleanup afterward; frees several hundred megabytes
make clean && make clean_clang
Pour diverses raisons de compatibilité, color_coded tentera de télécharger une version connue de clang. Cela peut prolonger votre processus de configuration, mais cela offre plus de stabilité sur plusieurs plates-formes. Éviter cela n’est pas officiellement pris en charge, mais documenté ici.
UNE AUTRE REMARQUE : color_coded ne prend pas en charge luajit de manière fiable. De manière plus informative, luajit ne prend pas en charge de manière fiable l'intégration dans des bibliothèques partagées.
Une fois color_coded installé et compilé, il commencera automatiquement à fonctionner au prochain démarrage de vim. Pour que color_coded sache comment votre code doit être compilé, vous devrez peut-être créer un fichier décrivant les options requises du compilateur. Notez que color_coded suppose des valeurs par défaut saines et essaie de permettre une utilisation immédiate.
Cela dit, dans tous les cas non triviaux, vous devrez fournir un fichier .color_coded
pour votre projet. Pour chaque fichier, color_coded recherchera depuis le répertoire du fichier jusqu'à la racine du système de fichiers à la recherche d'un fichier .color_coded
ou d'un fichier .color_coded_foo
(où foo
est le type de fichier ; c'est à dire c
, cpp
, etc.). Cela vous permet d'en avoir un dans votre répertoire personnel par exemple, puis dans chacun des répertoires de vos projets. Si vous n'en spécifiez pas dans un répertoire de projet, celui de votre répertoire personnel est utilisé. Il permet également de fournir différents indicateurs pour différents types de fichiers (C, C++, etc.) et également de travailler dans des sous-projets avec des indicateurs différents. Encore une fois, si aucun fichier de ce type n’est trouvé, des valeurs par défaut raisonnables seront appliquées.
color_coded fera de son mieux pour mettre en évidence votre code pour vous, même s'il y a des erreurs dans l'unité de traduction. Cela permet une meilleure mise en évidence lors de la saisie et la mise en évidence du code valide lorsque color_coded ne sait pas tout de votre projet.
Le contenu d'un fichier .color_coded
ou .color_coded_foo
est simplement une liste d'options du compilateur séparées par des lignes. Par exemple, le fichier .color_coded
pour color_coded est (color_coded met le reste par défaut lorsqu'il détecte des fichiers C ou C++) :
-Iinclude
-Ilib/jest/include
Le fichier .color_coded
peut être généré automatiquement à l'aide de YCM-Generator.
REMARQUE : Par souci de simplicité, aucune autre donnée n'est autorisée dans le fichier .color_coded
. Autrement dit, les commentaires ne sont pas pris en charge.
g:color_coded_enabled
Cette option contrôle si color_coded fonctionnera ou non. L’appel de la commande :CCtoggle
modifiera cette option pour obtenir ses résultats. Vous pouvez également le spécifier comme 0
dans votre ~/.vimrc
pour désactiver globalement color_coded.
Défaut:
let g: color_coded_enabled = 1
g:color_coded_filetypes
Cette option contrôle les types de fichiers que color_coded tentera de compiler.
Défaut:
let g: color_coded_filetypes = [ ' c ' , ' cpp ' , ' objc ' ]
Il existe de nombreux nouveaux groupes de surbrillance ajoutés par color_coded. Ils sont conçus pour suivre le plus fidèlement possible les composants internes de libclang. Pour relier les choses ensemble, certains groupes wrapper ont été créés qui permettront des changements plus radicaux. Les groupes clang, par défaut, sont mappés pour les utiliser, ainsi que les groupes normaux de vim ( Function
, Macro
, Number
, etc.).
" To get full highlighting, specify these in your colorscheme.
" See colors/twilighted.vim for example usage
hi Member " Any non-static member variable
hi Variable " Any non-member variable
hi Namespace
hi EnumConstant
hi link StructDecl Type
hi link UnionDecl Type
hi link ClassDecl Type
hi link EnumDecl Type
color_coded est livré avec un exemple de jeu de couleurs démontrant la prise en charge des groupes étendus. Pour l'utiliser, invoquez :colorscheme twilighted
. Comme son nom l'indique, le schéma de couleurs est issu du propre thème crépusculaire de vim et a été correctement adapté à celui que vous verrez dans le dépôt. Pour examiner l'implémentation, visitez colors/twilighted.vim
. Notez que color_coded peut fonctionner avec n'importe quel schéma de couleurs ; ce n'est qu'un échantillon.
Pour plus d'informations sur tous les groupes pris en charge, consultez after/syntax/color_coded.vim
et la documentation clang.
:CCerror
Cette commande génère le dernier message d'erreur de compilation de libclang. Si votre surbrillance ne fonctionne pas correctement, il se peut que vous ayez un fichier .color_coded
mal configuré ou que vous ayez des erreurs de syntaxe dans votre source. En cas de doute, vérifiez d'abord ici.
:CCtoggle
Cette commande active color_coded, s'il est actuellement désactivé, ou le désactive, s'il est actuellement activé. Cette activation/désactivation se fait via l'option g:color_coded_enabled
.
La compilation de color_coded nécessite :
L'utilisation de color_coded nécessite vim :
color_coded essaie de compiler votre code au fur et à mesure que vous le tapez. En raison du fonctionnement de vim, color_coded ne peut mettre à jour la mise en surbrillance qu'une fois que vous avez fait quelque chose (déplacer le curseur, apporter une modification, etc.). Lorsque vous avez fini de taper et que la mise à jour n'est pas terminée, en supposant que votre fichier .color_coded
soit suffisant, déplacer le curseur (ou provoquer des événements d'une autre manière) permettra à color_coded de se terminer.
Notez qu'il existe un événement hold dans vim qui se déclenche après avoir arrêté de taper et après un certain délai. color_coded s'y connecte également et l'utilisera pour appliquer la mise en surbrillance si possible.
Ouais. Croyez-le ou non, ce sont presque certainement des bugs de libclang. J'en ai trié quelques-uns et je maintiens mon propre fork de libclang. Si vous souhaitez signaler un tel problème, consultez ce ticket.
C'est intentionnel. La première fois que vous ouvrez un tampon, color_coded ne sait pas s'il va se compiler correctement et il ne veut pas que vous attendiez pendant qu'il essaie de comprendre cela. color_coded sera toujours compilé en arrière-plan et des événements tels que le déplacement du curseur ou la modification du texte interrogeront les mises à jour. Notez cependant qu'une fois qu'un tampon est mis en surbrillance, quitter ce tampon et y revenir appliquera de manière synchrone la mise en surbrillance précédente.
Lorsque vous installez color_coded, vous devez le compiler manuellement avant de pouvoir l'utiliser avec succès. Voir Installation pour les instructions.
En supposant que vous ayez mis à jour une installation fonctionnelle de color_coded, vous obtiendrez cette erreur si la mise à jour vous oblige à recompiler color_coded (c'est-à-dire que des modifications ont été apportées à l'API native). Pour recompiler, suivez exactement les mêmes étapes que vous avez suivies pour compiler initialement.
Pour l'instant, au moins, color_coded ne prend pas en charge neovim. Il existe cependant chromatica.vim, qui vise à fournir une mise en évidence similaire, spécifiquement pour neovim.
Cela se produit sur certains systèmes d'exploitation qui nécessitent des chemins d'inclusion supplémentaires ; la solution consiste simplement à vous assurer que ces chemins se trouvent dans votre fichier .color_coded
, préfixé par -isystem
. Pour connaître ces chemins, exécutez ce qui suit :
echo | clang -v -E -x c++ -
Voir ce commentaire de problème pour plus de détails. color_coded essaie d'aider en supposant certains d'entre eux, comme indiqué dans post_constants()
ici.
Vous utilisez probablement Luajit, qui ne s'intègre pas bien dans les bibliothèques partagées. Si vous n'êtes pas sûr, voyez si cela donne quelque chose :
vim --version | grep jit
Plus d’informations sont ici.
Vous pouvez utiliser ceci dans votre .vimrc
:
" Disable color_coded in diff mode
if & diff
let g: color_coded_enabled = 0
endif
Vous pouvez spécifier DOWNLOAD_CLANG=0
à cmake
. En fonction de votre plate-forme, vous devrez peut-être également spécifier le chemin d'accès à votre binaire llvm-config à l'aide de LLVM_CONFIG=
. Cela peut également vous permettre d'utiliser différentes versions de Clang/LLVM.
Exemple:
cmake . -DDOWNLOAD_CLANG=0
Vous pouvez rencontrer ce problème sur les systèmes basés sur Debian. La solution a été d'installer liblua-5.x-0-dbg
.
Ceci est dû à un bug dans vim ; vous pouvez contourner ce problème en utilisant un vim avec au moins le patch 1691. Consultez ce problème pour plus de détails.
N'hésitez pas à créer un problème sur Github, à m'envoyer un e-mail ou à me contacter sur IRC : Freenode @ #color_coded
color_coded est sous la licence open source MIT.
Voir le fichier LICENSE
ou http://opensource.org/licenses/MIT