Helm swoop ในไฟล์โครงการทั้งหมด (ไม่ใช่แค่บัฟเฟอร์ปัจจุบัน)


15

ดังนั้นฉันจึงต้องการhelm-swoopดูไฟล์ทั้งหมดในโครงการไม่ใช่เฉพาะชุดบัฟเฟอร์เปิดปัจจุบัน

นี่คือเพื่อให้ฉันสามารถใช้ swoop เพื่อค้นหาสิ่งที่เกิดขึ้นทั้งหมดในโครงการทำเครื่องหมายคนที่เกี่ยวข้องแล้วแก้ไขพวกเขา (ในโหมดแก้ไข helm swoops)

ฉันรู้สึกว่าอาจมีวิธีที่สะอาดในการทำเช่นนี้กับ Helm / Helm โฉบ แต่นี่คือความพยายามของฉันที่จะคิดผ่านทางแก้ปัญหา:

  1. รวบรวมชื่อไฟล์จากกระสุนปืน
  2. สร้างรายการบัฟเฟอร์จากรายการชื่อไฟล์
  3. ทำรูทีนเดียวกันกับ helm-multi-swoop-all นอกเหนือจากการใช้รายการบัฟเฟอร์ใหม่นี้

(projectile-current-project-files)ดูเหมือนว่าจะให้รายชื่อไฟล์ที่ฉันกำลังมองหา

ดังนั้นhelm-multi-swoop-allดูเหมือนว่ามันจะค่อนข้างง่ายในการคัดลอกแล้วปรับแต่ง

(defun helm-multi-swoop-all (&optional $query)
  (interactive)
  "Apply all buffers to helm-multi-swoop"
  (cond ($query
         (setq helm-multi-swoop-query $query))
        (mark-active
         (let (($st (buffer-substring-no-properties
                     (region-beginning) (region-end))))
           (if (string-match "\n" $st)
               (message "Multi line region is not allowed")
             (setq helm-multi-swoop-query
                   (helm-swoop-pre-input-optimize $st)))))
        ((setq helm-multi-swoop-query
               (helm-swoop-pre-input-optimize
                (funcall helm-swoop-pre-input-function))))
        (t (setq helm-multi-swoop-query "")))
  (helm-multi-swoop--exec nil
                          :$query helm-multi-swoop-query
                          :$buflist (helm-multi-swoop--get-buffer-list)))

เพียงแค่แทนที่การเรียกไปยังสายhelm-multi-swoop--get-buffer-listที่ให้รายชื่อของบัฟเฟอร์โดยใช้รายการขีปนาวุธ

แต่ตอนนี้ฉันติดอยู่นิดหน่อย ฉันไม่แน่ใจว่าจะสร้างรายการบัฟเฟอร์เพื่อป้อนข้อมูลลงใน helm-swoop จากชื่อไฟล์ชุดหนึ่งได้อย่างไร

ฉันไม่สามารถช่วยได้ แต่คิดว่ามันมีวิธีที่ง่ายกว่าในการทำสิ่งนี้ให้สำเร็จบางทีอาจไม่มีฟังก์ชั่นที่กำหนดเอง


1
นี่เป็นปัญหาที่อาจเกิดขึ้น สมมติว่าคุณต้องการโฉบโครงการขนาดใหญ่สำหรับ "abc" คุณต้องการเปิดบัฟเฟอร์ไฟล์สำหรับไฟล์ทุกไฟล์ที่คุณแสดงตัวอย่างหรือไม่? คุณอาจท้ายด้วยบัฟเฟอร์พิเศษสิบหรือยี่สิบที่คุณไม่ต้องการ ฉันขอแนะนำให้ใช้helm-projectile-ackแทน
PythonNut

2
ใช่ฉันไม่คิดว่าจะใช้สิ่งนี้ในโครงการขนาดใหญ่ ฉันก็หวังว่าจะปิดบัฟเฟอร์ไฟล์ที่เปิดเมื่อเสร็จสิ้นด้วยรูทีนนี้
Mike McFarland

นอกจากนี้ helm-projectile-ack (หรือ ag) เกือบจะเป็นสิ่งที่ฉันกำลังมองหายกเว้นฉันต้องการแก้ไขบรรทัด (เช่น helm swoop allow)
Mike McFarland

helm-swoopฉันไม่ได้ใช้จริง ทำhelm-projectile-grepแล้วF3 M-x wgrep-modeทำให้ "แก้ไขได้" หรือไม่?
PythonNut

ขอบคุณฉันไม่ทราบโหมด wgrep Helm-projectile-grep กำลังดึงไฟล์ที่ถูกข้ามสำหรับฉัน แต่ helm-projectile-ack ทำงานได้ดีกับ wgrep อย่างน้อยก็ทำงานได้หลังจากถอนการติดตั้ง wgrep ที่มาจาก melpa และใช้ที่นี่แทน
Mike McFarland

คำตอบ:


7

ต่อไปนี้การแสดงความคิดเห็นที่น่าสนใจจาก PythonNut ผมติดตั้งhelm-agและวิ่งhelm-projectile-agจากกระสุนปืนC-c p s sแพคเกจผ่าน C-c C-eจากนั้นผมก็เปลี่ยนไปโหมดที่มีการแก้ไข ฉันเปลี่ยนไม่กี่บรรทัดจากนั้นกดC-c C-cและสิ่งเหล่านี้จะถูกบันทึกเป็นไฟล์ที่เกี่ยวข้อง

วิธีนี้ใช้ได้ผล แต่ในปัจจุบันหนึ่ง infellicity คือมันบันทึกแต่ละไฟล์ "ที่ตรงกัน" หลาย ๆ ครั้งโดยไม่คำนึงว่ามีการเปลี่ยนแปลงหรือไม่ ผมยกนี้เป็นกระสุนปืน #

นอกเหนือจากที่ฉันคิดว่ามันจะทำงานได้ดีสำหรับความต้องการที่กล่าวถึงในคำถามและ "ไม่มีฟังก์ชั่นที่กำหนดเอง" :-)


นี่คือสิ่งที่ฉันได้ตัดสินเช่นกัน ปัญหาเดียวที่ฉันมีคือบางครั้งไฟล์ที่ละเว้นโดย git / projectile จะไม่ถูกละเว้นในผลการค้นหา ag ยังไม่มีเวลาขุดลงไป
Mike McFarland

เคล็ดลับ: helm-git-grepควรเร็วกว่าhelm-projectile-ag
PlagueHammer

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