После посещения файла, который является частью репозитория git, Projectile признает существование моего репозитория git как проекта, но перечисляет только один файл (текущий файл) как часть проекта. Когда я посещаю другие файлы в проекте, они становятся частью проекта по одному.
Как мне создавать проекты в Projectile, чтобы они сразу знали обо всех файлах в проекте?
Все учебники, которые я нашел до сих пор, предполагают, что вы посещаете файл в существующем проекте, и что Projectile знает, какие файлы содержит этот проект.
Обновить
Когда я настраивал Снаряд, я принял следующее предложение в документации Снаряда:
Кэширование
Поскольку индексация большого проекта не совсем быстра (особенно в Emacs Lisp), Projectile поддерживает кэширование файлов проекта. Кэширование включается по умолчанию всякий раз, когда включена собственная индексация.
Чтобы включить кэширование безоговорочно, используйте этот фрагмент кода:
(setq projectile-enable-caching t)
Поскольку я буду время от времени ориентироваться в некоторых крупных проектах, я добавил это в свой файл инициализации, надеясь, что это даст мне повышение производительности. Я не знаю, как Projectile управляет своим кэшированием, но в то время, когда я предполагал, что при первом посещении проекта будет исследовано дерево проекта, и кэш будет заполнен всеми файлами проекта. Похоже, что мое предположение было неверным.
После того, как я установил projectile-enable-caching
в nil
, Снаряд был в состоянии найти все файлы в моем проекте. Благодаря ответу alexurba и последующим комментариям я смог найти проблему.
источник
Ответы:
После активации
projectile
работает "из коробки" для проектов git. Для активации включитев вашей конфигурации Emacs (или запустить
projectile-mode
) вручную.Тогда
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
, в списке присутствуют только те файлы, которые я уже посетил, хотя каталог проекта содержит гораздо больше.projectile-indexing-method
(C-h v projectile-indexing-method
)? На Linux это должно бытьalien
.projectile-enable-caching
должно бытьnil
.projectile-enable-caching
вnil
и начал работать , как я ожидал. Зная это, я смог установить его обратно,t
а затем использоватьC-u C-c p f
для аннулирования кэша,projectile-find-file
и это тоже работает. Я запутался, почему мне нужно аннулировать кэш, если проект никогда не кэшировался ранее, но я оставлю это для другого вопроса, возможно.