มีไลบรารีสำหรับฟิลด์อินพุตใน Emacs หรือไม่?


10

มีโหมด Emacs อยู่สองสามรูปแบบ (คล้าย): ส่วนต่อประสานที่กำหนดเองเป็นหนึ่งในนั้นโหมดข้อความ (อ่าน: ส่วนหัวของมัน) เป็นอีกโหมดหนึ่ง มีมากขึ้นของพวกเขา แต่น่าเสียดายที่ไม่ได้คล้ายกันมาก โดย "แบบฟอร์ม" ฉันหมายถึงบัฟเฟอร์ที่มีส่วนอ่านอย่างเดียวและสถานที่ที่กำหนดให้ใส่ข้อความ มันอาจจะมีหรือไม่มีปุ่ม (มันก็น่าจะยอมรับได้C-c C-cว่าเป็นกุญแจยืนยัน / ส่งมอบโดยไม่คำนึงถึงการมีปุ่มตกลง )

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

(ฉันคิดว่าสิ่งที่ฉันควรทำในกรณีหลังคือ (1) ตั้งค่าบางส่วนของบัฟเฟอร์แบบอ่านอย่างเดียว (2) เตรียมโหมดหลักพิเศษเพื่อให้เช่นTABและS-TABสลับระหว่าง "ฟิลด์" และ (3) อาจใช้บางอย่างเช่น Icicles หรือ Helm เพื่อเติมข้อความอัตโนมัติ)


1
เปลี่ยนชื่อของคุณเพื่อพูดฟิลด์ป้อนข้อมูล แบบฟอร์มมีความหมายพิเศษมากใน elisp ซึ่งอาจนำไปสู่ความสับสน
Malabarba

2
และใช่มีห้องสมุดวิดเจ็ตในตัว แต่ฉันไม่รู้อะไรเกี่ยวกับมัน
Malabarba

@ Malabarba: ขอบคุณนั่นอาจเป็นถ้อยคำที่ดีกว่า
mbork

(แม้ว่า Emacs เองจะใช้คำว่า "form" ในความหมายนี้ - ดูวิดเจ็ตที่กล่าวถึงในคำตอบของ Drew!)
mbork

คำตอบ:


8

ดูไลบรารีcus-edit.elและwid-edit.el(และไลบรารีระดับบนสุดcustom.elและwidget.elและคอมโพเนนต์ไลบรารีที่เกี่ยวข้อง) ซึ่งรวมอยู่ใน GNU Emacs อดีตใช้ประโยชน์จากหลัง หลังกำหนดแบบฟอร์มรายการรายการพื้นฐาน (และไม่ให้ขั้นพื้นฐาน) ที่เรียกว่า " วิดเจ็ต " ในลำดับชั้น คุณสามารถใช้วิดเจ็ตและฟังก์ชันที่กำหนดไว้ล่วงหน้าเหล่านี้ในไลบรารีเพื่อสร้างวิดเจ็ตและประเภทวิดเจ็ตของคุณเอง

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

(สองไลบรารีรองส่วนขยายสำหรับสิ่งนี้คือcus-edit+.elและwid-edit+.elพวกเขายังนำเสนอตัวอย่างการใช้งานบางอย่าง)

มีคู่มือข้อมูลสำหรับวิดเจ็ตแจกจ่ายโดย GNU Emacs ชื่อ " The Emacs Widget Library "

นอกจากนี้ยังมีห้องสมุดforms.elรวมอยู่ใน GNU Emacs แต่ฉันไม่คุ้นเคย บางทีคนอื่นมีสิ่งที่มีประโยชน์ที่จะพูดเกี่ยวกับมัน มีคู่มือสำหรับแบบฟอร์มแจกจ่ายให้กับ GNU Emacs ที่มีชื่อว่า " Forms Mode "


2
เพิ่มเติมเล็กน้อยใน forms.el: stackoverflow.com/questions/10166600/…
phils

1
@ ดึง: ขอบคุณสำหรับคำตอบของคุณ! คุณช่วยอธิบายความสัมพันธ์ระหว่าง\(custom\|widget\).elและ\(cus\|wid\)-edit.elเล็กน้อยได้หรือไม่? (require 'widget) (eval-when-compile (require 'wid-edit))ผมพบว่าโดยเฉพาะอย่างยิ่งในส่วนนี้จากวิดเจ็ตไม่สามารถเข้าใจได้ด้วยตนเอง:
mbork

1
ก่อนอื่นฉันไม่มีความเชี่ยวชาญในเรื่องนี้ เมื่อครั้งที่ฉันต้องการที่จะเปลี่ยนแปลงบางสิ่งบาง WRT ปรับแต่งผมจุ่มลงไปและcus-edit.el wid-edit.elไฟล์อื่น ๆ ที่คุณพูดถึงเป็นไฟล์ระดับบนสุด *-edit.elมีไฟล์รหัสที่ผมสนใจใน Dunno มากขึ้นกว่าที่. ขอโทษ ความยากลำบากที่แท้จริงคือโค้ดของตัวเองซึ่งใช้รูปแบบกึ่ง OOP เฉพาะที่ไม่ให้ยืมตัวเองได้ดีกับเอกสารของ Emacs (เพื่อให้มันอ่อน) หรือดีบักเกอร์ของ Emacs คุณสามารถตรวจสอบด้วยตัวเองหรือพยายามติดต่อผู้เขียน (ขอให้โชคดี!) บางทีคนอื่น ๆ ที่นี่จะได้รับความช่วยเหลือ
Drew
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.