import * as CodeMirror from '../../'; export interface MultiplexedInnerMode { open: string; close: string; mode: CodeMirror.Mode; parseDelimiters?: boolean | undefined; delimStyle?: string | undefined; innerStyle?: string | undefined; } declare module '../../' { /** * Mode combinator that can be used to easily 'multiplex' between several modes. * When given as first argument a mode object, and as other arguments any number of * {open, close, mode [, delimStyle, innerStyle, parseDelimiters]} objects, it will return a mode object that starts parsing * using the mode passed as first argument, but will switch to another mode as soon as it encounters a string that occurs in * one of the open fields of the passed objects. When in a sub-mode, it will go back to the top mode again when the close * string is encountered. Pass "\n" for open or close if you want to switch on a blank line. * * When delimStyle is specified, it will be the token style returned for the delimiter tokens (as well as [delimStyle]-open on * the opening token and [delimStyle]-close on the closing token). * When innerStyle is specified, it will be the token style added for each inner mode token. * When parseDelimiters is true, the content of the delimiters will also be passed to the inner mode. (And delimStyle is ignored.) * * The outer mode will not see the content between the delimiters. */ function multiplexingMode(outer: Mode, ...others: MultiplexedInnerMode[]): Mode; }