Saya menggunakan proyektil untuk penelusuran proyek saya. Saya telah melihat bahwa ini sangat lambat, jadi saya menyalakan caching. Sekarang cepat (tidak terlalu cepat, sedih).
Jika saya membuat file baru di luar emacs sendiri, proyektil tidak menemukannya. Saya dapat menjalankan pembatalan cache tetapi itu membutuhkan waktu beberapa menit. Bagaimana cara memperbaikinya?
projectile
project
lukas.pukenis
sumber
sumber
M-x
projectile-cache-current-file
. Jika Anda tidak ingin maka Emacs harus melintasi seluruh pohon mencari file, jadi tidak ada optimasi yang dapat dilakukan.filenotify.el
perpustakaan built-in , yang saya percaya akan memungkinkan proyektil untuk melacak perubahan direktori dan akibatnya diberitahu ketika file baru (atau direktori untuk pelacakan) dibuat (atau dihapus) sehingga secara otomatis dapat menambahkan (atau menghapus) file ke / dari cache. Pemberitahuan direktori tidak bersifat rekursif, sehingga fitur ini akan memerlukan pelacakan secara mandiri setiap direktori dalam proyek. Saya tidak tahu apakah itu akan dikenakan hukuman nyata untuk pohon proyek besar.Jawaban:
Gunakan argumen awalan, yaitu C-u C-c p funtuk dengan cepat membatalkan dan menemukan file dalam proyek. Saran dalam komentar tentang penggunaan
projectile-cache-current-file
secara teknis benar, tetapi ada kait padafind-file
yang secara otomatis memanggil ini pada setiap file baru yang dibuka. Itu akan menjadi solusi tercepat tanpa membatalkan cache yang ada.Namun, sepertinya masalah sebenarnya adalah butuh waktu terlalu lama untuk membangun kembali cache dengan melintasi pohon. Untuk ini, akan membantu jika ada sedikit lebih banyak informasi tentang lingkungan Anda. Secara default
projectile-indexing-method
diatur ke'native
pada windows, yang lebih memilih implementasi elispfind
karena lebih portabel. Kalau tidak, ia menggunakan'alien
metode, yaitugit ls
,find
dll. Jika Anda berada di linux metode alien diaktifkan secara default.Kalau tidak, Anda mungkin ingin mengejar lubang kelinci
projectile-get-repo-files
danprojectile-get-ext-command
. Mereka menentukan di mana proyektil mencari daftar file. Mungkin saja Anda dapat menimpanya dengan dir-local atau sejenisnya untuk memaksa metode pencarian yang lebih cepat.sumber
Ini tidak mempercepat cache file tetapi menyimpan langkah manual karena harus membatalkan cache basi (yang tidak mengandung file baru).
Proyektil secara otomatis membatalkan cache jika
/your/projectile/project/root/.projectile
file lebih baru dari file cache proyek.Pemeriksaan ini dilakukan setiap kali Anda mencoba mencari file di proyek menggunakan proyektil;
projectile-find-file
atauC-c p f
jika salah satu perintah yang melakukan ini, periksa dulu.- Dari
projectile.el
sumber - baris 575-579Jadi solusi adalah untuk
touch
yang.projectile
berkas ketika Anda memperbarui proyek. Sebagai contoh, Anda dapatalias
dengangit commit
,git pull
, dll untuk melakukansetelah melakukan apa pun yang Anda lakukan dengan
git
perintah.Jadi, jika seseorang dalam tim Anda menambahkan file baru ke proyek dan (dengan asumsi Anda menggunakan kontrol git untuk versi), Anda menggunakan tarikan git alias khusus Anda, cache akan dibatalkan secara otomatis ketika Anda melakukannya
projectile-find-file
di waktu berikutnya.sumber