Emacs sorunlarını nasıl giderebilirim?


21

Emacs'in istediğim gibi davranmadığı bir durumda, sorunu gidermek için ne yapabilirim? Sorunu kendim bulmak ve çözmek için hangi adımları atabilirim?

Ya da başarısız olursam, buradaki insanların (veya e-posta listesindeki veya diğer forumların) sorunumda bana yardımcı olması için yararlı bilgileri nasıl toplayabilirim?

Emac'larım arasında birçok paket, Internet'in her yerinden kopyalayıp yapıştırılan (veya öldürülen ve batırılan) bir snippet koleksiyonu ve bir kısmı yazmayı hatırlamadığım veya artık anlamadığım kendi özel eliplerim var. Tüm bu komplikasyonları anlamlandırmanın bir yolu var mı?


Bunun bunun için en iyi yer olup olmadığından emin değilim, ancak ilk adım olarak isteyen cevaplar / yorumlar alan birçok soru var emacs -Q. Bunu, bu soruları yeni kullanıcılar için genel yardım olarak bağlayacak bir şey olarak yazdım.
Tyler

Evet, bunun için en iyi yer orası. Aslında, 2 yıl önce (neredeyse) böyle bir soru önerildi: meta.emacs.stackexchange.com/q/198/184 Teşekkürler!
T. Verron,

Yanıtlar:


28

1. Adım: Çalışıyor emacs -Q

Yapmanız gereken ilk şey, özelleştirmeleriniz olmadan emacs çalıştırmaktır. Sorunu vanilya Emacs'ta çoğaltabiliyorsanız, bu aslında Emacs'ın kendisinde bir hata olabilir. Bu nadir, ancak ilk adım olarak ekarte ediyoruz.

Emacs'ı komut satırından -Qbayrakla başlatırsanız , yani, emacs -Qyerel özelleştirmelerinizin hiçbiri yüklenmeden, çıplak veya 'vanilya' emac'leri alırsınız. Sorununuz hala devam ediyor mu? Öyleyse, "Hata Tarifi Verme" bölümüne atlayın.

Adım 1b: sorun bir paketteyse?

Eğer probleminiz belirli bir pakete özgüyse, belli ki o paketi yüklemeden onu çoğaltamazsınız. Ancak, yapılandırmanızın tümünü değil, yalnızca ilgili paketi yüklemek istiyorsunuz. Bunu yapmak için, emacs -Qtekrar çalıştırın ve aşağıdaki gibi kısa bir komut dosyası hazırlayın:

(require 'package)
(setq package-load-list
      '((package1 t)))
(package-initialize)

package1Yüklemek istediğiniz paketin adı ile değiştirin . Birden fazla paket yüklemeniz gerekirse, komut dosyasını uygun şekilde değiştirin:

(require 'package)
(setq package-load-list
      '((package1 t)
        (package2 t)
        (package3 t)))
(package-initialize)

Bu kodu yüklemek için, onu *scratch*ara belleğe yapıştırabilir ve çağırabilirsiniz M-x eval-buffer. (veya içinde başka bir kod bulunmadığı sürece herhangi bir tampon!).

Bu noktada, paketleri ve yalnızca test ettiğiniz paketleri yüklediniz. Sorunu şimdi yeniden oluşturabiliyorsanız, "Hata Tarifinin Verilmesi" bölümüne atlayın.

Adım 2: Bilgisayarınızda bir Hata Bulma .emacs

Sorunun yapılandırmanızdaki bir şeyden geldiğini onayladınız ("çağrı evin içinden geliyor!"). Yapılandırmanız binlerce satır uzunluğunda olabilir ve birçok farklı dosya yükleyebilir. Sorunu bulmak için, bir anda bir şeyi daraltmak için kodun yarısını yorumlayan bir ikili arama yaparsınız. 1

  1. Düzenli emacs'ı, aç emacskalmadan, -Qseçenek.
  2. Config dosyanızı açın (genellikle ~/.emacsveya .emacs.d/init.eldenemezseniz C-h v user-init-file)
  3. Dosyanın ilk yarısını seçin: C-spaceişaretini ayarlamak, bölgeyi uzatmak için yarıya kadar kaydırın
  4. Seçilen bölgeye yorum yapın: M-;ve dosyayı kaydedin
  5. İlk emakları çalışır halde bırakarak yeni bir test açın emacs( test emaklarınız ). test emacs , config ayarınızın indirilmiş halini okuyacak
  6. Test emacsındaki sorunu yeniden oluşturmaya çalışın
  7. Bunu çoğaltamazsanız, test emaklarını kapatın , orijinal belgenizde undoise yorumu ile birlikte emac yapın C-/ve kalan kodun yarısını yorumlayın. Yeni bir test emacs açın ve tekrar deneyin.
  8. Sorunu yeniden oluşturabilirseniz, kalan kodun yarısını yorumlayın ve sorunun devam edip etmediğini kontrol edin.
  9. Sorunu yeniden oluşturmak için yapılandırmanızın en küçük parçasını bulana kadar bu işlemi tekrarlayın.

Sorununuz belirli bir paketteyse, tabii ki bu paketi yükleyen kodu bırakmak zorunda kalacaksınız.

Config dosyanız başka dosyalar yüklüyorsa, aramanızı bu dosyalara da genişletebilirsiniz.

Bu noktada, sorunun yalnızca bir veya iki kod kodundan kaynaklandığını bulmuş olabilirsiniz. Bunu kendin bile çözebilirsin. Öyleyse, tebrikler, bir şey öğrendiniz! Aksi takdirde, üçüncü adıma geçin.

Adım 3: Hata Tarifi Verme

Bu noktada, buraya göndermek için ayrıntılı bir hata tarifi verebilmelisiniz. Şunlar içermelidir:

  • Emacs versiyonunuz (bunu Emacs ile alabilirsiniz. M-x emacs-version
  • İşletim sisteminiz (Windows #, Mac, Linux dağıtımı)
  • Varsa, mücadele ettiğiniz paketin sürümü
  • Ne olacağını umduğunuzu ve gerçekte ne olduğunu da içeren, sorunu göstermek için gerekli olan özel adımlar .

Örneğin, şöyle bir soru gönderebilirim:

Süper modda sorun yaşıyorum. Kullandığımda M-x sm-compile-codePayPal hesabımdan para çekiyor.

Çoğaltılacak adımlar:

Süper modu yükle:

(require 'package)
(setq package-load-list
      '((super-mode t)))
(package-initialize)
  • ile yeni bir dosya açmak C-x C-f my-code
  • bir kod satırı girin:
10 goto 10
  • aramak M-x sm-compile-code

Bunun süper derleyiciyi çağırmasını ve programımı derlemesini bekliyorum. Bunun yerine, minibuffer'da "100 $ 'dan paypal'dan süper mod yazara aktarılan" mesajını görüyorum

GNU Emacs 25.1.50.3
Debian Linux
Süper mod 3.1415


1 hata avcısı paket, bu konuda size yardımcı olabilir (yarı) otomatik olarak init dosyasını bisecting.


Belki Bug Hunter'dan bahsedebilirsin .
Omar
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.