özelleştirme sistemi bir Emacs özelliği yerleşik tam sorunu çözmek için tasarlanmıştır tarif-programlama ortalama kullanıcı kendi editörü yapılandırmak için ideal bir yol olmayabilir olduğunu.
Özelleştirme işlevinin birincil giriş noktası M-x customize RET(veya Options > Customize Emacs > Top-level Customization Groupmenüden). Buradan ayarları yapmak için etkileşimli bir menü sistemi göreceksiniz. Bu arabirim, tüm ayarların doğru tipte olmasını (sayı, dize, renk vb.) Zorlar ve kullanıcılar Emacs'ı programlı olarak yapılandırırken karşılaşılan önemli bir hata kaynağını önler. Kullanıcı, kullanıcı arayüzü üzerinden yaptığı değişiklikleri sürdürmeyi seçerse, ayarlar kullanıcının başlatma dosyasında özel bir bölüme kaydedilir (read:) .emacs.
defcustomgibi etrafında alt düzey Emacs Lisp işlevselliği sarıcı defvariki değişken beyan eder ve kişiselleştirme arayüzü içinde görünür hale getirir. Ayrıca geliştiricinin uygun bir etkileşimli kontrolü görüntülemek için gereken ek meta verileri sağlamasına izin verir - yani bu değişkente ne tür bir değer depolanır? Rasgele bir dize mi? Bir sayı? Sabit seçeneklerden bir seçim mi? vb. defgroupbu özelleştirilebilir seçenekler için hoş bir hiyerarşi halinde düzenlenebilmeleri için bir gruplama yapısıdır.
Bu işlevsellik, bir veri parçasının, kitaplığın dahili bir ayrıntısı yerine kullanıcı için yapılandırılabilir bir seçenek olarak kabul edilmesi gerektiğinde kullanılmalıdır.
İşte küçük bir kütüphanemden alınan basit bir örnek:
(defgroup checkbox nil
"Quick manipulation of textual checkboxes."
:group 'convenience)
(defcustom checkbox-states '("[ ]" "[x]")
"Checkbox states to cycle between.
First item will be the state for new checkboxes."
:group 'checkbox
:type '(repeat string))
defgroupÜst düzey altında Özelleştirme arayüzüne yeni bir grup oluşturur convenienceöğe. Daha sonra olası onay kutusu durumlarını saklamak için bir değişkene ihtiyacım vardı. Ben kullanmış olabilir defvar, ama bu kolayca özelleştirilebilir olmasını istiyorum çünkü ben kullanmayı tercih defcustom. Bölüm :group, daha önce tanımlanmış gruba ait olduğunu ve:type bir dizi dizisi olduğunu belirtir. Varsayılan bir değer ve bir açıklama da vardır. Kullanıcı tarafından girilen değerlerin dönüştürülmesi için ek olanaklar da (burada gösterilmemiştir) vardır.
Şimdi çalıştırırsanız M-x customize RETve gezinme için Convenience > Checkbox, aşağıdaki yazıyı bakın:

Dünyanın en güzel arayüzü değil, ancak "Checkbox Durumları" nın değerini ( checkbox-statesdahili olarak) özelleştirmek için etkileşimli araçlara sahip olduğuna dikkat edin . Geçerli dize değerlerini INS(ekle) ve DEL(sil) düğmeleriyle birlikte gösterir ve dize değerlerini düzenleme kutularında düzenlememizi sağlar. İşimiz bittiğinde, değişikliklerimizi uygulayıp uygulamayacağımızı, geri döndürüp uygulayamayacağımızı veya gelecekteki oturumlar için uygulayıp kaydedip kaydedemeyeceğimizi belirleyebiliriz.
customizeTesisleri ne zaman kullanacağınız ile ne zaman elle özelleştireceğinizi bilmek ister misiniz ? Yoksa bir mod yazmak mı istiyorsunuz? İkincisi, aslında kendinizidefcustomve benzeri şeyleri kullanarak bulabileceğiniz durumdur .