Emacs'ta hangi kod parçası, “satır numarası modu” nu uzun satırları olan tamponlarda satır numarası olarak “??” olarak yazdırır?


21

line-number-modeModelimdeki geçerli çizginin bir göstergesine sahip olmak için kullanıyorum , ancak büyük dosyalar için veya daha ziyade uzun satırlı dosyalar için satır numarası yerine iki soru işareti göstermeye başlar. Biraz kazıyorum ve line-number-modetanımlanırken simple.elözelleştirilebilir değişkenlerin (ve muhtemelen ilgili tüm mantığın) tanımlanmış olduğunu öğrendim xdisp.c. line-number-display-widthDeğişkeni keyfi olarak yüksek bir sayıya değiştirmek, sorunu çözebilir, ancak kod parçasına ve onu iki soru işaretini yazdırmasını sağlayan mantığa daha fazla merak ediyorum. Herhangi biriniz benim için bulabilirse, belki arkasındaki mantığı açıklarsanız çok yararlı olur.


2
Does M-: (format-mode-line "%l")de sorular işaretleri göstermek?
lunaryorn

Evet, bana "??" veriyor değerlendirme sonucu olarak.
wasamasa

1
Öyleyse tanımına bir göz atın format-mode-line.
lunaryorn

Yanıtlar:


25

@ Lunaryorn'in önerileri sayesinde, buna neden olan kodu bulabildim. format-mode-lineSonunda decode_mode_specverilen format kodlarını değerlere çevirmek için çağrılar gibi gözüküyor . Durumunda için %lbu işlev geçerli satır aşan olup olmadığını, daha sonra çek hesaplama çok fazla zaman harcamadan kaçınmak için birkaç mantıklı denetimleri yapar line-number-display-limit-width. Söz konusu dosya için durum söz konusu olduğundan, no_valuebir dolguyu ??değer olarak döndüren bir etikete atlar .

"Çözme", değişkenin yeterince yüksek bir değere ayarlanmasını içerir:

(setq line-number-display-limit-width 2000000)

Bu değer, xdisp.cpencere yüksekliğinin iki katına otuz artı aldığı ve 32bit bir sistemde line-number-display-limit-widthtaşmayı önlemek most-positive-fixnumiçin 2000000 değerinin güvenli bir bahis olacağı ile ilgili çarpımlara bakılarak elde edilmiştir .


2
İki benzer soru tutmak yerine, diğer soru kopya olarak kapatılmamalı ve bunun yerine bu cevabı güncellememeli misiniz?
Kaushal Modi

@kaushalmodi: Yapıldı!
wasamasa

2
Geçici değişiklikler için:M-x set-variable <RET> line-number-display-limit-width <RET> 2000000 <RET>
Eponymous

Sanırım bilgisayarların daha yavaş olduğu zamanlar anlam kazanmıştı. On yıllardır init dosyamda yüksek bir değere ayarlamıştım.
Jim Balter,
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.