เมื่อสลับบัฟเฟอร์ป้องกัน emacs จากการสลับเฟรมโดยอัตโนมัติ


13

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

ฉันพบวิธีการป้องกันเมื่อสลับกับ ido โดยใช้:

(setq ido-default-buffer-method 'selected-window)

แต่ก็ยังไม่เพียงพอ: สำหรับตัวอย่างถ้ามีข้อผิดพลาดเสียงกระเพื่อม emacs จะเปลี่ยนเป็นบัฟเฟอร์ * Backtrace * โดยอัตโนมัติและจะเปลี่ยนเฟรมหากเปิดอยู่

มีวิธีการป้องกัน emacs อย่างสมบูรณ์จากการเปลี่ยนเป็นเฟรมที่มีอยู่หรือไม่?

คำตอบ:


3

ดูเหมือนจะไม่มีตัวเลือกสำหรับสิ่งนี้

ฟังก์ชั่นเพื่อหากันชนไม่ช่วยให้คุณสามารถระบุได้ว่าจะมองในกรอบทั้งหมดหรือเฉพาะในกรอบปัจจุบัน:

(get-buffer-window &optional BUFFER-OR-NAME ALL-FRAMES)

อย่างไรก็ตามการใช้งานswitch-to-bufferผ่าน 0 สำหรับALL-FRAMESอาร์กิวเมนต์ซึ่งหมายความว่ามันจะดูในทุกเฟรม

ฉันคิดว่าคุณสามารถใช้:aroundคำแนะนำget-buffer-windowเพื่อแทนที่ข้อโต้แย้งนั้นได้หากคุณต้องการป้องกันพฤติกรรมนี้อย่างแท้จริง ... แต่ฉันสงสัยว่ามันจะทำลายสิ่งอื่น


นั่นคือสิ่งที่ฉันกลัว ฉันอาจลองใช้คำแนะนำเพิ่มเติมเกี่ยวกับ get-buffer-window แต่ฉันไม่ชอบคำแนะนำฟังก์ชั่นที่ใช้กันอย่างแพร่หลาย
MonsieurBanana

ใช่ดูเหมือนว่าจะทำให้เกิดปัญหา คุณอาจต้องการตรวจสอบpopwinแพ็คเกจเป็นวิธีการจัดการกับบัฟเฟอร์พิเศษ - ไม่แน่ใจว่าบวกกับการกำหนดค่า ido ที่คุณพบแล้วอาจเพียงพอ
ลูกัส

1
จริงๆแล้วฉันอาจจะพลาดเรือที่นี่ คุณควรดูที่คู่มือของ Emacs ในหัวข้อ 'การเลือกหน้าต่าง' และ 'ฟังก์ชั่นการแสดงผล' โดยเฉพาะอย่างยิ่งการใช้งานinhibit-switch-frameดูเหมือนว่ามีประโยชน์ (ฉันยังไม่ได้มีโอกาสทดลองกับตัวเลือกเหล่านี้)
ลูกัส

ดูเพิ่มเติมที่: emacs.stackexchange.com/questions/2194/…
glucas

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