Pourquoi defgroup est-il utile?

9

Je lis la idosource et vois:

(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"))

defgroupapparaît en haut de nombreux packages volumineux. Je vois que cela fait ceci:

Déclarez SYMBOL en tant que groupe de personnalisation contenant MEMBERS. Le SYMBOLE n'a pas besoin d'être cité.

Et la page sur les groupes de personnalisation ne répond pas vraiment quand ni comment les utiliser. Quand ou comment les utilisez-vous?

Djechlin
la source

Réponses:

8

Quand et pourquoi utilisez-vous un groupement? Pour pouvoir agir sur le groupe dans son ensemble ou sur ses membres individuels - uniquement sur ses membres. Voilà la réponse ici aussi.

  • Il existe des commandes et d'autres fonctions qui agissent sur un groupe ou un ensemble de groupes donné. customize-groupest celui qui agit sur un groupe donné. customize-apropos-groupsest celui qui agit sur un ensemble de groupes.

  • Lorsque vous utilisez, customize-groupvous voyez des liens qui vous permettent de personnaliser les sous-groupes (le cas échéant) et les membres individuels (options et faces) de ce groupe.

De plus, un groupe a généralement un préfixe, et vous pouvez l'utiliser pour faire correspondre des motifs à des noms de fonction, de visage, etc. lorsque vous interagissez avec Emacs. C'est une autre façon de limiter les actions à un ensemble donné (groupe de personnalisation) de choses.

Un groupe peut également fournir un accès rapide à la documentation en ligne, au code source, aux rapports de bogues, etc. pour un package. Voici, par exemple, la définition de groupe Icicles-Key-Completion(avec un certain code élidé).

(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"))

Ce groupe est lui-même un sous-groupe de groupe Icicles(voir :group). Il fournit des liens dans le tampon de personnalisation pour envoyer un rapport de bogue, télécharger et accéder au document dans le code source ou sur le Web.

A dessiné
la source