Saya baru-baru ini beralih dari Eclipse CDT ke Spacemacs dengan lapisan C ++ sebagai lingkungan pengembangan saya.
Sejauh ini ... luar biasa! Namun, salah satu hal yang saya lewatkan tentang Eclipse adalah pengindeksnya .
Saat ini saya menggunakan GNU Global dengan lapisan gtags . Masalah dengan gtag adalah bahwa ini adalah sistem penandaan , bukan pengindeks.
Contoh:
Mencari referensi untuk fungsi yang dipanggil set
di kelas Field
mengembalikan 165 referensi dalam basis kode saya, hanya satu yang sebenarnya merupakan referensiField::set
Mencari referensi set
dalam CDT menghasilkan 1 hasil.
Apakah ada solusi pengindeksan yang lebih baik yang dapat saya gunakan di emacs?
Pencarian online Saya menemukan halaman ini di mana 3 pengindeks berbasis dentang terdaftar.
Pertanyaan:
- Apakah ada yang menawarkan pengalaman pengindeksan yang lebih baik?
- Adakah saran untuk digunakan?
- Apakah ada alternatif yang lebih baik tidak terdaftar?
catatan:
Saya juga telah menggunakan clang-complete
untuk menyelesaikan kode, tetapi ternyata sangat lambat. Sangat lambat. ( Saya bukan satu-satunya yang mengalami ini ). Jika ada solusi pengindeksan mengalami masalah yang sama, itu tidak akan berhasil.
clang-indexer
belum ada perkembangan baru-baru ini, dan penulis sendiri mengatakan itu "kasar" - jadi saya tidak akan mencobanya pada dua lainnyartags
tampaknya menjadi yang paling populer dari 3 yang terdaftarJawaban:
Saya hanya dapat memberi tahu rtags bahwa saya telah menggunakan secara aktif selama 1-2 tahun terakhir.
rtags berfungsi seperti yang diharapkan. Ini berbasis compiler dan menyediakan navigasi kode yang benar. Sesuatu yang saya cari selama 10 tahun terakhir sebagai pengguna emacs.
Pengaturan bisa agak rumit. Saya sarankan melihat cmake-ide, yang melakukan bagian dari pengaturan secara otomatis. https://github.com/atilaneves/cmake-ide
Posting blog ini juga dapat membantu https://vxlabs.com/2016/04/11/step-by-step-guide-to-c-navigation-and-completion-with-emacs-and-the-clang-based- rtags /
Anda juga dapat melihat (atau menggunakan) konfigurasi saya sendiri: https://github.com/jardon-u/dotfiles/blob/master/emacs.d/development/c/_init.el Saya menggunakan kombinasi cmake- ide (penemuan proyek), ironi (untuk penyelesaian kode) dan rtags (untuk navigasi kode). Saya cukup yakin ini bisa disederhanakan karena beberapa fungsi tumpang tindih antara masing-masing mode, tetapi hasilnya adalah pada tingkat yang saya harapkan dari IDE modern.
rtags juga menyediakan fasilitas kode refactoring, tetapi sangat terbatas (kebanyakan berganti nama)
sumber