Por que o defgroup é útil?

9

Estou lendo a idofonte e veja:

(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 na parte superior de muitos pacotes grandes. Eu vejo que faz isso:

Declare SYMBOL como um grupo de personalização que contém MEMBROS. SYMBOL não precisa ser citado.

E a página sobre grupos de personalização realmente não responde quando ou como usá-los. Quando ou como você os utiliza?

djechlin
fonte

Respostas:

8

Quando e por que você usa algum agrupamento? Ser capaz de atuar no grupo como um todo ou em seus membros individuais - somente em seus membros. Essa é a resposta aqui também.

  • Existem comandos e outras funções que atuam em um determinado grupo ou conjunto de grupos. customize-groupé aquele que atua em um determinado grupo. customize-apropos-groupsé aquele que atua em um conjunto de grupos.

  • Ao usar, customize-groupvocê vê links que permitem personalizar subgrupos (se houver) e membros individuais (opções e faces) desse grupo.

Além disso, um grupo normalmente tem um prefixo e você pode usá-lo para fazer a correspondência de padrões com nomes de funções, faces etc. quando interagir com o Emacs. Essa é outra maneira de limitar ações a um determinado conjunto (grupo de customização) de coisas.

Um grupo também pode fornecer acesso rápido ao documento online, código-fonte, relatório de erros etc. para um pacote. Aqui, por exemplo, está a definição de grupo Icicles-Key-Completion(com algum código elido).

(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 é ele próprio um subgrupo de grupo Icicles(consulte :group). Ele fornece links no buffer Personalizar para enviar um relatório de erro, baixar e acessar o documento no código-fonte ou na Web.

Desenhou
fonte