Projectile ไม่แสดงไฟล์ทั้งหมดในโครงการ


12

หลังจากเยี่ยมชมไฟล์ที่เป็นส่วนหนึ่งของที่เก็บ git แล้ว Projectile ยอมรับการมีอยู่ของที่เก็บ git ของฉันเป็นโครงการ แต่จะแสดงเพียงหนึ่งไฟล์ (ไฟล์ปัจจุบัน) ว่าเป็นส่วนหนึ่งของโครงการ เมื่อฉันเยี่ยมชมไฟล์อื่น ๆ ในโครงการพวกเขากลายเป็นส่วนหนึ่งของโครงการครั้งละหนึ่ง

ฉันจะสร้างโปรเจ็กต์ใน Projectile ได้อย่างไรเพื่อให้พวกเขาได้รับรู้ถึงไฟล์ทั้งหมดในโปรเจ็กต์ทันที

บทเรียนทั้งหมดที่ฉันได้ค้นพบถือว่าคุณเข้าเยี่ยมชมไฟล์ภายในโครงการที่มีอยู่และ Projectile นั้นรู้ว่าไฟล์ใดที่มีโครงการ


ปรับปรุง

เมื่อฉันตั้งค่า Projectile ฉันใช้คำแนะนำต่อไปนี้ในเอกสาร Projectile:

เก็บเอาไว้

เนื่องจากการจัดทำดัชนีโครงการขนาดใหญ่นั้นไม่รวดเร็วอย่างแน่นอน (โดยเฉพาะใน Emacs Lisp) Projectile จึงรองรับการแคชไฟล์ของโครงการ การแคชถูกเปิดใช้งานโดยค่าเริ่มต้นเมื่อใดก็ตามที่มีการเปิดใช้การจัดทำดัชนีดั้งเดิม

หากต้องการเปิดใช้งานการแคชโดยไม่มีเงื่อนไขให้ใช้โค้ดตัวอย่างนี้:

(setq projectile-enable-caching t)

เนื่องจากฉันจะสำรวจโครงการใหญ่บางครั้งฉันจึงเพิ่มสิ่งนี้ลงในไฟล์ init ของฉันโดยหวังว่ามันจะช่วยเพิ่มประสิทธิภาพให้ฉันได้ ฉันไม่ทราบว่า Projectile จัดการการแคชอย่างไร แต่ในเวลาที่ฉันสันนิษฐานว่าครั้งแรกที่ฉันเข้าเยี่ยมชมโครงการต้นไม้โครงการจะถูกสำรวจและแคชจะถูกเติมด้วยไฟล์โครงการทั้งหมด ดูเหมือนว่าฉันคิดผิด

หลังจากที่ฉันตั้งprojectile-enable-cachingเป็นnilProjectile ก็สามารถค้นหาไฟล์ทั้งหมดในโครงการของฉัน ขอบคุณคำตอบและความคิดเห็นที่ติดตามของ alexurba ทำให้ฉันสามารถค้นหาปัญหาได้


คำถามนี้กว้างเกินไปและควรปิด มันไม่ใช่ตัวเลือกที่ดีสำหรับ SE โปรดตั้งคำถามเฉพาะเกี่ยวกับปัญหาเดียวที่คุณพบ ให้ข้อมูลตามบริบทที่จำเป็นสำหรับปัญหาเฉพาะ
Drew

4
ฉันคิดว่ามันเป็นคำถามที่ดีที่มี backstory มากเกินไป ฉันคิดว่าถ้ามันมุ่งเน้นไปที่บรรทัดนี้: "ฉันจะตั้งโครงการใน Projectile ได้อย่างไรเพื่อที่พวกเขาจะได้ตระหนักถึงไฟล์ทั้งหมดในโครงการทันที" มันจะดี
Jordon Biondo

3
@JordonBiondo: ยิ่งเน้นมันก็ยิ่งมีประโยชน์มากขึ้น (สำหรับ SE) แน่นอนว่าใครคนหนึ่งสามารถตั้งเป้าหมายเพื่อให้ได้ระดับโฟกัสที่น้อยที่สุดเพื่อที่จะไม่สามารถปิด / ปิดได้ แต่ก็ควรจะทำได้ดีกว่านั้น ฉันคาดเดาว่าอาจมีคำถามที่ดีอยู่ 3 หรือ 4 ข้อบางที่และทุกคนจะได้รับประโยชน์หากมีการโพสต์แยกต่างหากอย่างมุ่งเน้น
ดึง

