ฉันสามารถตั้งค่าไฟล์เฉพาะให้ยอมรับการเปลี่ยนแปลงโดยอัตโนมัติและเงียบ ๆ ได้หรือไม่?


9

นั่นคือฉันสามารถระบุไฟล์เฉพาะที่ฉันไม่ต้องการให้ Emacs แจ้งให้ฉันทราบว่าไฟล์นั้นมีการเปลี่ยนแปลงบนดิสก์และแจ้งให้ฉันทราบว่าฉันต้องการยอมรับการเปลี่ยนแปลงหรือไม่? ฉันไม่ต้องการทำสิ่งนี้ทั่วโลกเฉพาะไฟล์ที่ฉันรู้ว่าจะมีการเปลี่ยนแปลงบ่อยครั้งนอก Emacs (โดยเฉพาะอย่างยิ่งไฟล์ Org ที่เกี่ยวข้องกับปฏิทิน)

คำตอบ:


8

คุณสามารถทำสิ่งนี้เพื่อบัฟเฟอร์เฉพาะด้วยM-x auto-revert-mode( ด้วยตนเอง ) สำหรับบัฟเฟอร์ไฟล์สิ่งนี้จะตรวจสอบทุกauto-revert-intervalวินาที (ค่าเริ่มต้นถึง 5) สำหรับการเปลี่ยนแปลงและอัปเดตบัฟเฟอร์จากดิสก์โดยอัตโนมัติ

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

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

(add-hook 'org-mode-hook (lambda () (auto-revert-mode 1)))

หากคุณรู้ว่าคุณต้องการทุกสิ่งในไดเรกทอรีให้ลองตั้งค่าใน. dir-locals.elในตำแหน่งที่เกี่ยวข้องตรวจสอบให้แน่ใจว่า VCS- ละเว้นไฟล์การตั้งค่าท้องถิ่นหากเหมาะสม ตัวอย่างนี้จะใช้กับบัฟเฟอร์โหมดองค์กรทั้งหมดสำหรับไฟล์ภายใต้ไดเรกทอรีเดียวกัน (และส่วนย่อย) คุณสามารถเรียกใช้M-x add-dir-local-variableเพื่อให้ Emacs สร้างและบันทึกสิ่งนี้ให้คุณโดยอัตโนมัติ

(
  (org-mode . ((auto-revert-mode . 1)))
 )

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

-*- eval: (auto-revert-mode 1); -*-

ในไฟล์ต้นฉบับข้อความสามารถติดตามตัวคั่นความคิดเห็น (//, #, ฯลฯ ) คุณสามารถเรียกใช้M-x add-file-local-variable-proplineเพื่อให้ Emacs สร้างสิ่งนี้ให้คุณโดยอัตโนมัติหรือM-x add-file-local-variableสำหรับรูปแบบที่ใช้ด้านล่างของไฟล์แทนด้านบน

ใช้วิธีนี้เฉพาะเมื่อคุณไม่ได้แชร์ไฟล์กับบุคคลอื่น จากคู่มือ GNU :

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


2
ไม่ได้เป็น(auto-revert-mode 1)วิธีที่เป็นที่ยอมรับในการเปิดโหมดย่อยบนแทนsetq?
mbork

1
ใช่คุณพูดถูก. ทำความสะอาดตัวอย่างนั้นในหนึ่งวินาที ขอบคุณ
เมี้ยน

1
ไม่เป็นไร (ที่กล่าวว่า AFAIU ไฟล์ตัวแปรท้องถิ่นเหมาะที่สุดสำหรับกรณีการใช้งานของ OP)
mbork

1
คุณอาจจะถูก IMO มันขึ้นอยู่กับรายละเอียดขององค์กรไฟล์ของพวกเขา หากไฟล์ที่พวกเขารู้ว่ามีการเปลี่ยนแปลงบ่อยครั้งนอก emacs เป็นไฟล์ org ทั้งหมดหรือทั้งหมดเกิดขึ้นในที่เดียวกัน (เช่นไดเรกทอรี Dropbox) วิธีการที่ใช้โหมดหรือไดเรกทอรีอาจจะสะอาดและง่ายขึ้นและจะหลีกเลี่ยง ถ่วงไฟล์ของพวกเขาเป็นโบนัส
เมี้ยน

2
อินเตอร์เฟซที่มีทั้งวิธีการเหล่านี้มีและadd-file-local-variable add-dir-local-variable
ฌอน Allred

3

ใช่. วางสิ่งนี้ไว้ท้ายไฟล์ของคุณ

* COMMENT Config
Local Variables:
eval: (auto-revert-mode 1)
End:

สิ่งนี้ถือว่าโหมด Org สำหรับโหมดอื่นใช้ความคิดเห็นในภาษาที่ใช้ตามที่อธิบายในลิงค์ด้านล่าง

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


สิ่งนี้จำเป็นต้องเกิดขึ้นจริงหรือ? ฉันมีสคริปต์ที่สร้างไฟล์. org และมีมันวางไว้ใกล้จุดเริ่มต้น - ซึ่งดูเหมือนจะไม่ทำงาน ....
emacsomancer

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