จะแยกไฟล์ออกจาก Projectile ได้อย่างไร?


39

ฉันใช้การตั้งค่า helm-projectile จากโหมโรงและมันได้รับการปรับปรุงอย่างมากในกระบวนการทำงานของฉัน ปัญหาเดียวที่เหลืออยู่คือไฟล์ที่สร้างขึ้นอัตโนมัติ (เช่นสร้างโดย CMake) ซึ่งแสดงขึ้นในระหว่างการดำเนินการ helm-grep และการดำเนินการที่คล้ายกัน

คำถาม : มีวิธีการแยกไฟล์ในแผนผังโฟลเดอร์โครงการจาก Projectile หรือไม่?

คำตอบ:


33

เมื่อมองไปที่กระสุนมันดูเหมือนว่าจะมีการปรับแต่งสี่อย่างเพื่อละเว้นไฟล์ / ไดเรกทอรีทั่วโลก ฉันกำลังแสดงรายการแต่ละรายการด้านล่างพร้อมเอกสารประกอบ

projectile-globally-ignored-files

รายการของไฟล์ที่ถูกโปรเจ็กต์ถูกข้ามไปทั่วโลก

projectile-globally-ignored-directories

รายการของไดเรกทอรีทั่วโลกโดย projectile ละเว้น

projectile-globally-ignored-file-suffixes

รายการส่วนต่อท้ายของไฟล์ที่ละเว้นทั่วโลกโดย projectile

projectile-globally-ignored-modes

รายการของนิพจน์ปกติสำหรับโหมดหลักที่ถูกละเว้นโดย projectile

หากบัฟเฟอร์ใช้โหมดหลักที่กำหนดไว้ Projectile จะไม่สนใจมันสำหรับฟังก์ชั่นที่ทำงานกับบัฟเฟอร์

โปรดทราบว่าสิ่งเหล่านี้เป็นตัวเลือกระดับโลกดังนั้นตัวอย่างเช่นในไดเรกทอรี projectile-globally-ignored-directoriesจะถูกละเว้นโดยไม่คำนึงถึงโครงการที่คุณกำลังทำงานด้วย ในการเพิกเฉยต่อไฟล์ / ไดเรกทอรีสำหรับโครงการใดโครงการหนึ่งคุณสามารถเพิ่ม.projectileไฟล์ลงในรูทของโครงการและเพิ่มพา ธ เพื่อละเว้นคำนำหน้าด้วยโครงการ-ดังต่อไปนี้

-/CMake

ดูเอกสารของprojectile-parse-dirconfig-file(หรือเอกสารของ projectile ) สำหรับข้อมูลเพิ่มเติม

แยกวิเคราะห์โครงการละเว้นไฟล์และส่งคืนไดเร็กทอรีเพื่อละเว้นและเก็บไว้

ค่าส่งคืนจะเป็นข้อเสียรถยนต์เป็นรายการไดเรกทอรีที่จะเก็บไว้และ cdr เป็นรายการไฟล์หรือไดเรกทอรีที่จะไม่สนใจ

สตริงที่เริ่มต้นด้วย +จะถูกเพิ่มในรายชื่อของ ไดเรกทอรีที่จะเก็บและสตริงที่เริ่มต้นด้วย -จะถูกเพิ่มในรายชื่อของ ไดเรกทอรีที่จะไม่สนใจ ความเข้ากันได้ย้อนหลังโดยไม่ต้องมี คำนำหน้าสตริงจะได้รับการสันนิษฐานว่าจะเป็นสตริงที่ไม่สนใจ


2
ฉันไม่สามารถprojectile-globally-ignored-file-suffixesทำงานได้ตามที่ฉันตั้งใจ สิ่งนี้ควรมีเพียงคำต่อท้าย (เช่น "o" สำหรับไฟล์ออบเจ็กต์), ไฟล์ glob (เช่น "* .o") หรืออย่างอื่นหรือไม่? ตรงไปตรงมาฉันได้ลองใช้คอมโบทุกอันที่ฉันสามารถนึกได้และมันก็ไม่ได้ผล
Bklyn

ฉันใช้ Scala กับ ensime และ projectile ได้กำหนด. imeime_cache ไว้เป็นละเว้นทั่วโลก อย่างไรก็ตาม Cc ph แสดง helm-projectile และแสดงไฟล์. imeime_cache ทั้งหมด ความคิดใด ๆ
Arne


7

อีกวิธีคือการใช้ag( the_silver_searcher ) หรือrg( ripgrep ) เพื่อสร้างไฟล์โครงการ นี่คือวิธีที่คุณสามารถทำได้ด้วยrg:

(setq projectile-enable-caching t)

;;; Default rg arguments
  ;; https://github.com/BurntSushi/ripgrep
  (when (executable-find "rg")
    (progn
      (defconst modi/rg-arguments
        `("--line-number"                     ; line numbers
          "--smart-case"
          "--follow"                          ; follow symlinks
          "--mmap")                           ; apply memory map optimization when possible
        "Default rg arguments used in the functions in `projectile' package.")

      (defun modi/advice-projectile-use-rg ()
        "Always use `rg' for getting a list of all files in the project."
        (mapconcat 'identity
                   (append '("\\rg") ; used unaliased version of `rg': \rg
                           modi/rg-arguments
                           '("--null" ; output null separated results,
                             "--files")) ; get file names matching the regex '' (all files)
                   " "))

      (advice-add 'projectile-get-ext-command :override #'modi/advice-projectile-use-rg)))

ในไดเรกทอรีโครงการของคุณระบุไฟล์ที่คุณต้องการละเว้น.gitignoreและคุณพร้อมที่จะไป :)

รหัสคือจากkaushalmodi ของ emacs การตั้งค่า


2

ค้นหาที่ไม่เคารพ dirs / files:

  1. ติดตั้งack(ทางเลือกสำหรับ grep ฉันติดตั้งผ่าน homebrew)

  2. ใส่--ignore-caseใน~.ackrcไฟล์ของคุณ(สมมติว่าคุณต้องการละเว้นกรณีและปัญหา)

  3. ผูกไว้helm-projectile-ackกับกุญแจ ฉันทำสิ่งนี้ใน emacs ของฉันผ่าน:

(use-package helm
  ...
  :bind (...
         ("C-c p s a" . helm-projectile-ack)
        )
  ...
)
  1. สร้าง.projectileไฟล์ เช่น,
-.dot
-.jcs
-.svg
-.txt

ใช้

C-c p s a     ;; search that respects .projectile ignore

หรือ

C-c s p g     ;; search everything
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.