Projectile не показує всі файли в проекті


12

Після відвідування файлу, що є частиною сховища git, Projectile визнає існування мого сховища git як проект, але він містить лише один файл (поточний файл) як частину проекту. Коли я відвідую інші файли проекту, вони стають частиною проекту по одному.

Як створити проекти в Projectile, щоб вони одразу дізналися про всі файли проекту?

Усі знайдені нами підручники припускають, що ви відвідуєте файл у межах існуючого проекту, і що Projectile знає, які файли містить цей проект.


Оновлення

Коли я встановлював снаряд, я взяв наступну пропозицію в документації на снаряд:

Кешування

Оскільки індексація великого проекту не дуже швидка (особливо в Emacs Lisp), Projectile підтримує кешування файлів проекту. Кешування ввімкнено за замовчуванням, коли ввімкнено нативне індексування.

Щоб увімкнути кешування беззастережно, використовуйте цей фрагмент коду:

(setq projectile-enable-caching t)

Оскільки я періодично переходжу до великих проектів, я додав це до свого файлу init, сподіваючись, що це дасть мені підвищення продуктивності. Я не знаю, як Projectile керує кешуванням, але в той час я припускав, що в перший раз, коли я відвідаю проект, дерево проекту буде вивчено, а кеш буде заповнений усіма файлами проекту. Схоже, моє припущення було неправильним.

Після того, як я встановив projectile-enable-cachingв nil, Снаряд був в змозі знайти всі файли в моєму проекті. Завдяки відповіді Алексурби та коментарям, які я надав , я зміг знайти проблему.


Це питання надто широке, і його слід закрити. Це не хороший кандидат в ПП. Будь ласка, поставте конкретне запитання щодо однієї конкретної проблеми. Надайте контекстну інформацію, необхідну для конкретної проблеми.
Дрю

4
Я думаю, що це гарне питання, яке просто має занадто багато історії. Я думаю, якби це було переосмислено на цьому рядку: "Як налаштувати проекти в Projectile, щоб вони одразу знали про всі файли проекту", було б добре.
Джордон Біондо

3
@JordonBiondo: Чим більше цілеспрямований, тим корисніший (для SE). Безумовно, можна націлитись на мінімальний фокус, щоб він не був закритим / закритим. Але треба вміти робити навіть краще, ніж це. Я здогадуюсь, що там, десь, є 3 або 4 хороших запитання, і кожен отримав би користь, якби вони ставилися окремо, зосереджено.
Дрю

Яку платформу ви використовуєте (Windows, Mac, Linux)? Індексація файлів проектів, схоже, реалізована платформою залежно.
алексурба

1
Я тестую це на Linux (RHEL 6.5), але хотів би мати можливість використовувати його на всіх платформах.
nispio

Відповіді:


8

Після активації projectileпрацює нестандартно для git-проектів. Для активації включ

(projectile-global-mode)

у вашій конфігурації (або запуску projectile-mode) Emacs вручну.

Тоді projectile-find-file(прив'язка ключа за замовчуванням є C-c p f) працює так само find-file, але буде діяти на всі файли у підкаталогах головного каталогу проекту (де знаходиться .gitкаталог).

Якщо ви хочете уникнути git, ви можете також створити файл .projectileу корені проекту. Це матиме такий же ефект і може використовуватися для ігнорування певних файлів чи каталогів (подібних до .gitignore).

Набагато більше інформації можна знайти на сторінці github проекту (який також занадто довгий для читання). Особливо рекомендую прочитати розділи про Idoта helm.

Редагувати:

Перевірте значення projectile-indexing-method. В Linux це повинно бути alien, і значення projectile-enable-cachingмає бути nil.


Це саме та частина, яка для мене не працює. Коли я запускаю projectile-find-file, перелічені лише файли - це ті, які я вже відвідав, хоча каталог проектів містить ще багато.
nispio

@nispio, на сторінці проекту згадуються різні методи індексації та кешування. Чи можете ви перевірити значення projectile-indexing-method( C-h v projectile-indexing-method)? В Linux це повинно бути alien.
алексурба

І projectile-enable-cachingповинно бути nil.
алексурба

2
Ви його знайшли. Я поставив projectile-enable-cachingв nilі почав працювати , як я очікував. Знаючи це, я зміг повернути його назад, tа потім використати C-u C-c p fдля визнання недійсним кешу, projectile-find-fileі це також працює. Мене бентежить, чому мені потрібно визнати недійсним кеш, якщо проект ніколи не був кешований, але я збережу це для іншого питання.
nispio

Чудово, що це працює. Хоча я не впевнений, що відбуватиметься в Windows, де "чужорідна" індексація недоступна. Але, можливо, це справді може стати предметом другого питання, коли ви натрапите на нього.
алексурба
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.