Группы документации
Emacs может перечислять функции на основе различных группировок. Например, string-trim и mapconcat являются функциями «строки», поэтому M-x shortdoc-display-group RET string RET предоставит обзор функций, работающих со строками.
Группы документации создаются с помощью макроса define-short-documentation-group.
- Макрос: define-short-documentation-group group &rest functions
-
Определить group как группу функций и предоставить краткие описания использования этих функций. Необязательный аргумент functions представляет собой список, элементы которого имеют вид:
(func [keyword val]…)
Распознаются следующие ключевые слова:
:eval-
Значение должно быть формой, не имеющей побочных эффектов при вычислении. Эта форма будет использоваться в документации путем вывода с помощью
prin1(см. Функции вывода). Однако, если форма представляет собой строку, она будет вставлена как есть, а затем строка будетreadдля получения формы. В любом случае, форма будет вычислена, и результат будет использован. Например::eval (concat "foo" "bar" "zot") :eval "(make-string 5 ?x)"
приведет к:
(concat "foo" "bar" "zot") ⇒ "foobarzot" (make-string 5 ?x) ⇒ "xxxxx"
(Причина, по которой здесь разрешены как формы Lisp, так и строки, заключается в том, что печать можно контролировать в тех немногих случаях, когда желательно определенное представление формы. В примере, ‘?x’ в противном случае был напечатан как ‘120’, если бы он не был включен в строку.)
:no-eval-
Это аналогично
:eval, за исключением того, что форма не будет вычислена. В этих случаях должен быть включен элемент:result(см. ниже).:no-eval (file-symlink-p "/tmp/foo") :eg-result t
:no-eval*-
Аналогично
:no-eval, но всегда вставляет ‘[зависит от ситуации]’ в качестве результата. Например::no-eval* (buffer-string)
приведет к:
(buffer-string) → [it depends]
:no-value-
Аналогично
:no-eval, но используется, когда у функции нет хорошо определенного возвращаемого значения и она используется только для побочных эффектов. :result-
Используется для вывода результата из форм примеров, которые не вычисляются.
:no-eval (setcar list 'c) :result c
:eg-result-
Используется для вывода результата примера из форм примеров, которые не вычисляются. Например:
:no-eval (looking-at "f[0-9]") :eg-result t
приведет к:
(looking-at "f[0-9]") eg. → t
:result-string:eg-result-string-
Эти два идентичны
:resultи:eg-resultсоответственно, но вставляются как есть. Это полезно, когда результат нечитаем или должен иметь определенную форму::no-eval (find-file "/tmp/foo") :eg-result-string "#<buffer foo>" :no-eval (default-file-modes) :eg-result-string "#o755"
:no-manual-
Указывает, что эта функция не документирована в руководстве.
:args-
По умолчанию отображается фактический список аргументов функции. Если присутствует
:args, они используются вместо них.:args (regexp string)
Вот очень короткий пример:
(define-short-documentation-group string "Creating Strings" (substring :eval (substring "foobar" 0 3) :eval (substring "foobar" 3)) (concat :eval (concat "foo" "bar" "zot")))
Первый аргумент — имя определяемой группы, за которым следует любое количество описаний функций.
Функция может принадлежать любому количеству групп документации.
В дополнение к описаниям функций, список также может содержать строковые элементы, которые используются для разделения группы документации на секции.
- Функция: shortdoc-add-function shortdoc-add-function group section elem
-
Пакеты Lisp могут добавлять функции в группы с помощью этой команды. Каждый elem должен быть описанием функции, как описано выше. group — это группа функций, а section — это раздел в группе функций, в который нужно вставить функцию.
Если group не существует, он будет создан. Если section не существует, он будет добавлен в конец группы функций.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Documentation-Groups.html