Почему дефгруппа полезна?

9

Я читаю idoисточник и вижу:

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

defgroupпоявляется в верхней части многих больших пакетов. Я вижу, это делает это:

Объявите SYMBOL как группу настроек, содержащую MEMBERS. СИМВОЛ не нужно заключать в кавычки.

И страница о группах настройки на самом деле не отвечает, когда и как их использовать. Когда или как вы их используете?

djechlin
источник

Ответы:

8

Когда и почему вы используете какую-либо группировку? Иметь возможность воздействовать на группу в целом или на отдельных ее членов - только на ее членов. Вот и здесь ответ.

  • Существуют команды и другие функции, которые действуют на данную группу или набор групп. customize-groupэто тот, который действует на данную группу. customize-apropos-groupsэто тот, который действует на множество групп.

  • При использовании customize-groupвы видите ссылки, которые позволяют вам настроить подгруппы (если таковые имеются) и отдельных членов (параметры и лица) этой группы.

Кроме того, группа обычно имеет префикс, и вы можете использовать его для сопоставления с образцом по именам функций, граней и т. Д. При взаимодействии с Emacs. Это еще один способ ограничения действий для данного набора (группы настройки) вещей.

Группа также может предоставить быстрый доступ к онлайн-документу, исходному коду, отчетам об ошибках и т. Д. Для пакета. Вот, например, определение группы Icicles-Key-Completion(с некоторым удаленным кодом).

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

Эта группа сама является подгруппой группы Icicles(см. :group). Он предоставляет ссылки в буфере настройки для отправки отчета об ошибке, загрузки и доступа к документу в исходном коде или в Интернете.

Нарисовалась
источник