คุณใช้แพลตฟอร์มใด (Windows, Mac, Linux) ดูเหมือนว่าการจัดทำดัชนีของไฟล์โครงการจะดำเนินการอย่างพึ่งพา
alexurba

1
ฉันกำลังทดสอบสิ่งนี้บน Linux (RHEL 6.5) แต่ฉันต้องการใช้กับแพลตฟอร์มทั้งหมด
nispio

คำตอบ:


8

เมื่อเปิดใช้งานแล้วจะprojectileทำงานนอกกรอบสำหรับโครงการคอมไพล์ เพื่อเปิดใช้งานรวมถึง

(projectile-global-mode)

ในการกำหนดค่า Emacs ของคุณ (หรือเริ่มต้นprojectile-mode) ด้วยตนเอง

จากนั้นprojectile-find-file(การเชื่อมโยงคีย์เริ่มต้นคือC-c p f) ทำงานเหมือนfind-fileแต่จะดำเนินการกับไฟล์ทั้งหมดในไดเรกทอรีย่อยของไดเรกทอรีหลักของโครงการ (โดยที่เป็น.gitไดเรกทอรี)

หากคุณต้องการหลีกเลี่ยงการคอมไพล์คุณสามารถสร้างไฟล์.projectileในรูทโปรเจ็กต์ได้ สิ่งนี้จะมีผลเช่นเดียวกันและสามารถใช้เพื่อข้ามไฟล์หรือไดเรกทอรีบางอย่าง (คล้ายกับ.gitignore)

ข้อมูลเพิ่มเติมสามารถพบได้ในหน้า GitHub ของโครงการ (ซึ่งยาวเกินไปอ่านทั้ง) โดยเฉพาะอย่างยิ่งผมขอแนะนำให้ไปอ่านหัวข้อเกี่ยวกับและIdohelm

แก้ไข:

projectile-indexing-methodตรวจสอบค่าของ บน Linux นี้ควรจะเป็นalienและความคุ้มค่าของการที่ควรจะเป็นprojectile-enable-cachingnil


ตรงนี้เป็นส่วนที่ไม่ได้ผลสำหรับฉัน เมื่อฉันเรียกใช้projectile-find-fileไฟล์ที่อยู่ในรายการเท่านั้นคือไฟล์ที่ฉันได้เยี่ยมชมแล้วถึงแม้ว่าไดเรกทอรีโครงการจะมีอีกมากมาย
nispio

@nispio บนหน้าโครงการจะกล่าวถึงวิธีการจัดทำดัชนีและการแคชที่แตกต่างกัน คุณสามารถตรวจสอบค่าของprojectile-indexing-method( C-h v projectile-indexing-method) ได้ไหม? บน Linux alienนี้ควรจะเป็น
alexurba

และควรจะเป็นprojectile-enable-caching nil
alexurba

2
คุณพบมัน ผมตั้งprojectile-enable-cachingไปnilและจะเริ่มทำงานวิธีที่ผมคาดหวัง ฉันรู้ว่าฉันสามารถตั้งค่ากลับเป็นtและจากนั้นใช้C-u C-c p fเพื่อทำให้แคชใช้ไม่ได้projectile-find-fileและนั่นก็ใช้งานได้เช่นกัน ฉันสับสนว่าทำไมฉันต้องทำให้แคชใช้ไม่ได้หากโครงการไม่เคยถูกแคชมาก่อน แต่ฉันจะบันทึกไว้สำหรับคำถามอื่นบางที
nispio

ยอดเยี่ยมมาก แม้ว่าฉันไม่แน่ใจว่าจะเกิดอะไรขึ้นภายใต้ Windows ซึ่งไม่มีการสร้างดัชนี 'คนต่างด้าว' แต่นั่นอาจเป็นเรื่องของคำถามที่สองเมื่อคุณพบเจอ
alexurba
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.