CATATAN: Proyek ini diarsipkan dan telah digantikan oleh penyorotan berbasis LSP, yang tidak terlalu rumit dan tidak membutuhkan banyak sumber daya. color_coded tidak diragukan lagi memelopori ruang ini dan saya berterima kasih atas semua token yang telah diwarnai di editor kami sejak saat itu.
color_coded adalah plugin vim yang menyediakan penyorotan kode tanpa tag secara realtime (cepat) untuk C++, C, dan Objective C menggunakan libclang.
Sebelum diberi kode warna | Setelah diberi kode warna |
---|---|
Sebelum menginstal color_coded di OS X, harap baca yang berikut ini. Vim yang disertakan dengan OS X (bahkan yang terbaru) tidak cukup baru untuk mendukung kode_warna. Selain itu, macvim default dari homebrew tidak mengaktifkan lua. Untuk memastikan Anda memiliki instalasi macvim yang valid di OS X, lakukan hal berikut:
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
Untuk mendapatkan penyorotan yang tepat, Anda juga memerlukan alat baris perintah Xcode, yang akan memberi Anda header sistem yang sesuai:
xcode-select --install
Pertama, instal semua dependensi yang diperlukan.
[sudo] apt-get install build-essential libclang-3.9-dev libncurses-dev libz-dev cmake xz-utils libpthread-workqueue-dev libtinfo-5
Untuk lua, Anda harus menginstal versi vim yang dikompilasi.
vim --version | grep lua
Temukan nomor versi Anda -llua5.x
dan gunakan untuk menginstal versi yang benar.
[sudo] apt-get install liblua5.x-dev lua5.x
Anda juga perlu memastikan bahwa Anda memiliki GCC 4.9 (atau lebih tinggi). Jika tidak, Anda dapat mencoba yang berikut ini (diuji pada 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
(Diuji di 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
Instalasi telah diuji menggunakan vundle, tetapi juga harus kompatibel dengan patogen. Untuk menginstal menggunakan vundle (tambahkan baris ke ~/.vimrc
, mulai ulang vim, jalankan :PluginInstall
):
Plugin ' jeaye/color_coded '
Instalasi dengan NeoBundle mendukung pembuatan dan pemuatan lambat plugin secara otomatis:
NeoBundleLazy ' jeaye/color_coded ' , {
' build ' : {
' unix ' : ' rm -f CMakeCache.txt && cmake . && make && make install ' ,
},
' autoload ' : { ' filetypes ' : [ ' c ' , ' cpp ' , ' objc ' , ' objcpp ' ] },
' build_commands ' : [ ' cmake ' , ' make ' ]
}
Karena color_coded memiliki komponen yang dikompilasi, Anda harus mengkompilasi secara manual saat menginstal dan memperbarui (kecuali manajer paket vim Anda melakukannya untuk Anda). Kompilasi berfungsi sebagai berikut, dengan asumsi penggunaan vundle (lihat bagian dependensi untuk memastikan Anda dapat make
dengan benar):
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
Karena berbagai alasan kompatibilitas, color_coded akan mencoba mengunduh versi dentang yang dikenal. Ini mungkin menambah waktu pada proses konfigurasi Anda, namun menawarkan stabilitas lebih di berbagai platform. Menghindari hal ini tidak didukung secara resmi, namun didokumentasikan di sini.
CATATAN LAIN: color_coded tidak mendukung luajit secara andal. Lebih informatifnya, luajit tidak mendukung penyematan di perpustakaan bersama.
Setelah color_coded diinstal dan dikompilasi, maka secara otomatis akan mulai bekerja saat berikutnya Anda memulai vim. Agar color_coded mengetahui bagaimana kode Anda harus dikompilasi, Anda mungkin perlu membuat file yang menjelaskan opsi kompiler yang diperlukan. Catatan, color_coded mengasumsikan default yang wajar dan mencoba mengizinkan penggunaan segera.
Oleh karena itu, dalam kasus yang tidak sepele, Anda perlu menyediakan file .color_coded
untuk proyek Anda. Untuk setiap file, color_coded akan mencari dari direktori file hingga ke akar sistem file untuk mencari file .color_coded
atau file .color_coded_foo
(di mana foo
adalah tipe filenya; yaitu c
, cpp
, dll). Hal ini memungkinkan Anda untuk memilikinya di direktori home Anda, misalnya, dan kemudian di setiap direktori proyek Anda. Jika Anda tidak menentukan satu di direktori proyek, yang ada di direktori home Anda akan digunakan. Hal ini juga memungkinkan untuk memberikan tanda yang berbeda untuk jenis file yang berbeda (C, C++, dll) dan juga bekerja dalam subproyek dengan tanda yang berbeda. Sekali lagi, jika tidak ada file seperti itu yang ditemukan, default yang masuk akal akan diterapkan.
color_coded akan berusaha sekuat tenaga untuk menyorot kode Anda, meskipun ada kesalahan dalam unit terjemahan. Hal ini memungkinkan penyorotan yang lebih baik saat mengetik dan menyorot kode yang valid ketika color_coded tidak mengetahui segalanya tentang proyek Anda.
Isi file .color_coded
atau .color_coded_foo
hanyalah daftar opsi kompiler yang dipisahkan satu baris. Misalnya, file .color_coded
untuk color_coded adalah (color_coded menempatkan sisanya secara default ketika mendeteksi file C atau C++):
-Iinclude
-Ilib/jest/include
File .color_coded
dapat dibuat secara otomatis menggunakan YCM-Generator.
CATATAN: Untuk menyederhanakan, tidak ada data lain yang diizinkan dalam file .color_coded
. Artinya, komentar tidak didukung.
g:color_coded_enabled
Opsi ini mengontrol apakah color_coded akan berfungsi atau tidak. Memanggil perintah :CCtoggle
akan mengubah opsi ini untuk mencapai hasilnya. Anda juga dapat menentukannya sebagai 0
di ~/.vimrc
Anda untuk menonaktifkan color_coded secara global.
Bawaan:
let g: color_coded_enabled = 1
g:color_coded_filetypes
Opsi ini mengontrol jenis file yang akan coba dikompilasi oleh color_coded.
Bawaan:
let g: color_coded_filetypes = [ ' c ' , ' cpp ' , ' objc ' ]
Ada banyak grup penyorotan baru yang ditambahkan color_coded. Mereka dirancang untuk mengikuti internal libclang sedekat mungkin. Untuk menyatukan semuanya, beberapa grup pembungkus telah dibuat yang memungkinkan perubahan lebih luas. Grup dentang, secara default, dipetakan untuk menggunakan ini, bersama dengan grup normal vim ( Function
, Macro
, Number
, dll).
" 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 dikirimkan dengan contoh skema warna yang menunjukkan dukungan untuk grup yang diperluas. Untuk menggunakannya, aktifkan :colorscheme twilighted
. Seperti namanya, skema warna diambil dari tema senja vim sendiri dan telah disesuaikan dengan tema yang akan Anda lihat di repo. Untuk memeriksa penerapannya, kunjungi colors/twilighted.vim
. Perhatikan bahwa color_coded dapat bekerja dengan skema warna apa pun; ini hanya sampel.
Untuk informasi selengkapnya tentang semua grup yang didukung, lihat after/syntax/color_coded.vim
dan dokumentasi clang.
:CCerror
Perintah ini menampilkan pesan kesalahan kompilasi terakhir dari libclang. Jika penyorotan Anda tidak berfungsi dengan benar, Anda mungkin memiliki file .color_coded
yang salah dikonfigurasi atau Anda mungkin memiliki kesalahan sintaksis di sumber Anda. Jika ragu, periksa dulu di sini.
:CCtoggle
Perintah ini mengaktifkan color_coded, jika saat ini dinonaktifkan, atau menonaktifkannya, jika saat ini diaktifkan. Pengaktifan/penonaktifan ini dilakukan melalui opsi g:color_coded_enabled
.
Kompilasi color_coded memerlukan:
Penggunaan color_coded memerlukan vim:
color_coded mencoba mengkompilasi kode Anda saat Anda mengetiknya. Karena cara kerja vim, color_coded hanya dapat memperbarui sorotan setelah Anda melakukan sesuatu (memindahkan kursor, membuat perubahan, dll). Ketika Anda selesai mengetik dan sorotan belum selesai diperbarui, dengan asumsi file .color_coded
Anda sudah cukup, menggerakkan kursor (atau menyebabkan kejadian dengan cara lain) akan memungkinkan color_coded selesai.
Catatan, ada acara hold di vim yang terpicu setelah Anda berhenti mengetik dan setelah beberapa penundaan. color_coded juga terhubung ke sini dan akan menggunakannya untuk menerapkan penyorotan jika memungkinkan.
Ya. Percaya atau tidak, ini hampir pasti merupakan bug libclang. Saya telah memilah beberapa di antaranya dan saya memelihara cabang libclang saya sendiri. Jika Anda ingin melaporkan masalah seperti itu, lihat tiket ini.
Ini disengaja. Pertama kali Anda membuka buffer, color_coded tidak tahu apakah buffer tersebut akan dikompilasi dengan benar dan ia tidak ingin Anda menunggu sementara mencoba mencari tahu. color_coded akan selalu dikompilasi di latar belakang dan peristiwa seperti memindahkan kursor atau mengubah teks akan melakukan polling untuk pembaruan. Namun, perhatikan bahwa, setelah buffer disorot, meninggalkan buffer tersebut dan kembali lagi ke buffer tersebut akan menerapkan highlight sebelumnya secara sinkron.
Saat Anda menginstal color_coded, Anda perlu mengkompilasinya secara manual sebelum Anda berhasil menggunakannya. Lihat Instalasi untuk instruksi.
Dengan asumsi Anda telah memperbarui instalasi color_coded yang berfungsi, Anda akan mendapatkan kesalahan ini jika pembaruan mengharuskan Anda mengkompilasi ulang color_coded (yaitu ada perubahan pada API asli). Untuk mengkompilasi ulang, ikuti langkah-langkah yang sama persis seperti yang Anda ambil saat mengkompilasi pada awalnya.
Untuk saat ini, setidaknya, color_coded tidak mendukung neovim. Namun ada chrometica.vim, yang bertujuan untuk memberikan penyorotan serupa, khususnya untuk neovim.
Hal ini terjadi pada sistem operasi tertentu yang memerlukan jalur penyertaan tambahan; solusinya adalah dengan memastikan jalur ini ada di file .color_coded
Anda, yang diawali dengan -isystem
. Untuk mengetahui jalur tersebut, jalankan perintah berikut:
echo | clang -v -E -x c++ -
Lihat komentar masalah ini untuk detailnya. color_coded mencoba membantu dengan mengasumsikan beberapa di antaranya, seperti yang ditunjukkan pada post_constants()
di sini.
Anda mungkin menggunakan luajit, yang tidak tertanam dengan baik di perpustakaan bersama. Jika Anda tidak yakin, lihat apakah ini menghasilkan sesuatu:
vim --version | grep jit
Informasi lebih lanjut ada di sini.
Anda dapat menggunakan ini di .vimrc
Anda:
" Disable color_coded in diff mode
if & diff
let g: color_coded_enabled = 0
endif
Anda dapat menentukan DOWNLOAD_CLANG=0
ke cmake
. Bergantung pada platform Anda, Anda mungkin juga perlu menentukan jalur ke biner llvm-config menggunakan LLVM_CONFIG=
. Ini juga memungkinkan Anda untuk menggunakan versi Dentang/LLVM yang berbeda.
Contoh:
cmake . -DDOWNLOAD_CLANG=0
Anda mungkin mengalami hal ini pada sistem berbasis Debian. Solusinya adalah menginstal liblua-5.x-0-dbg
.
Hal ini disebabkan oleh bug di vim; Anda dapat mengatasinya dengan menggunakan vim dengan setidaknya patch 1691. Lihat masalah ini untuk detailnya.
Jangan ragu untuk membuat masalah di Github atau kirim email kepada saya atau hubungi saya di IRC: Freenode @ #color_coded
color_coded berada di bawah lisensi sumber terbuka MIT.
Lihat file LICENSE
atau http://opensource.org/licenses/MIT