Pengindeks C ++ terbaik?

11

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 setdi kelas Fieldmengembalikan 165 referensi dalam basis kode saya, hanya satu yang sebenarnya merupakan referensiField::set

Mencari referensi setdalam 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-completeuntuk 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.

Steve Lorimer
sumber
Bukannya saya bekerja dengan proyek C ++, tapi mungkin Anda bisa menemukan konten bermanfaat di emacs.zeef.com di bawah bagian C ++?
ReneFroger
Saya perhatikan bahwa clang-indexerbelum ada perkembangan baru-baru ini, dan penulis sendiri mengatakan itu "kasar" - jadi saya tidak akan mencobanya pada dua lainnya
Steve Lorimer
rtagstampaknya menjadi yang paling populer dari 3 yang terdaftar
Steve Lorimer
1
Sebenarnya, apakah pertanyaan ini ada hubungannya dengan Emacs?
PythonNut
1
Seperti yang diungkapkan saat ini, pertanyaan ini sangat subyektif dan cenderung menghasilkan jawaban yang terutama didasarkan pada pendapat. Harap edit posting Anda untuk membuat pertanyaan lebih konkret.
Dan

Jawaban:

4

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)

log0
sumber
1
Sudah dua tahun sejak jawaban ini diterima, apakah Anda masih menggunakan rtag? Saya ingin tahu apakah dokumentasi tentang pengaturan diubah atau lebih mudah diperkenalkan. Ada info tentang itu? Bisakah Anda membagikan file setup / config Anda?
A_P
@ A_P Untuk beberapa alasan saya hanya melihat komentar Anda sekarang. Saya masih menggunakan rtags. Anda harus memeriksa lagi halaman cmake-ide + konfigurasi saya (tautan dalam jawaban saya). Saya juga otomatis menginstal sebagian besar. Periksa: github.com/jardon-u/dotfiles/blob/master/install.sh (walaupun versi emacs mungkin bukan yang terbaru. Saya akan mencoba memperbarui ini)
log0