NOTA: Este proyecto está archivado y ha sido reemplazado por el resaltado basado en LSP, que es menos complicado y requiere menos recursos. Sin duda, color_coded fue pionero en este espacio y estoy agradecido por todos los tokens que se han coloreado en nuestros editores desde entonces.
color_coded es un complemento vim que proporciona resaltado de código sin etiquetas en tiempo real (rápido) para C++, C y Objective C usando libclang.
Antes codificado por colores | Después del código de color |
---|---|
Antes de instalar color_coded en OS X, lea lo siguiente. El vim que viene con OS X (incluso el más reciente) no es lo suficientemente nuevo como para soportar color_coded. Además, el macvim predeterminado de homebrew no tiene lua habilitado. Para asegurarse de tener una instalación macvim válida en OS X, haga lo siguiente:
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
Para obtener un resaltado adecuado, también necesitarás las herramientas de línea de comandos de Xcode, que te proporcionarán los encabezados del sistema apropiados:
xcode-select --install
Primero, instale todas las dependencias necesarias.
[sudo] apt-get install build-essential libclang-3.9-dev libncurses-dev libz-dev cmake xz-utils libpthread-workqueue-dev libtinfo-5
Para lua, debe instalar la versión para la que está compilada su versión de vim.
vim --version | grep lua
Busque su número de versión -llua5.x
y utilícelo para instalar la versión correcta.
[sudo] apt-get install liblua5.x-dev lua5.x
También debes asegurarte de tener GCC 4.9 (o superior). Si no lo hace, puede intentar lo siguiente (probado en 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
(Probado en 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
La instalación se ha probado utilizando vundle, pero también debería ser compatible con patógenos. Para instalar usando vundle (agregue la línea a su ~/.vimrc
, reinicie vim, ejecute :PluginInstall
):
Plugin ' jeaye/color_coded '
La instalación con NeoBundle admite la creación y carga diferida automática del complemento:
NeoBundleLazy ' jeaye/color_coded ' , {
' build ' : {
' unix ' : ' rm -f CMakeCache.txt && cmake . && make && make install ' ,
},
' autoload ' : { ' filetypes ' : [ ' c ' , ' cpp ' , ' objc ' , ' objcpp ' ] },
' build_commands ' : [ ' cmake ' , ' make ' ]
}
Dado que color_coded tiene un componente compilado, deberá compilarlo manualmente al instalar y actualizar (a menos que su administrador de paquetes vim lo haga por usted). La compilación funciona de la siguiente manera, asumiendo el uso de vundle (consulte la sección de dependencias para asegurarse de que puede make
correctamente):
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
Por diversas razones de compatibilidad, color_coded intentará descargar una versión conocida de clang. Esto puede agregar tiempo a su proceso de configuración, pero ofrece más estabilidad en múltiples plataformas. Evitar esto no está oficialmente respaldado, pero está documentado aquí.
OTRA NOTA: color_coded no admite luajit de manera confiable. Más informativamente, luajit no admite de manera confiable la integración en bibliotecas compartidas.
Una vez que color_coded esté instalado y compilado, comenzará a funcionar automáticamente la próxima vez que inicie vim. Para que color_coded sepa cómo se debe compilar su código, es posible que deba crear un archivo que describa las opciones del compilador requeridas. Tenga en cuenta que color_coded asume valores predeterminados sensatos e intenta permitir el uso inmediato.
Dicho esto, en cualquier caso no trivial, necesitarás proporcionar un archivo .color_coded
para tu proyecto. Para cada archivo, color_coded buscará desde el directorio del archivo hasta la raíz del sistema de archivos buscando un archivo .color_coded
o un archivo .color_coded_foo
(donde foo
es el tipo de archivo; es decir, c
, cpp
, etc.). Esto le permite tener uno en su directorio de inicio, por ejemplo, y luego en cada uno de los directorios de sus proyectos. Si no especifica uno en el directorio de un proyecto, se utiliza el que está en su directorio de inicio. También permite proporcionar diferentes indicadores para diferentes tipos de archivos (C, C++, etc.) y también trabajar en subproyectos con diferentes indicadores. Nuevamente, si no se encuentran dichos archivos, se aplicarán los mismos valores predeterminados.
color_coded hará todo lo posible para resaltar su código, incluso si hay errores en la unidad de traducción. Esto permite resaltar mejor al escribir y resaltar código válido cuando color_coded no sabe todo sobre su proyecto.
El contenido de un archivo .color_coded
o .color_coded_foo
es simplemente una lista de opciones del compilador separadas por líneas. Por ejemplo, el archivo .color_coded
para color_coded es (color_coded coloca el resto de forma predeterminada cuando detecta archivos C o C++):
-Iinclude
-Ilib/jest/include
El archivo .color_coded
se puede generar automáticamente utilizando YCM-Generator.
NOTA: Por simplicidad, no se permiten otros datos en el archivo .color_coded
. Es decir, no se admiten comentarios.
g:color_coded_enabled
Esta opción controla si color_coded funcionará o no. Al invocar el comando :CCtoggle
se modificará esta opción para lograr sus resultados. También puede especificarlo como 0
en su ~/.vimrc
para deshabilitar globalmente color_coded.
Por defecto:
let g: color_coded_enabled = 1
g:color_coded_filetypes
Esta opción controla los tipos de archivos que color_coded intentará compilar.
Por defecto:
let g: color_coded_filetypes = [ ' c ' , ' cpp ' , ' objc ' ]
Hay muchos grupos de resaltado nuevos que agrega color_coded. Están diseñados para seguir las partes internas de libclang lo más cerca posible. Para unir las cosas, se han creado algunos grupos contenedores que permitirán cambios más radicales. Los grupos clang, de forma predeterminada, están asignados para usarlos, junto con los grupos normales 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 se envía con una combinación de colores de muestra que demuestra la compatibilidad con los grupos ampliados. Para usarlo, invoca :colorscheme twilighted
. Como sugiere el nombre, el esquema de colores se bifurca del propio tema Crepúsculo de vim y se ha adaptado apropiadamente al juego de palabras que verá en el repositorio. Para examinar la implementación, visite colors/twilighted.vim
. Tenga en cuenta que color_coded puede funcionar con cualquier combinación de colores; esto es sólo una muestra.
Para obtener más información sobre todos los grupos admitidos, consulte after/syntax/color_coded.vim
y la documentación de clang.
:CCerror
Este comando genera el último mensaje de error de compilación de libclang. Si el resaltado no funciona correctamente, es posible que tenga un archivo .color_coded
mal configurado o que tenga errores de sintaxis en su fuente. En caso de duda, consulte aquí primero.
:CCtoggle
Este comando habilita color_coded, si está actualmente deshabilitado, o lo deshabilita, si está actualmente habilitado. Esta habilitación/deshabilitación se realiza a través de la opción g:color_coded_enabled
.
La compilación de color_coded requiere:
El uso de color_coded requiere vim:
color_coded intenta compilar tu código a medida que lo escribes. Debido a cómo funciona vim, color_coded solo puede actualizar el resaltado una vez que haces algo (mover el cursor, hacer un cambio, etc.). Cuando haya terminado de escribir y el resaltado no haya terminado de actualizarse, suponiendo que su archivo .color_coded
sea suficiente, mover el cursor (o provocar eventos de alguna otra manera) permitirá que color_coded finalice.
Tenga en cuenta que hay un evento de retención en vim que se activa después de dejar de escribir y después de un cierto retraso. color_coded también se conecta con esto y lo usará para aplicar resaltado si es posible.
Sí. Lo creas o no, es casi seguro que se trata de errores de libclang. He estado seleccionando algunos de ellos y mantengo mi propia bifurcación de libclang. Si desea informar un problema de este tipo, consulte este ticket.
Esto es intencional. La primera vez que abres un buffer, color_coded no sabe si se va a compilar correctamente y no quiere que esperes mientras intenta resolverlo. color_coded siempre se compilará en segundo plano y eventos como mover el cursor o cambiar el texto buscarán actualizaciones. Sin embargo, tenga en cuenta que, una vez que un búfer tiene resaltado, al salir de ese búfer y volver a él se aplicará sincrónicamente el resaltado anterior.
Cuando instala color_coded, debe compilarlo manualmente antes de poder usarlo correctamente. Consulte Instalación para obtener instrucciones.
Suponiendo que haya actualizado una instalación funcional de color_coded, recibirá este error si la actualización requiere que vuelva a compilar color_coded (es decir, ha habido cambios en la API nativa). Para recompilar, siga exactamente los mismos pasos que siguió para compilar inicialmente.
Al menos por ahora, color_coded no admite neovim. Sin embargo, existe chromatica.vim, que tiene como objetivo proporcionar un resaltado similar, específicamente para neovim.
Esto sucede en ciertos sistemas operativos que requieren rutas de inclusión adicionales; la solución es simplemente asegurarse de que estas rutas estén en su archivo .color_coded
, con el prefijo -isystem
. Para conocer esas rutas, ejecute lo siguiente:
echo | clang -v -E -x c++ -
Consulte el comentario de este problema para obtener más detalles. color_coded intenta ayudar asumiendo algunos de estos, como se muestra en post_constants()
aquí.
Probablemente estés usando luajit, que no se integra bien en bibliotecas compartidas. Si no estás seguro, mira si esto arroja algo:
vim --version | grep jit
Más información está aquí.
Puedes usar esto en tu .vimrc
:
" Disable color_coded in diff mode
if & diff
let g: color_coded_enabled = 0
endif
Puede especificar DOWNLOAD_CLANG=0
para cmake
. Dependiendo de su plataforma, es posible que también necesite especificar la ruta a su binario llvm-config usando LLVM_CONFIG=
. Esto también puede permitirle utilizar diferentes versiones de Clang/LLVM.
Ejemplo:
cmake . -DDOWNLOAD_CLANG=0
Puede encontrarse con esto en sistemas basados en Debian. La solución ha sido instalar liblua-5.x-0-dbg
.
Esto se debe a un error en vim; puede solucionarlo utilizando un vim con al menos el parche 1691. Consulte este problema para obtener más detalles.
No dudes en crear un problema en Github, enviarme un correo electrónico o contactarme en IRC: Freenode @ #color_coded
color_coded está bajo la licencia de código abierto del MIT.
Consulte el archivo LICENSE
o http://opensource.org/licenses/MIT