ฉันจะสร้างบัฟเฟอร์ dired ที่แสดงรายการไฟล์ที่เปิดอยู่ทั้งหมดได้อย่างไร


9

ฉันมีกลไกสำหรับการเขียนรายการลงดิสก์จากdiredบัฟเฟอร์ แต่น่าเสียดายที่ไฟล์ที่ฉันแพตช์นั้นเต็มไปด้วยระบบไฟล์ ฉันจะสร้างdiredบัฟเฟอร์จากไฟล์ที่เปิดอยู่ทั้งหมดได้อย่างไร



@ ดึงฉันจะเถียงไม่ซ้ำกันอย่างน้อยไม่เคร่งครัด คำถามนี้จะกลายเป็น 'ฉันจะดูรายการบัฟเฟอร์ที่เปิดทั้งหมดที่ผูกไว้กับไฟล์ได้อย่างไร'
Sean Allred

@Drew เฉพาะ:(sort (remove nil (mapcar #'buffer-file-name (buffer-list))) #'string<)
Sean Allred

ข้อมูลที่เพิ่มเข้ามานั้นbuffer-listมีอยู่ (ซึ่งฉันรู้) และbuffer-file-nameจะส่งกลับnilเมื่อไม่มีไฟล์ (ซึ่งฉันไม่รู้) ข้อมูลที่ซ้ำกันที่เสนอของคุณไม่มีข้อมูลนี้หรือมีความต้องการ
Sean Allred

1
@ ดึงจากประสบการณ์ของฉันการพยายามทำให้ทุกคำถามเป็นโมดูลให้ได้มากที่สุดนั้นเป็นข้อเสียมากกว่าจะได้เปรียบ มันลดประโยชน์กับบุคคลที่สะดุดเมื่อนี้จาก Google และจะไม่ลงทะเบียนเพียงเพราะพวกเขาพวกเขา Google'd กรณีการใช้งาน ถ้าฉันต้องการผ่านคำถามทุกข้อเกี่ยวกับ TeX.SE และคำถามที่มีคำตอบที่มีแนวคิดเดียวกันการกลั่นกรองจะกลายเป็นฝันร้ายและไซต์จะพุ่งเข้าสู่ความมืด
ฌอน Allred

คำตอบ:


12

diredคำสั่งรับรายชื่อของไฟล์ชื่อเป็นอาร์กิวเมนต์ เพียงสร้างและส่งผ่าน:

(dired
 (cons
  "Open Files"
  (sort (remove nil (mapcar #'buffer-file-name (buffer-list)))
       #'string<))) 

ฉันคิดว่าสิ่งนี้พลาดไปหนึ่งไฟล์: เมื่อคุณส่งรายการเพื่อให้องค์ประกอบแรกในรายการนั้นถูกใช้เป็นชื่อไดเรกทอรีส่วนที่เหลือเป็นไฟล์ วิธีนี้:(dired (cons "*Open Files*" (sort (remove nil (mapcar #'buffer-file-name (buffer-list))) #'string<)))
ลูกัส

เพียงแค่ทราบ: สิ่งนี้จะผิดพลาดหากมีบัฟเฟอร์ที่เกี่ยวข้องกับไฟล์ที่ยังไม่ได้บันทึกลงดิสก์
Sean Allred

1

เพียงแค่ใส่รายการของสตริงลงในฟังก์ชัน dired ตัวอย่างเช่น:

(dired '("custom dired" ".emacs.d/init.el" "mydotfiles/.bashrc"))

แก้ไข

@ Malabarba คำตอบเป็นวิธีที่ดีที่สุดที่จะไป

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