Projectile không hiển thị tất cả các tệp trong dự án


12

Sau khi truy cập một tệp là một phần của kho git, Projectile thừa nhận sự tồn tại của kho git của tôi như một dự án, nhưng nó chỉ liệt kê một tệp (tệp hiện tại) là một phần của dự án. Khi tôi truy cập các tệp khác trong dự án, chúng trở thành một phần của dự án một lần.

Làm cách nào để tạo dự án trong Projectile để chúng nhận biết ngay lập tức tất cả các tệp trong dự án?

Tất cả các hướng dẫn mà tôi đã tìm thấy cho đến nay đều cho rằng bạn đang truy cập một tệp trong một dự án hiện có và Projectile biết các tệp mà dự án đó chứa.


Cập nhật

Khi tôi thiết lập Projectile, tôi đã đưa ra gợi ý sau trong tài liệu Projectile:

Bộ nhớ đệm

Vì việc lập chỉ mục cho một dự án lớn không thực sự nhanh chóng (đặc biệt là trong Emacs Lisp), Projectile hỗ trợ lưu trữ các tệp của dự án. Bộ nhớ đệm được bật theo mặc định bất cứ khi nào lập chỉ mục gốc được bật.

Để bật bộ đệm ẩn vô điều kiện, hãy sử dụng đoạn mã này:

(setq projectile-enable-caching t)

Vì thỉnh thoảng tôi sẽ điều hướng một số dự án lớn, tôi đã thêm nó vào tệp init của mình với hy vọng rằng nó sẽ giúp tôi tăng hiệu suất. Tôi không biết Projectile quản lý bộ nhớ đệm của nó như thế nào, nhưng tại thời điểm tôi giả định rằng lần đầu tiên tôi truy cập vào một dự án, cây dự án sẽ được khám phá và bộ đệm sẽ được điền vào tất cả các tệp dự án. Có vẻ như giả định của tôi là sai.

Sau khi tôi đặt projectile-enable-cachingthành nil, Projectile có thể tìm thấy tất cả các tệp trong dự án của tôi. Nhờ câu trả lời và bình luận tiếp theo của alexurba , tôi đã có thể tìm ra vấn đề.


Câu hỏi này quá rộng, và nên được đóng lại. Nó không phải là một ứng cử viên tốt cho SE. Vui lòng đặt một câu hỏi cụ thể về một vấn đề cụ thể, duy nhất bạn đang gặp phải. Cung cấp thông tin theo ngữ cảnh khi cần thiết cho vấn đề cụ thể.
vẽ

4
Tôi nghĩ rằng đó là một câu hỏi hay mà chỉ có quá nhiều chuyện lạc hậu. Tôi nghĩ rằng nếu nó được tập trung vào dòng này: "Làm thế nào để tôi thiết lập các dự án trong Projectile để chúng nhận biết ngay lập tức tất cả các tệp trong dự án.", Điều đó sẽ tốt.
Jordon Biondo

3
@JordonBiondo: Càng tập trung, nó càng hữu ích (đối với SE). Chắc chắn người ta có thể nhắm đến một mức độ tập trung tối thiểu, để nó sẽ không bị đóng / đóng. Nhưng người ta có thể làm tốt hơn thế. Tôi đoán rằng có lẽ có 3 hoặc 4 câu hỏi hay trong đó, ở đâu đó, và mọi người sẽ có lợi nếu chúng được đặt riêng, theo cách tập trung.
vẽ

Bạn đang sử dụng nền tảng nào (Windows, Mac, Linux)? Việc lập chỉ mục các tệp dự án dường như được triển khai nền tảng một cách phụ thuộc.
alexurba

1
Tôi đang thử nghiệm điều này trên Linux (RHEL 6.5), nhưng tôi muốn có thể sử dụng nó trên tất cả các nền tảng.
nispio

Câu trả lời:


8

Sau khi được kích hoạt, projectilehoạt động vượt trội cho các dự án git. Để kích hoạt bao gồm

(projectile-global-mode)

trong cấu hình Emacs của bạn (hoặc bắt đầu projectile-mode) bằng tay.

Sau đó projectile-find-file(ràng buộc khóa mặc định C-c p f) hoạt động giống như find-file, nhưng sẽ hoạt động trên tất cả các tệp trong thư mục con của thư mục chính của dự án (nơi chứa .gitthư mục).

Nếu bạn muốn tránh git, bạn có thể thay thế tạo một tệp .projectiletrong thư mục gốc của dự án. Điều này sẽ có tác dụng tương tự và có thể được sử dụng để bỏ qua các tệp hoặc thư mục nhất định (tương tự .gitignore).

Nhiều thông tin hơn có thể được tìm thấy trên trang github của dự án (quá dài để đọc). Tôi đặc biệt khuyên bạn nên đọc các phần về Idohelm.

Biên tập:

Kiểm tra giá trị của projectile-indexing-method. Trên Linux, điều này nên alienvà giá trị của nó projectile-enable-cachingphải là nil.


Đây chính xác là phần không hoạt động đối với tôi. Khi tôi chạy projectile-find-file, các tệp duy nhất được liệt kê là những tệp mà tôi đã truy cập, mặc dù thư mục dự án chứa nhiều tệp khác.
nispio

@nispio, trên trang dự án, nó đề cập đến các phương pháp lập chỉ mục và bộ đệm khác nhau. Bạn có thể kiểm tra giá trị của projectile-indexing-method( C-h v projectile-indexing-method) không? Trên Linux, điều này nên được alien.
alexurba

projectile-enable-cachingnên được nil.
alexurba

2
Bạn đã tìm thấy nó. Tôi đặt projectile-enable-cachingđể nilvà nó bắt đầu làm việc như thế nào tôi mong đợi. Biết rằng, tôi đã có thể thiết lập lại tvà sau đó sử dụng C-u C-c p fđể vô hiệu hóa bộ đệm cho projectile-find-filevà nó cũng đang hoạt động. Tôi bối rối tại sao tôi cần phải vô hiệu hóa bộ đệm nếu dự án chưa bao giờ được lưu vào bộ đệm trước đó, nhưng tôi sẽ lưu nó cho một câu hỏi khác, có lẽ.
nispio

Thật tuyệt khi nó hoạt động. Mặc dù vậy, tôi không chắc điều gì sẽ xảy ra trong Windows nơi không có lập chỉ mục 'người ngoài hành tinh'. Nhưng có lẽ đó thực sự có thể là chủ đề của câu hỏi thứ hai khi bạn gặp phải nó.
alexurba
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.