ö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 Group
menü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
.
defcustom
gibi etrafında alt düzey Emacs Lisp işlevselliği sarıcı defvar
iki 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. defgroup
bu ö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 RET
ve 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-states
dahili 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.
customize
Tesisleri ne zaman kullanacağınız ile ne zaman elle özelleştireceğinizi bilmek ister misiniz ? Yoksa bir mod yazmak mı istiyorsunuz? İkincisi, aslında kendinizidefcustom
ve benzeri şeyleri kullanarak bulabileceğiniz durumdur .