Spec-Zone.ru › Elisp

Группы документации

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API