Nil'i nasıl geri getirebilirim?


18

Yanlışlıkla aşağıdakileri çalıştırdım:

(unintern variable)

variabledeğeri neredeydi nil.

nilEmacs'ı yeniden başlatmadan nasıl geri dönebilirim?


3
Beni kıkırdattığım için +1. :-) küçümseyen bir şekilde değil, ama "Ben de tamamen bunu yapardı" bir şekilde.
Malabarba

@Malabarba :) Ne yaptığımı anladığımda gerçekten alçakgönüllüydü
Sean Allred

1
Nil'i silebilirsiniz! Geldiğini görmedim.
Gambo

@Gambo ne ı did I :)
Sean Allred

Yanıtlar:


19

(defconst nil ())

doğru etkiye sahip gibi görünüyor; nilve boş bir listenin Emacs Lisp'te ayırt edilemez olduğunu unutmayın .

lread.c:4034Nasıl nilyaratıldığını görmek için baktım obarray.

3896 satırındakilread.c yorumu not edin :

/* There are plenty of other symbols which will screw up the Emacs
     session if we unintern them, as well as even more ways to use
     `setq' or `fset' or whatnot to make the Emacs session
     unusable.  Let's not go down this silly road.  --Stef  */
  /* if (EQ (tem, Qnil) || EQ (tem, Qt))
       error ("Attempt to unintern t or nil"); */

Bu Emacs'in neden (unintern nil)ve 'ye karşı koruma sağlamadığını açıklar (unintern t).


Çok zeki! Bu konuda hemfikirim Stefaslında :) Bu yolda çılgınlık yatıyor.
Sean Allred

Bleh. Burada sm üzerinde rms katılıyorum. Uninterning nil, korunması kolay yaygın bir hatadır. İnsanlar üstünden atlayabildiğinde neden bir merdivene bir parmaklık koydu?
Gilles 'SO- şeytan olmayı bırak'

@Gilles C: C hakkında düşündüğümde bunu düşünüyorum. Programcının ne yaptığını bildiği ve sadece kendini ifade etmenin bir yolunu gerektirdiği felsefesini sürdürüyor. IMO, emacs lisp'i emacs'ın montaj dili olarak görmeliyiz; daha yüksek soyutlamalar (ve korumalar / özellikler) elisp ile derlenen bir dilde eklenmelidir. Ama bu kesinlikle başka bir ortam için bir konu :)
Sean Allred

uninterngerçekten sık kullanılmıyor. Bunu ana obarrayolarak kullanmak neredeyse her zaman kötü bir fikirdir (bu yüzden byte-compiler ikinci argümanı geçemediğinizde şikayet eder ve ikinci argümanın C-h f uninternaslında hala isteğe bağlı olduğunu söylemez).
Stefan

@Stefan Bu bir dokümantasyon hatası gibi görünüyor, o zaman :(
Sean Allred
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.