王牌编辑:推送和下一个:' pop'突出显示模式规则的属性

时间:2014-07-13 13:00:52

标签: ace-editor

我读了“Creating a new Edit Mode”。但是在某些模式下,我可以看到使用push: 'something'next: 'pop'的代码,这些代码似乎没有在那里记录。示例(来自another answer的代码):

{ 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";
}

1 个答案:

答案 0 :(得分:3)

AFAIK他们没有在任何地方记录。推送相当于

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