ลบ hooks สำหรับโหมดเฉพาะ


13

org-modeฉันต้องการลบช่องว่างต่อท้ายในเซฟโหมดยกเว้น

ในตัวฉัน.emacsฉันมีบรรทัดต่อไปนี้:

(add-hook 'before-save-hook 'delete-trailing-whitespace)

ฉันใช้use-packageมาโครและพยายามเพิ่ม(remove-hook 'before-save-hook 'delete-trailing-whitespace)ลงใน:configบล็อกของฉันแต่นั่นเอาเบ็ดทั่วโลกออก ฉันจะลบมันโดยเฉพาะเพื่อได้org-modeอย่างไร

คำตอบ:


18

ฉันไม่มีประสบการณ์ใด ๆ กับuse-packageแมโคร แต่โดยหลักการคุณสามารถใช้อาร์กิวเมนต์ที่สามremove-hookซึ่งบอกให้ลบฟังก์ชันเฉพาะจาก hook local:

(remove-hook 'before-save-hook 'delete-trailing-whitespace t)

นี่คือ docstring สำหรับการอ้างอิง:

(remove-hook HOOK FUNCTION &optional LOCAL)

ลบออกจากค่าของ HOOK ฟังก์ชัน FUNCTION ตะขอควรเป็นสัญลักษณ์และฟังก์ชั่นอาจเป็นฟังก์ชันที่ถูกต้อง หาก FUNCTION ไม่ใช่ค่าของ HOOK หรือถ้า FUNCTION ไม่ปรากฏในรายการ hooks ที่จะทำงานใน HOOK จะไม่มีการดำเนินการใด ๆ add-hookดู

อาร์กิวเมนต์ที่สามที่เป็นทางเลือก LOCAL หากไม่ใช่ศูนย์จะบอกให้แก้ไขค่าบัฟเฟอร์ท้องถิ่นของตะขอแทนที่จะเป็นค่าเริ่มต้น


ทำงานได้อย่างสมบูรณ์ขอขอบคุณ C-h fอีกประการหนึ่งการแจ้งเตือนที่ดีในการ ฉันจะยอมรับทันทีที่ตัวจับเวลาทำงาน
Matthew Piziak

2
@MatthewPiziak: ถ้ามันทำให้คุณรู้สึกดีขึ้นมันใช้เวลานานมากก่อนที่ฉันจะรู้ว่ามันใช้อาร์กิวเมนต์ที่สามและมันก็เกิดขึ้นหลังจากมีใครบางคนในไซต์นี้ชี้ให้ฉัน
แดน

2
สิ่งนี้จะไม่ทำงานหากมีการเพิ่มฟังก์ชั่นอย่างชัดเจนเป็น LOCAL ในadd-hookการเริ่มต้นด้วยหรือไม่ (การทดสอบอย่างรวดเร็วใน 24.5 ดูเหมือนจะยืนยันความคาดหวังของฉัน ... จะมีฟังก์ชันการทำงานใหม่ในลำต้นเพื่ออำนวยความสะดวกชนิดของการแทนที่นี้?)
Phils
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.