Spec-Zone.ru › Elisp

Вставка в списки

Функция :inline позволяет вставлять переменное количество элементов в середину типа настройки list или vector. Для этого добавьте :inline t к спецификации типа, которая содержится в спецификации list или vector.

Обычно каждый элемент в спецификации типа list или vector описывает тип одного элемента. Но когда элемент содержит :inline t, соответствующее значение непосредственно объединяется в содержащую последовательность. Например, если элемент соответствует списку из трёх элементов, они становятся тремя элементами общей последовательности. Это аналогично «,@» в конструкции backquote (см. Backquote).

Например, чтобы указать список, первый элемент которого должен быть baz, а оставшиеся аргументы — ноль или более элементов foo и bar, используйте этот тип настройки:

(list (const baz) (set :inline t (const foo) (const bar)))

Это соответствует таким значениям, как (baz), (baz foo), (baz bar) и (baz foo bar).

Когда тип элемента — choice, вы используете :inline не в самом choice, а в (некоторых) альтернативах choice. Например, чтобы сопоставить список, который должен начинаться с имени файла, за которым следует либо символ t, либо две строки, используйте этот тип настройки:

(list file
      (choice (const t)
              (list :inline t string string)))

Если пользователь выбирает первую альтернативу, то общий список имеет два элемента, и второй элемент — t. Если пользователь выбирает вторую альтернативу, то общий список имеет три элемента, а второй и третий должны быть строками.

Виджеты могут указывать предикаты, чтобы определить, соответствует ли встроенное значение виджету с элементом :match-inline.

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/Splicing-into-Lists.html

Spec-Zone.ru

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