Tüm sembol tanımlarını belirli bir önekle nasıl açabilirim?


11

Paketimin API'sini oldukça sık değiştiriyorum, ancak tanımlanmış her sembolü (olması gerektiği gibi) tamamlanmasında company-modeçekiyor . Yanlışlıkla bağlı olmayan bir ad kullanmak istemiyorum, bu yüzden, yani, ile başlayan tüm değişkenleri ve işlevleri nasıl bağlayabilirim ? Bundan sonra, tekrar yapabileceğim .my-package-load-file

Yanıtlar:


10

unload-featureElisp kaynağını veya bayt derlemeli dosyayı yüklemenin bir parçası olarak tanımlanan tüm sembolleri tanımlamama çağrısı yapın. provideSonunda arayarak dosyanızın sona erdiğinden emin olun . Bu, dosyayı loadişlevlerden biriyle veya yoluyla yüklediğinizi varsayar; dosya, ( ) veya benzer mekanizmalarla requiretanımlanan tanımsız sembollere sahip olmaz .C-M-xeval-defun

Sembolleri, onları tanımlayan pakete dayanmak yerine adlarına göre mapatomsayırmak istiyorsanız, tüm sembolleri yinelemek için kullanabilirsiniz .

(mapatoms (lambda (symbol)
            (if (string-prefix-p "foo-" (symbol-name symbol))
                (unintern symbol))))

Yararlı, ama tarif ettiğim gibi bunun interaktif gelişimde etkili olacağına inanmıyorum. Ben featuresistemden bir seviye daha derinim ; Ben herhangi bir açık gruplama olmadan sadece fonksiyonları ve değişkenleri ile çalışıyorum. Değerlendirmeyi rahatsız etmedim (provide 'my-package).
Sean Allred

2
@SeanAllred Kullanmamak için iyi bir neden düşünemiyorum provide. Her neyse, gerçekten kirli bir şekilde bir şeyler yapmak istiyorsanız, düzenlememe bakın.
Gilles 'SO- kötü olmayı kes'

Oh, seviyorum provide, bu durumda işe yarayacağını sanmıyorum. İşlevler, etkileşimli olarak değerlendirildiklerinde hangi dosyada tanımlandıklarını hatırlıyorlar mı?
Sean Allred

2
unload-featurekodu bir dosyadan yüklemeden (sahip olan provide) değerlendirirseniz hiçbir etkisi olmaz .
Drew

2
@SeanAllred Hayır, işlevler yalnızca bir dosyanın yüklenmesinin bir parçası olarak yüklendiklerinde nereden yüklendiklerini hatırlar.
Gilles 'SO- kötü olmayı kes

7
  • Kullanın makunbound(kendi boşluk için, yani dinamik bir değişken olarak bir sembolün kullanımını kaldırmak için symbol-value).

  • Kullanın fmakunbound(kendi boşluk için, yani bir fonksiyonu olarak bir sembolün kullanımını kaldırmak için symbol-function).

  • mapatomsTüm sembolleri yinelemek için kullanın . Kimin her biri üzerinde hareket symbol-nameçağrısı hem: ilgilendiğiniz belirli önek ile uyar makunboundve fmakunboundüzerinde.

  • Ayrıca, sembolleri yalnızca değişkenler veya işlevler olarak değil, sembollerin kendilerine karşı tamamlamayı da kullanmadığınız süreceunintern sembole ihtiyacınız yoktur . Eğer Ama eğer yok tamamen bir sembol kaldırmak istediğiniz ardından kullanın .unintern

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.