วิธีที่เร็วที่สุดในการโหลดไฟล์. emacs ของฉันคืออะไรเมื่อฉันทำการเปลี่ยนแปลงดังนั้นบัฟเฟอร์ที่ได้รับผลกระทบทั้งหมดของฉันจะรับการเปลี่ยนแปลงเหล่านั้น


27

ฉันรู้ว่าC-x C-eสิ่งใดeval-last-sexpและM-x eval-bufferสิ่งเหล่านี้ แต่ไม่เพียงพอที่จะรับการเปลี่ยนแปลงทั้งหมด บางครั้งคุณต้องปิดบัฟเฟอร์จริงที่อยู่ในโหมดที่เปลี่ยนการตั้งค่าและบางครั้งคุณต้องรีสตาร์ท emacs ทั้งหมด มีวิธีทั่วไปในการจัดการปัญหานี้มากขึ้นหรือไม่? อีกวิธีหนึ่งมีวิธีในการเริ่มต้นใหม่ emacs โดยไม่สูญเสียบัฟเฟอร์ที่เปิดอยู่และประวัติโต้ตอบ?


Like @ b4hand ระบุไว้ในตอนแรกนี่เป็นคำถามที่อิงตามหนึ่งในคำถามข้อเสนอ: area51.stackexchange.com/proposals/76571/emacs/76588#76588
tarsius

คำตอบ:


16

ไม่ได้ไม่สามารถโหลดการกำหนดค่าที่ถูกปรับเปลี่ยนใหม่อีกครั้งและให้ Emacs ทำงานเสมือนว่าการปรับเปลี่ยนเหล่านั้นมีอยู่แล้วในตอนที่โหลด Emacs ในระยะสั้นแพคเกจ Emacs มีอิสระมากเกินไปที่จะทำได้

คุณพูดถึงว่าบางโหมดที่สำคัญไม่รับการเปลี่ยนแปลงการกำหนดค่า เหตุผลที่เป็นไปได้สำหรับการทำเช่นนี้คือการเปิดใช้งานโหมดจะตั้งค่าตัวแปรบัฟเฟอร์ท้องถิ่นบางอย่างตามค่าปัจจุบันของตัวเลือก หากไม่มีการเปิดใช้งานโหมดดังกล่าวอีกครั้งในทุกบัฟเฟอร์ที่ใช้งานจะไม่มีการเปลี่ยนแปลงทั้งหมดที่จะเกิดขึ้น และถึงอย่างนั้นก็เป็นไปได้ทีเดียวที่บางสิ่งบางอย่างไม่เปลี่ยนแปลง อัตราต่อรองของการทำงานนี้จะสูงขึ้นเมื่อตัวเลือกที่กำหนดโดยใช้custom-set-variablesแบบฟอร์ม แต่จะต้องมีการดำเนินการอย่างชัดเจนสำหรับแต่ละตัวเลือกและทุก และจนถึงตอนนี้เราได้พูดคุยเกี่ยวกับโหมดหลักและตัวเลือกของพวกเขาเท่านั้น ...

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

ด้วยเหตุนี้ฉันจึงขอแนะนำให้ต่อต้านการeval-bufferเริ่มต้นไฟล์ init เพื่อรับการเปลี่ยนแปลงให้มากที่สุด ประเมินการตั้งค่าที่เปลี่ยนแปลงทีละตัวโดยใช้eval-last-sexpและหากไม่สามารถใช้งานได้

วิธีการรักษาสถานะเมื่อ Emacs ถูกปิดเป็นคำถามที่แตกต่างกันซึ่งควรถามแยกต่างหาก


ฉันถามคำถามรีสตาร์ทที่นี่: emacs.stackexchange.com/questions/639/…
b4hand

3

บางครั้งคุณต้องปิดบัฟเฟอร์จริงที่อยู่ในโหมดที่เปลี่ยนการตั้งค่า

การโทรnormal-modeเป็นวิธีที่มีประโยชน์ในการเรียกใช้โหมดทั้งหมดอีกครั้งสำหรับบัฟเฟอร์ที่กำหนดหากคุณทำการเปลี่ยนแปลงในโหมดเหล่านั้นหรือฮุกที่เกี่ยวข้อง

นอกจากนี้คุณยังสามารถใช้revert-buffer(ที่เรียกnormal-mode) ซึ่งเป็นประเภทของการโหลดไฟล์โดยไม่ต้องยกเลิกประวัติเลิกทำ

(คุณสามารถโหลดไฟล์ซ้ำได้C-xC-vแต่จะลบประวัติการเลิกทำของคุณ)

ในการM-x ibufferพิมพ์ตัวพิมพ์ใหญ่Vจะย้อนกลับบัฟเฟอร์ที่ทำเครื่องหมายไว้ทั้งหมดในขณะที่ตัวพิมพ์ใหญ่EและWช่วยให้คุณสามารถประเมิน elisp โดยพลการสำหรับบัฟเฟอร์ที่ทำเครื่องหมายไว้ทั้งหมด

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