อย่าสร้างเฟรมด้วย ediff


14

โดยทั่วไปแล้วฉันไม่ชอบกรอบ ตอนนี้ฉันกำลังใช้

(setq ediff-window-setup-function #'ediff-setup-windows-plain)

เพื่อให้แน่ใจว่าediffจะไม่สร้างเฟรมเมื่อเริ่มต้น

อย่างไรก็ตามคำสั่งบางอย่างเช่นediff-show-registryยังคงเปิดเฟรมใหม่

มีวิธีใดบ้างที่ฉันสามารถปิดใช้งานการสร้างเฟรมได้อย่างสมบูรณ์ediffหรือไม่


วิธีการเกี่ยวกับการปรับเปลี่ยนediff-skip-unsuitable-framesหรือแสดงความคิดเห็นที่ออกมาทั้งหมดภายในediff-show-registry- เช่นออกความคิดเห็น: (ediff-skip-unsuitable-frames 'ok-unsplittable)?
กฎหมาย

5
ในขณะที่คุณอยู่ที่นี่ให้ลองค้นหาแหล่งที่มาของediff- ครอบครัวของห้องสมุดเพื่อหา (make-frameและคุณจะพบสถานที่บางแห่งที่ต้องแก้ไขเพื่อให้เหมาะกับความต้องการของคุณ คำขอของคุณมีเหตุผลอย่างแน่นอนและจะทำบุญ (ในความคิดของฉัน) คำขอคุณลักษณะให้กับผู้เขียนและ / หรือทีม Emacs - คนส่วนใหญ่จะถือว่าediff-setup-windows-plainควรใช้ทั่วกระดานโดยไม่มีmake-frameข้อยกเว้นต่างๆ
กฎหมาย

คำตอบ:


3

มีกริยาภายในเป็นที่เรียกว่าediff-init.el ediff-window-display-pเมื่อฉันนิยามใหม่ (หลังจากโหลด ediff) อย่างเช่นทุกอย่างทำงานในกรอบเดียวรวมถึงฟังก์ชั่นที่คุณพูดถึงว่าเป็นปัญหา:

(defun ediff-window-display-p () nil)

ผมไม่เห็นด้วยกับ @lawlist ว่านี่เป็นคำขอคุณลักษณะที่ดี - ediff-window-setup-functionเพื่อแก้ไข


2
สิ่งนี้อาจจะเขียนได้ดีกว่า(advice-add 'ediff-window-display-p :override #'ignore)ซึ่งสามารถย้อนกลับได้ง่ายขึ้นด้วยadvice-remove(รวมถึงไม่จำเป็นต้องโหลด ediff ก่อน)
npostavs

@npostavs ยอดเยี่ยม! ขอบคุณสำหรับรหัสที่ชาญฉลาด!
cyberbisson

ฉันลองสิ่งนี้ แต่มันทำให้ ediff หยุดใช้ฟังก์ชั่นการตั้งค่าหน้าต่างแบบกำหนดเองของฉัน
tboyce12

@ tboyce12 สับสน ... ทำไมคุณมีฟังก์ชั่นตั้งค่าหน้าต่างที่กำหนดเองถ้าคุณไม่ต้องการให้มีหน้าต่างใหม่ (เช่นเฟรม) แสดง? ฟังก์ชั่นทำอะไร?
cyberbisson

ฉันต้องการหน้าต่างใหม่ แต่ไม่ใช่เฟรมใหม่ ค่าเริ่มต้นediff-setup-windows-plainจะอยู่เหนือกรอบทั้งหมด - ฉันต้องการเปิดหน้าต่าง "บริบท" ของฉัน (เช่นโน้ตและไฟล์อื่น ๆ ) ดังนั้นฉันจึงเขียนฟังก์ชั่นการตั้งค่าหน้าต่างแบบกำหนดเอง (ใช้ display-buffer ที่กำหนดเองที่ขับเคลื่อนโดย ace-window เพื่อเลือกตำแหน่งที่จะแยก windows และแสดง buffer ใหม่) ดูเหมือนว่าเมื่อ Ediff บู๊ตขึ้นมามันจะตรวจสอบสิ่งนี้ediff-window-display-pและหากเป็นเท็จให้ข้ามฟังก์ชันการตั้งค่าและใช้งานหน้าต่างที่กำหนดเองediff-setup-windows-plainไป ดังนั้นสำหรับการตั้งค่าแบบกำหนดเองฉันจะหลีกเลี่ยงediff-show-registryหรือเขียนคำสั่งที่กำหนดเอง
tboyce12
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.