Dlaczego defgroup jest przydatny?

9

Czytam idoźródło i widzę:

(defgroup ido nil
 "Switch between files using substrings."
 :group 'extensions
 :group 'convenience
 :version "22.1"
 :link '(emacs-commentary-link :tag "Commentary" "ido.el")
 :link '(emacs-library-link :tag "Lisp File" "ido.el")
 :link '(custom-manual "(ido) Top")
 :link '(info-link "(ido) Customization"))

defgrouppojawia się na górze wielu dużych pakietów. Widzę, że robi to:

Zadeklaruj SYMBOL jako grupę dostosowywania zawierającą CZŁONKÓW. SYMBOL nie musi być cytowany.

A strona na temat grup dostosowywania tak naprawdę nie odpowiada, kiedy i jak ich używać. Kiedy lub jak ich używasz?

djechlin
źródło

Odpowiedzi:

8

Kiedy i dlaczego używasz grupowania? Aby móc działać na grupie jako całości lub na jej poszczególnych członkach - tylko jej członkach. To także tutaj odpowiedź.

  • Istnieją polecenia i inne funkcje, które działają na daną grupę lub zestaw grup. customize-groupto taki, który działa na daną grupę. customize-apropos-groupsto taki, który działa na zbiór grup.

  • Kiedy używasz customize-group, widzisz linki, które pozwalają dostosować podgrupy (jeśli istnieją) i poszczególnych członków (opcje i twarze) tej grupy.

Ponadto grupa zazwyczaj ma prefiks, którego można użyć do dopasowania wzorca do nazw funkcji, twarzy itp. Podczas interakcji z Emacsem. Jest to inny sposób ograniczania akcji do danego zestawu (grupy dostosowywania) rzeczy.

Grupa może również zapewnić szybki dostęp do dokumentu online, kodu źródłowego, zgłaszania błędów itp. Dla pakietu. Oto na przykład definicja grupy Icicles-Key-Completion(z pewnym kodem pomijanym).

(defgroup Icicles-Key-Completion nil
  "Icicles preferences related to key completion (`icicle-complete-keys')."
  :prefix "icicle-" :group 'Icicles
  :link `(url-link :tag "Send Bug Report" ...)
  :link '(url-link :tag "Other Libraries by Drew" ...)
  :link '(url-link :tag "Download" ...)
  :link '(url-link :tag "Description" ...)
  :link '(emacs-commentary-link :tag "Doc-Part2" "icicles-doc2")
  :link '(emacs-commentary-link :tag "Doc-Part1" "icicles-doc1"))

Ta grupa sama w sobie jest podgrupą grupy Icicles(patrz :group). Zawiera łącza w buforze Dostosuj do wysyłania raportu o błędzie, pobierania i uzyskiwania dostępu do dokumentu w kodzie źródłowym lub w Internecie.

Rysował
źródło