Редактор Ace: push и next: свойства 'pop' в правиле режима выделения

Я прочитал "Создание нового режима редактирования ". Однако в некоторых режимах я вижу код, использующий push: 'something' и next: 'pop', которые, похоже, там не задокументированы. Пример (код из другого ответа):

{ token: 'string.begin.vcl', regex: '\\[', push: "string" },
{ token: 'string.end.vcl', regex: '\\]', next: 'pop' },


Есть ли документация по push/pop?
Эквивалентен ли push: "string" приведенному ниже коду?

onMatch: function(_, state, stack) {
    stack.unshift("string");
    this.next = "string";
}

person Andrey Shchekin    schedule 13.07.2014    source источник


Ответы (1)


Насколько я знаю, они нигде не задокументированы. толчок эквивалентен

next: function(currentState, stack) {
    if (currentState != "start" || stack.length)
        stack.unshift(this.nextState, currentState);
    return this.nextState;
}

и поп

next: function(currentState, stack) {
    stack.shift();
    return stack.shift() || "start";
};

https://github.com/ajaxorg/ace/blob/v1.1.4/lib/ace/mode/text_highlight_rules.js#L112-L121 https://github.com/ajaxorg/ace/blob/v1.1.4/lib/ace/mode/text_highlight_rules.js#L164

в вашем примере onMatch потребуется return this.token в конце.

person a user    schedule 13.07.2014