Proyektilnya cukup bagus, tetapi saya merasa sulit untuk menyalakannya hanya di tempat-tempat yang efektif.
Seperti yang saya pahami, dua pilihan standar adalah untuk mengaktifkannya secara manual, seperti dalam mode kait utama, atau untuk mengaktifkannya secara global projectile-global-mode
. Saya menemukan yang pertama tidak cukup luas; Saya ingin dapat mengakses perintah proyektil saat mengunjungi file apa pun dalam suatu proyek, terlepas dari jenisnya. Tetapi mengaktifkan mode secara global terlalu luas; itu akan dihidupkan bahkan ketika mengunjungi seperti nyata direktori non-proyek sebagai direktori rumah saya, /tmp
, /etc
, dll
Apakah ada cara standar untuk mengaktifkan projectile-mode
hanya ketika mengunjungi sebuah file yang hidup dalam sebuah proyek yang sebenarnya, sebagaimana yang ditentukan oleh, katakanlah, memeriksa keberadaan .git
, .svn
, dll, direktori dalam beberapa direktori leluhur file saat ini?
sumber
.git
,.svn
... harus menjadi default. Mungkin Anda memilikiprojectile-require-project-root
pengaturan untuknil
.t
. Tetapi mode masih diaktifkan/etc
misalnya.projectile-find-files
direktori non-proyek seperti itu, Proyektil hanya memberi Anda pesan "Anda tidak ada dalam proyek". Apakah Anda yakin menjalankan perintah yang benar?Projectile[etc]
di baris mode ketika saya membuka/etc
. Ini membutuhkan real estate baris mode yang berharga, dan saya lebih suka tidak mengaktifkan mode sama sekali di direktori non-proyek.Jawaban:
Jadi, ini tentang sang modeline. Anda dapat mengatur
projectile-mode-line
untuk memeriksa apakah Anda berada di root proyek; jika demikian, ditampilkan dalam modeline, jika tidak menampilkan apa-apa:sumber
default-directory
. Saya akan membuat PR.*Messages*
buffer, karenaprojectile-project-root
menimbulkan pengecualian jika dipanggil dari direktori non-proyek. Sehingga panggilan fungsi perlu dibungkus dengancondition-case
, dan jugaprojectile-require-project-root
harus terikatt
.