ฉันจะบังคับให้บัฟเฟอร์เฉพาะเปิดในหน้าต่างใหม่ได้อย่างไร


12

เมื่อคอมมิชชันการเปลี่ยนแปลงใน Magit มันมีประโยชน์ที่จะเปิดมุมมอง diff ขณะที่เพิ่มรายละเอียดเกี่ยวกับการคอมมิท

ใน Magit เราเห็น diff ใน*magit ..*บัฟเฟอร์ เมื่อคุณกดปุ่มccในขณะที่เคอร์เซอร์อยู่ในไฟล์Staged Magit คอมมิทบัฟเฟอร์.. COMMIT_EDITMSGจะปรากฏขึ้น โดยค่าเริ่มต้นบัฟเฟอร์ใหม่นี้แทนที่*magit ..*บัฟเฟอร์ที่แสดงการกระทำที่แตกต่าง

คำถาม - ฉันจะทำให้.. COMMIT_EDITMSGบัฟเฟอร์เปิดในหน้าต่างใหม่ได้อย่างไร (ใช้หน้าต่างอื่นอีกครั้งหรือสร้างหน้าต่างใหม่หากเฟรมมีเพียง 1 หน้าต่างเพื่อเริ่มต้นด้วย) เพื่อให้ฉันเห็นทั้ง*magit ..*และ.. COMMIT_EDITMSGบัฟเฟอร์ได้อย่างไร


ที่เกี่ยวข้อง: emacs.stackexchange.com/q/327/50
Malabarba

คำตอบ:


17

มันเป็นไปได้ที่จะกำหนดค่าว่าบัฟเฟอร์เปิด (ในเฟรมเดียวกัน / หน้าต่างหรือกรอบแตกต่างกัน / หน้าต่าง) display-buffer-alistโดยใช้ อ้างอิงถึงข้อมูลอ้างอิงด้านล่างเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับตัวแปรนี้

วิธีการแก้

เราจำเป็นต้องบอกให้ emacs เปิดบัฟเฟอร์ที่ลงท้ายด้วยCOMMIT_EDITMSGในหน้าต่างเสมอ แต่ไม่ใช่ใน*magit ..*หน้าต่าง( ) เดียวกัน

เพิ่มตัวอย่างต่อไปนี้ในinit.elภายหลัง(require 'magit)เพื่อระบุการกระทำนี้

(add-to-list 'display-buffer-alist
                 '(".*COMMIT_EDITMSG". ((display-buffer-pop-up-window) .
                                        ((inhibit-same-window . t)))))

รายละเอียดของการแก้ปัญหา

display-buffer-alistคือสิ่งalistที่เรียกใช้FUNCTION(หรือรายการฟังก์ชัน) พร้อมALISTพารามิเตอร์เมื่อ a CONDITIONเป็นจริง display-buffer-alistสามารถแสดงเป็น,

'(CONDITION . (FUNCTION . ALIST))
  • นี่CONDITIONคือชื่อบัฟเฟอร์ปลายด้วยและบอกว่าเป็นตัวแทนจากCOMMIT_EDITMSG".*COMMIT_EDITMSG"
  • การFUNCTIONเรียกเป็นdisplay-buffer-pop-up-windowตามที่เราต้องการสร้างหน้าต่างสำหรับบัฟเฟอร์นี้ แทนที่จะระบุฟังก์ชั่นด้วยตัวเองมันจะใส่ไว้ในรายการของฟังก์ชั่นเดียว(display-buffer-pop-up-window)เพื่อให้สามารถเพิ่มฟังก์ชั่นเพิ่มเติมลงในรายการได้อย่างง่ายดายหากจำเป็นในอนาคต
  • ALISTมี(inhibit-same-window . t)ในขณะที่เราไม่ต้องการบัฟเฟอร์นี้เพื่อเปิดในหน้าต่างเดียวกัน

อ้างอิง


2

เริ่มต้นด้วยv2.1.0Magit ตามค่าเริ่มต้นจะแสดงการเปลี่ยนแปลงที่เกิดขึ้นพร้อมกับบัฟเฟอร์ที่ใช้เพื่อเขียนข้อความการส่งข้อความ

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