Proyektil tidak menampilkan semua file dalam proyek

12

Setelah mengunjungi file yang merupakan bagian dari repositori git, Projectile mengakui keberadaan repositori git saya sebagai sebuah proyek, tetapi hanya mencantumkan satu file (file saat ini) sebagai bagian dari proyek. Ketika saya mengunjungi file lain di proyek, mereka menjadi bagian dari proyek satu per satu.

Bagaimana cara membuat proyek di Proyektil sehingga mereka segera mengetahui semua file dalam proyek?

Semua tutorial yang saya temukan sejauh ini mengasumsikan bahwa Anda mengunjungi file dalam proyek yang ada, dan bahwa Proyile tahu file apa yang berisi proyek tersebut.


Memperbarui

Ketika saya mengatur Proyektil saya mengambil saran berikut dalam dokumentasi Proyektil:

Caching

Karena pengindeksan proyek besar tidak sepenuhnya cepat (terutama di Emacs Lisp), Proyektil mendukung caching file-file proyek. Tembolok diaktifkan secara default setiap kali pengindeksan asli diaktifkan.

Untuk mengaktifkan caching tanpa syarat, gunakan potongan kode ini:

(setq projectile-enable-caching t)

Karena saya kadang-kadang akan menavigasi beberapa proyek besar, saya menambahkan ini ke file init saya berharap itu akan memberi saya peningkatan kinerja. Saya tidak tahu bagaimana proyektil mengelola caching, tetapi pada saat itu saya berasumsi bahwa pertama kali saya mengunjungi proyek, pohon proyek akan dieksplorasi, dan cache akan diisi dengan semua file proyek. Tampaknya anggapan saya salah.

Setelah saya set projectile-enable-cachingke nil, Projectile dapat menemukan semua file di proyek saya. Berkat jawaban alexurba dan komentar tindak lanjutnya, saya dapat menemukan masalahnya.

nispio
sumber
Pertanyaan ini terlalu luas, dan harus ditutup. Itu bukan kandidat yang baik untuk SE. Tolong ajukan pertanyaan spesifik tentang satu masalah khusus yang Anda alami. Berikan info kontekstual sesuai kebutuhan untuk masalah khusus.
Drew
4
Saya pikir ini adalah pertanyaan bagus yang hanya memiliki terlalu banyak cerita. Saya pikir jika itu difokuskan kembali pada baris ini: "Bagaimana cara saya mengatur proyek di Proyektil sehingga mereka segera mengetahui semua file dalam proyek.", Itu akan baik.
Jordon Biondo
3
@JordonBiondo: Semakin fokus, semakin berguna (untuk SE). Tentunya seseorang dapat bertujuan untuk tingkat fokus minimal, sehingga tidak akan ditutup / ditutup. Tetapi seseorang harus dapat melakukan lebih baik dari itu. Saya menduga mungkin ada 3 atau 4 pertanyaan bagus di sana, di suatu tempat, dan semua orang akan mendapat manfaat jika diajukan secara terpisah, dengan cara yang terfokus.
Drew
Platform mana yang Anda gunakan (Windows, Mac, Linux)? Pengindeksan file proyek tampaknya diimplementasikan platform tergantung.
alexurba
1
Saya menguji ini di Linux (RHEL 6.5), tetapi saya ingin dapat menggunakannya di semua platform.
nispio

Jawaban:

8

Setelah diaktifkan, projectilebekerja di luar kotak untuk proyek git. Untuk mengaktifkan termasuk

(projectile-global-mode)

dalam konfigurasi Emacs Anda (atau mulai projectile-mode) secara manual.

Kemudian projectile-find-file(pengikatan kunci default C-c p f) berfungsi seperti itu find-file, tetapi akan bekerja pada semua file dalam subdirektori dari direktori utama proyek (di mana .gitdirektori tersebut berada).

Jika Anda ingin menghindari git, Anda dapat membuat file alternatif .projectiledi root proyek. Ini akan memiliki efek yang sama dan dapat digunakan untuk mengabaikan file atau direktori tertentu (mirip dengan .gitignore).

Lebih banyak info dapat ditemukan di halaman github proyek (yang terlalu lama dibaca, baik). Saya terutama merekomendasikan untuk membaca bagian tentang Idodan helm.

Edit:

Periksa nilai projectile-indexing-method. Di Linux ini seharusnya alien, dan nilai projectile-enable-cachingseharusnya nil.

alexurba
sumber
Ini persis bagian yang tidak berfungsi untuk saya. Ketika saya menjalankan projectile-find-file, satu-satunya file yang terdaftar adalah yang sudah saya kunjungi, walaupun direktori proyek berisi lebih banyak.
nispio
@nispio, pada halaman proyek disebutkan metode pengindeksan dan caching yang berbeda. Bisakah Anda memeriksa nilai projectile-indexing-method( C-h v projectile-indexing-method)? Di Linux ini seharusnya alien.
alexurba
Dan projectile-enable-cachingseharusnya nil.
alexurba
2
Anda menemukannya. Aku mengatur projectile-enable-cachinguntuk nildan mulai bekerja bagaimana saya harapkan. Mengetahui itu, saya dapat mengaturnya kembali tdan kemudian gunakan C-u C-c p funtuk membatalkan cache projectile-find-filedan itu juga berfungsi. Saya bingung mengapa saya harus membatalkan cache jika proyek belum pernah di-cache sebelumnya, tapi saya akan menyimpannya untuk pertanyaan lain, mungkin.
nispio
Bagus, itu berhasil. Meskipun, saya tidak yakin apa yang akan terjadi di Windows di mana pengindeksan 'alien' tidak tersedia. Tapi mungkin itu bisa benar-benar menjadi subjek pertanyaan kedua saat Anda menabraknya.
alexurba