Belirli bir dosyayı değişiklikleri otomatik ve sessiz bir şekilde kabul edecek şekilde ayarlayabilir miyim?


9

Yani, Emacs'ın dosyanın diskte değiştiğini bana bildirmesini ve değişiklikleri kabul etmek isteyip istemediğimi bildirmesini istemediğim belirli bir dosya için belirtebilir miyim? Bunu global olarak yapmak istemiyorum, sadece bildiğim dosyalar için Emacs (özellikle takvimle ilgili Org dosyaları) dışında sık sık değiştirilecek.

Yanıtlar:


8

Bunu M-x auto-revert-mode( manuel ) ile belirli bir tampon için yapabilirsiniz . Dosya arabellekleri için bu, her auto-revert-intervalsaniye (varsayılan olarak 5) değişiklikleri kontrol eder ve arabellek diskten otomatik olarak güncellenir.

Sorunuzun gövdesi bir dosya türünden (org dosyaları) bahsederken başlığınız "belirli bir dosya" diyor. Koşullarınıza bağlı olarak, bu modu kalıcı bir şekilde istenen efekti elde etmek için ayarlamanızın birkaç yolu. Önceki yöntemler, özel kullanım durumunuz için geçerliyse tartışmasız daha temiz ve daha verimlidir.

Belirli bir türdeki her dosya için bunu istediğinizi biliyorsanız, başlangıç ​​kurulumunuza bir mod kancası eklemeyi düşünün.

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

Belirli bir dizindeki her şey için istediğinizi biliyorsanız , ilgili konumdaki .dir-locals.el içinde ayarlamayı düşünün , uygunsa yerel ayarlar dosyasını VCS'yi yok saydığınızdan emin olun. Bu örnek, aynı dizin (ve alt dizinler) altındaki dosyalar için tüm kuruluş modu arabelleklerine uygulanır. M-x add-dir-local-variableEmacs'ın bunu sizin için otomatik olarak oluşturmasını ve kaydetmesini de sağlayabilirsiniz .

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

Yukarıdaki iki yaklaşımdan hiçbiri sizin için iyi sonuç vermezse , her dosyada ayarlanmış bir dosya yerel değişkenini göz önünde bulundurun . Bunlardan birini ayarlamanın en kısa ve en genel yolu, aşağıdakileri hedef dosyanın ilk satırına dahil etmektir:

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

Kaynak dosyalarda, metin bir yorum sınırlayıcıyı (//, # vb.) İzleyebilir. M-x add-file-local-variable-proplineEmacs'ın bunu sizin için otomatik olarak veya M-x add-file-local-variableüst kısım yerine dosyanızın altını kullanan bir biçim için oluşturmasını sağlayabilirsiniz .

Bu yöntemi yalnızca dosyayı başkalarıyla paylaşmıyorsanız kullanın. Gönderen GNU kılavuzda :

Küçük modları bu şekilde belirlemek genellikle bir hatadır. Küçük modlar bireysel kullanıcı tercihlerini temsil eder ve tercihlerinizi dosyayı düzenleyebilecek başka bir kullanıcıya dayatmak uygun olmayabilir. Küçük bir modu duruma bağlı bir şekilde otomatik olarak etkinleştirmek veya devre dışı bırakmak istiyorsanız, bunu büyük bir mod kancasında yapmak daha iyidir.


2
(auto-revert-mode 1)Küçük modu açmak yerine kanonik bir yol değil setqmi?
mbork

1
Evet haklısın. Bu örneği bir saniyede temizleme. Teşekkürler.
Mian

1
Rica ederim. (AFAIU, yerel dosya değişkenleri OP'nin kullanım durumu için en uygun
olanıdır

1
Haklı olabilirsin. IMO, dosya organizasyonlarının ayrıntılarına bağlıdır. Bildikleri dosyalar emacs dışında sık sık değiştirilecekse, tüm kuruluş dosyalarıysa veya hepsi aynı yerde (ör. Dropbox dizini) oluyorsa, mod veya dizin tabanlı bir yaklaşım daha temiz ve daha kolay olabilir ve ikramiye olarak onların dosyaları dağınık.
Mian

2
Bu yöntemlerin her ikisiyle de arayüz oluşturmak için add-file-local-variableve vardır add-dir-local-variable.
Sean Allred

3

Evet. Bunu dosyanızın sonuna koyun.

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

Bu, Org modunu varsayar, diğer modlar için aşağıdaki bağlantıda açıklandığı gibi kullanılan dilde yorumları kullanın.

Not: arka plan, güvenlik bilgileri ve bunun her zaman iyi bir fikir olmayabileceği konusunda bir uyarı için kılavuzdaki Yerel Değişkenler'e bakın . Ayrıca, geri alma bölümü, örneğin otomatik geri alma için varsayılan 5 saniyelik aralığın nasıl değiştirileceğini açıklar.


Bunun kesinlikle sonunda olması gerekiyor mu? Ben .org dosyaları üreten bir komut dosyası var ve ben işe
başlamamış

1
Evet, bağlantıya bakın. Ve birinci basamak çözüm için diğer cevaplara bakınız.
mbork
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.