Copyright (C) 2000-2012 |
GNU Info (elisp)Splicing into ListsSplicing into Lists ------------------- The `:inline' feature lets you splice a variable number of elements into the middle of a list or vector. You use it in a `set', `choice' or `repeat' type which appears among the element-types of a `list' or `vector'. Normally, each of the element-types in a `list' or `vector' describes one and only one element of the list or vector. Thus, if an element-type is a `repeat', that specifies a list of unspecified length which appears as one element. But when the element-type uses `:inline', the value it matches is merged directly into the containing sequence. For example, if it matches a list with three elements, those become three elements of the overall sequence. This is analogous to using `,@' in the backquote construct. For example, to specify a list whose first element must be `t' and whose remaining arguments should be zero or more of `foo' and `bar', use this customization type: (list (const t) (set :inline t foo bar)) This matches values such as `(t)', `(t foo)', `(t bar)' and `(t foo bar)'. When the element-type is a `choice', you use `:inline' not in the `choice' itself, but in (some of) the alternatives of the `choice'. For example, to match a list which must start with a file name, followed either by the symbol `t' or two strings, use this customization type: (list file (choice (const t) (list :inline t string string))) If the user chooses the first alternative in the choice, then the overall list has two elements and the second element is `t'. If the user chooses the second alternative, then the overall list has three elements and the second and third must be strings. automatically generated by info2www version 1.2.2.9 |