¿Por qué es útil defgroup?

9

Estoy leyendo la idofuente y veo:

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

defgroupaparece en la parte superior de muchos paquetes grandes. Veo que hace esto:

Declare SYMBOL como un grupo de personalización que contiene MIEMBROS. SÍMBOLO no necesita ser citado.

Y la página sobre grupos de personalización realmente no responde cuándo o cómo usarlos. ¿Cuándo o cómo los usas?

djechlin
fuente

Respuestas:

8

¿Cuándo y por qué utiliza alguna agrupación? Para poder actuar en el grupo en su conjunto o en sus miembros individuales, solo sus miembros. Esa es la respuesta aquí también.

  • Hay comandos y otras funciones que actúan en un grupo o conjunto de grupos dado. customize-groupes uno que actúa en un grupo dado. customize-apropos-groupses uno que actúa en un conjunto de grupos.

  • Cuando lo usa customize-group, ve enlaces que le permiten personalizar subgrupos (si los hay) y miembros individuales (opciones y caras) de ese grupo.

Además, un grupo generalmente tiene un prefijo, y puede usarlo para la coincidencia de patrones con nombres de funciones, caras, etc. cuando interactúa con Emacs. Esta es otra forma de limitar las acciones a un conjunto determinado de cosas (grupo de personalización).

Un grupo también puede proporcionar acceso rápido al documento en línea, código fuente, informe de errores, etc. para un paquete. Aquí, por ejemplo, está la definición de grupo Icicles-Key-Completion(con algún código elidido).

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

Este grupo es en sí mismo un subgrupo de grupo Icicles(ver :group). Proporciona enlaces en el búfer Personalizar para enviar un informe de error, descargar y acceder al documento en el código fuente o en la Web.

Dibujó
fuente