CodeMirror中的换行符

时间:2013-04-13 15:39:33

标签: javascript newline codemirror

我正在为CodeMirror编写一个无上下文的解析器,它一次解析一个字符的代码,并根据所采用的状态转换输出一个样式。代码使用换行符\ n来触发状态转换,但CodeMirror似乎从输入文本中删除它们(console.log(char ==='\ n')总是返回false)

是否有配置CodeMirror以将\ n作为输入?文档似乎没有提到这个问题。

我的状态对象格式如下

{
    state1: {
       active: true,
       edges: {
           '\n': 'state2'
       }
    },
    state2: {
       active: false,
       edges: {
           '#': 'state1'
       }
    }
}

如果需要任何其他信息或说明,请告诉我

1 个答案:

答案 0 :(得分:2)

console.log (char === '\n')始终返回false并不一定意味着CodeMirror会删除换行符 - 文本按原样传递,即\n将作为两个字符传递 - {{1} }和\

尝试并使用模式中的n方法检测流中的token

\n

您还可以概括使用任何序列的方法,而不仅仅是var newLine = '\\n'; token : function(stream) { var next = stream.next(); var tokenName = null; if ('\\' === next) { var match = stream.match(new RegExp(newLine.charAt(1))); match && (tokenName = 'some-style' || null); } return tokenName; }

\n

这尚未经过测试,但我怀疑这样做是足够的。请告诉我你是怎么回事。