Emacs может перечислять функции на основе различных группировок. Например,
string-trim и mapconcat являются функциями типа “string”, поэтому
M-x shortdoc RET string RET предоставит обзор
функций, работающих со строками.
Группы документации создаются с помощью макроса
define-short-documentation-group.
Определяет group как группу функций и предоставляет краткие резюме по использованию этих функций. Необязательный аргумент functions — это список, элементы которого имеют вид:
(func [keyword val]…)
Распознаются следующие ключевые слова:
:evalЗначение должно быть формой, которая не имеет побочных эффектов при вычислении.
Форма будет использоваться в документации путем вывода ее с помощью
prin1 (см. Output Functions). Однако, если форма
является строкой, она будет вставлена как есть, а затем строка будет
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, но всегда вставляет ‘[it depends]’ в качестве
результата. Например:
: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 "Создание строк" (substring :eval (substring "foobar" 0 3) :eval (substring "foobar" 3)) (concat :eval (concat "foo" "bar" "zot")))
Первый аргумент — это имя группы, которую необходимо определить, а затем следуют любое количество описаний функций.
Функция может принадлежать к любому количеству групп документации.
В дополнение к описаниям функций, список также может содержать строковые элементы, которые используются для разделения группы документации на разделы.
Пакеты Lisp могут добавлять функции в группы с помощью этой функции. Каждый elem должен быть описанием функции, как описано выше. group — это группа функций, а section — это раздел в группе функций, в который необходимо вставить функцию.
Если group не существует, она будет создана. Если section не существует, она будет добавлена в конец группы функций.
Вы также можете запрашивать примеры использования функций, определенных в группах shortdoc.
Эта функция возвращает все примеры shortdoc для function.
Возвращаемое значение — это alist с элементами вида
(group . examples), где group — это
группа документации, в которой появляется function, а examples — это строка с примерами
использования function, как определено в group.
shortdoc-function-examples возвращает nil, если function
не является функцией или если у нее нет примеров shortdoc.
Эта функция запрашивает зарегистрированные группы shortdoc и вставляет
примеры использования заданной функции Emacs Lisp function в текущий
буфер. Она подходит для добавления к хуку
help-fns-describe-function-functions, в этом случае
примеры из shortdoc использования функции будут отображаться в буфере
*Help*, когда запрашивается документация функции.