NOTA: Este projeto está arquivado e foi substituído pelo realce baseado em LSP, que é menos desajeitado e consome menos recursos. color_coded sem dúvida foi o pioneiro neste espaço e sou grato por todos os tokens que foram coloridos em nossos editores desde então.
color_coded é um plug-in vim que fornece destaque de código em tempo real (rápido) sem tags para C++, C e Objective C usando libclang.
Antes color_coded | Depois de color_coded |
---|---|
Antes de instalar color_coded no OS X, leia o seguinte. O vim que vem com o OS X (mesmo o mais recente) não é novo o suficiente para suportar color_coded. Além disso, o macvim padrão do homebrew não tem lua habilitada. Para garantir que você tenha uma instalação válida do macvim no OS X, faça o seguinte:
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 obter o destaque adequado, você também precisará das ferramentas de linha de comando do Xcode, que fornecerão os cabeçalhos de sistema apropriados:
xcode-select --install
Primeiro, instale todas as dependências necessárias.
[sudo] apt-get install build-essential libclang-3.9-dev libncurses-dev libz-dev cmake xz-utils libpthread-workqueue-dev libtinfo-5
Para lua, você deve instalar a versão para a qual sua versão do vim foi compilada.
vim --version | grep lua
Encontre o número da sua versão -llua5.x
e use-o para instalar a versão correta.
[sudo] apt-get install liblua5.x-dev lua5.x
Você também precisa garantir que possui o GCC 4.9 (ou superior). Caso contrário, você pode tentar o seguinte (testado no 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
(Testado no 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
A instalação foi testada usando vundle, mas também deve ser compatível com o patógeno. Para instalar usando vundle (adicione a linha ao seu ~/.vimrc
, reinicie o vim, execute :PluginInstall
):
Plugin ' jeaye/color_coded '
A instalação com NeoBundle suporta a construção automática e o carregamento lento do 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 ' ]
}
Como color_coded possui um componente compilado, você precisará compilar manualmente ao instalar e atualizar (a menos que seu gerenciador de pacotes vim faça isso por você). A compilação funciona da seguinte maneira, assumindo o uso do vundle (veja a seção de dependências para garantir que você pode make
corretamente):
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 vários motivos de compatibilidade, color_coded tentará baixar uma versão conhecida do clang. Isso pode aumentar o tempo do processo de configuração, mas oferece mais estabilidade em diversas plataformas. Evitar isso não é oficialmente suportado, mas está documentado aqui.
OUTRA NOTA: color_coded não oferece suporte confiável ao luajit. Mais informativamente, luajit não oferece suporte confiável para ser incorporado em bibliotecas compartilhadas.
Depois que color_coded for instalado e compilado, ele começará a funcionar automaticamente na próxima vez que você iniciar o vim. Para que color_coded saiba como seu código deve ser compilado, pode ser necessário criar um arquivo descrevendo as opções necessárias do compilador. Observe que color_coded assume padrões sensatos e tenta permitir o uso imediato.
Dito isso, em qualquer caso não trivial, você precisará fornecer um arquivo .color_coded
para o seu projeto. Para cada arquivo, color_coded irá pesquisar desde o diretório do arquivo até a raiz do sistema de arquivos procurando por um arquivo .color_coded
ou um arquivo .color_coded_foo
(onde foo
é o tipo de arquivo; ou seja, c
, cpp
, etc). Isso possibilita que você tenha um em seu diretório inicial, por exemplo, e depois em cada um dos diretórios de seus projetos. Se você não especificar um em um diretório de projeto, aquele em seu diretório inicial será usado. Também possibilita fornecer diferentes flags para diferentes tipos de arquivos (C, C++, etc) e também trabalhar em subprojetos com diferentes flags. Novamente, se nenhum desses arquivos for encontrado, padrões sensatos serão aplicados.
color_coded tentará ao máximo destacar seu código para você, mesmo se houver erros na unidade de tradução. Isso permite um melhor destaque durante a digitação e destaque do código válido quando color_coded não sabe tudo sobre o seu projeto.
O conteúdo de um arquivo .color_coded
ou .color_coded_foo
é simplesmente uma lista separada por linhas de opções do compilador. Por exemplo, o arquivo .color_coded
para color_coded é (color_coded coloca o restante por padrão quando detecta arquivos C ou C++):
-Iinclude
-Ilib/jest/include
O arquivo .color_coded
pode ser gerado automaticamente usando YCM-Generator.
NOTA: Para simplificar, nenhum outro dado é permitido no arquivo .color_coded
. Ou seja, comentários não são suportados.
g:color_coded_enabled
Esta opção controla se color_coded funcionará ou não. Invocar o comando :CCtoggle
modificará esta opção para obter seus resultados. Você também pode especificá-lo como 0
em seu ~/.vimrc
para desativar globalmente o color_coded.
Padrão:
let g: color_coded_enabled = 1
g:color_coded_filetypes
Esta opção controla os tipos de arquivos que color_coded tentará compilar.
Padrão:
let g: color_coded_filetypes = [ ' c ' , ' cpp ' , ' objc ' ]
Existem muitos novos grupos de destaque que color_coded adiciona. Eles são projetados para seguir os detalhes internos da libclang o mais próximo possível. Para unir as coisas, foram criados alguns grupos de wrapper que permitirão mudanças mais abrangentes. Os grupos clang, por padrão, são mapeados para usá-los, junto com os grupos normais do 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 vem com um esquema de cores de amostra demonstrando suporte para grupos estendidos. Para usá-lo, invoque :colorscheme twilighted
. Como o nome pode sugerir, o esquema de cores é derivado do próprio tema crepuscular do vim e foi apropriadamente transformado no que você verá no repositório. Para examinar a implementação, visite colors/twilighted.vim
. Observe que color_coded pode funcionar com qualquer esquema de cores; esta é apenas uma amostra.
Para obter mais informações sobre todos os grupos suportados, consulte after/syntax/color_coded.vim
e a documentação do clang.
:CCerror
Este comando gera a última mensagem de erro de compilação da libclang. Se o seu realce não estiver funcionando corretamente, você pode ter um arquivo .color_coded
configurado incorretamente ou erros de sintaxe em sua fonte. Em caso de dúvida, verifique aqui primeiro.
:CCtoggle
Este comando habilita color_coded, se estiver desabilitado no momento, ou desabilita-o, se estiver habilitado no momento. Esta habilitação/desabilitação é feita através da opção g:color_coded_enabled
.
A compilação de color_coded requer:
O uso de color_coded requer vim:
color_coded tenta compilar seu código conforme você o digita. Devido ao funcionamento do vim, color_coded só pode atualizar o realce quando você fizer algo (mover o cursor, fazer uma alteração, etc.). Quando você terminar de digitar e o realce não tiver terminado de atualizar, supondo que seu arquivo .color_coded
seja suficiente, mover o cursor (ou causar eventos de alguma outra forma) permitirá que color_coded termine.
Observe que há um evento hold no vim que é acionado depois que você para de digitar e após algum atraso. color_coded também se conecta a isso e o usará para aplicar realce, se possível.
Sim. Acredite ou não, é quase certo que esses são bugs do libclang. Tenho classificado alguns deles e mantido meu próprio fork do libclang. Se você gostaria de relatar tal problema, confira este ticket.
Isso é intencional. Na primeira vez que você abre um buffer, color_coded não sabe se será compilado corretamente e não quer que você espere enquanto tenta descobrir isso. color_coded sempre será compilado em segundo plano e eventos como mover o cursor ou alterar o texto irão pesquisar atualizações. Observe, entretanto, que, uma vez que um buffer tenha realce, sair desse buffer e voltar a ele aplicará de forma síncrona o realce anterior.
Ao instalar o color_coded, você precisa compilá-lo manualmente antes de poder usá-lo com êxito. Consulte Instalação para obter instruções.
Supondo que você atualizou uma instalação funcional do color_coded, você receberá este erro se a atualização exigir que você recompile o color_coded (ou seja, houve alterações na API nativa). Para recompilar, siga exatamente as mesmas etapas que você executou para compilar inicialmente.
Por enquanto, pelo menos, color_coded não oferece suporte ao neovim. Existe o chromatica.vim, no entanto, que visa fornecer destaque semelhante, especificamente para o neovim.
Isso acontece em determinados sistemas operacionais que exigem caminhos de inclusão adicionais; a solução é apenas garantir que esses caminhos estejam no seu arquivo .color_coded
, prefixado com -isystem
. Para descobrir esses caminhos, execute o seguinte:
echo | clang -v -E -x c++ -
Consulte este comentário sobre o problema para obter detalhes. color_coded tenta ajudar assumindo alguns deles, como mostrado em post_constants()
aqui.
Provavelmente você está usando luajit, que não se integra bem em bibliotecas compartilhadas. Se você não tiver certeza, veja se isso aparece em alguma coisa:
vim --version | grep jit
Mais informações estão aqui.
Você pode usar isso no seu .vimrc
:
" Disable color_coded in diff mode
if & diff
let g: color_coded_enabled = 0
endif
Você pode especificar DOWNLOAD_CLANG=0
para cmake
. Dependendo da sua plataforma, você também pode precisar especificar o caminho para o seu binário llvm-config usando LLVM_CONFIG=
. Isso também pode permitir que você use diferentes versões do Clang/LLVM.
Exemplo:
cmake . -DDOWNLOAD_CLANG=0
Você pode encontrar isso em sistemas baseados em Debian. A solução foi instalar liblua-5.x-0-dbg
.
Isso é causado por um bug no vim; você pode contornar isso usando um vim com pelo menos patch 1691. Consulte este problema para obter detalhes.
Sinta-se à vontade para criar um problema no Github ou me enviar um e-mail ou me encontrar no IRC: Freenode @ #color_coded
color_coded está sob a licença de código aberto do MIT.
Veja o arquivo LICENSE
ou http://opensource.org/licenses/MIT