Emacs'ın büyük bir dosya yüklemek isteyip istemediğimi sormasını nasıl engelleyebilirim?


18

Emacs büyük bir dosya açtığınızda, 'foo.bar dosya büyük; gerçekten açık mı? '

Emacs'ın bana bu soruyu her zaman sormasını nasıl önleyebilirim? Başka bir deyişle, dosyayı açarsam, ne kadar büyük olursa olsun dosyayı açmak istiyorum.


Yanıt burada mevcuttur: superuser.com/questions/508498/… (setq büyük dosya uyarı ikaz eşiği sıfır)
R Perrin

Gilles'in aşağıdaki cevabı daha eksiksiz ve bir sonraki problemlerinizi nasıl çözeceğinizi öğretecek.
jrouquie

Yanıtlar:


29

Kılavuz aracılığıyla

In manuel (eğer Bilgiler Emacs içinde göz atabilirsiniz hangi: C-h i m Emacs RET): bölümüne gidin dosyalara ilgili bölüme, sonra ziyaret (yani açılış) dosyalarını. “Büyük” kelimesini arayın:

' large-file-warning-thresholdDen daha büyük bir dosyayı ziyaret etmeye çalışırsanız (varsayılan değer 10.000 MB olan 10000000'dir), önce Emacs sizden onay ister. Dosyayı ziyaret etmeye devam etmek için y yanıtını verebilirsiniz.

Bu hikayenin tamamı değil, large-file-warning-threshold( C-h v large-file-warning-threshold RET) belgelerine bakarak daha fazla bilgi bulabilirsiniz .

büyük dosya-uyarı eşiği, içinde tanımlanan bir değişkendir files.el.
Değeri 10000000

Üstünde bir onay istenen maksimum dosya boyutu.
Sıfır olduğunda asla onay istemeyin.

Değerini ayarlamak için, ya (değişken için yardım ekranında bir bağlantı var) özelleştirme arabirimini kullanın veya aşağıdaki ifadeyi koyabilirsiniz .emacs:

(setq large-file-warning-threshold nil)

Tip C-M-xnokta şimdi bunu gerçekleştirmenin o satırda iken.

Özelleştir arayüzünde

“Dosyalar” altında, “Dosyaları Bul” altında, “Büyük Dosya Uyarı Eşiği” ayarı vardır. Büyük bir değere ayarlayabilirsiniz, ancak 32 bitlik bir makinede Emacs'ın tamsayı boyutlarında nispeten küçük sabit sınırına girebilirsiniz.

Kaynağı okuyarak

Dosyaları açma fonksiyonuna bakın: C-h k C-x C-f(veya C-h f find-file RET). files.elKaynak dosyaya göz atmak için tıklayın (Lisp kaynaklarının kurulu olması gerekir). Kodu okumayın - oldukça büyük - ancak bu dosyadaki mesajın parçalarını arayın. Bulacaksın

(defun abort-if-file-too-large (size op-type filename)
  "If file SIZE larger than `large-file-warning-threshold', allow user to abort.
OP-TYPE specifies the file operation being performed (for message to user)."
  (when (and large-file-warning-threshold size
       (> size large-file-warning-threshold)
       (not (y-or-n-p
         (format "File %s is large (%dMB), really %s? "
             (file-name-nondirectory filename)
             (/ size 1048576) op-type))))
      (error "Aborted")))

Mesaj yalnızca bazı koşullar karşılandığında görüntülenir. İlk koşul large-file-warning-threshold(bir boole olarak yorumlanır), yani large-file-warning-thresholdsıfır olmamalıdır. Böylece, bu değişkeni olarak ayarlayarak mesajı devre dışı bırakabilirsiniz nil. (Aynı dosyadaki tanımına bakarak bunun global bir değişken olduğunu onaylayabilirsiniz - özelleştirilebilir bir öğedir ve belgeler, Lisp'e yeterince aşina değilseniz ve yalnızca değişkenin bazılarında önemli olduğunu anladığında nasıl kullanıldığını açıklar. yol.)


Verdiğiniz ayrıntılardan ve referanslardan etkilendim. Çok teşekkürler, Gilles.
Tola Odejayi
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.