Codemirror的新模式:检测流中的空行

文斯

我正在尝试为codemirror开发一个简单的模式。此模式将以蓝色和绿色交替为段落上色。段落之间的分隔是空行或仅包含空格的行。

这是可以使用的代码版本,但存在一个大问题,即未检测到空行:

CodeMirror.defineMode("rt", function() {
  return {
    startState: function() {return {state1: true};},
    token: function(stream, state) {
    if (stream.match(/\s\s*/)!=null){ # this fails to detect empty lines
        state.state1 = !state.state1;
    }
    stream.skipToEnd();
    if (state.state1)  { return "status1"; } 
    return "status2";
    }
  };
});

如果我将其应用于以下文本:

line 1
line 2 # the next line is just a backspace and is not detected

line 3
line 4 # the next line is a few spaces followed by a backspace, it is detected

line 5
line 6

它可以从1号线到4号线用一种颜色着色,从5号线到6号线用另一种颜色着色,这是可以预期的。

我试图找到一种更新代码的方法,以便它检测第2行和第3行之间的空行。

文斯

Codemirror的文档说:

默认情况下,标记文档时仅跳过空白行对于具有大量空白行的语言,您可以在模式上定义一个blankLine(state)方法,每当传递空白行时都会调用该方法,以便它可以更新解析器状态。

http://codemirror.net/doc/manual.html#modeapi

以下代码有效(添加了blankLine函数):

CodeMirror.defineMode("rt", function() {
  return {
    startState: function() {return {state1: true};},
    blankLine: function (state){ state.state1 = !state.state1; },
    token: function(stream, state) {
    console.log(stream)
    if (stream.match(/^\s*$/)!=null){
        state.state1 = !state.state1;
    }
    stream.skipToEnd();
    if (state.state1)  { return "status1"; } 
    return "status2";
    }
  };
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何检测流套接字中的中止连接-PHP

来自分类Dev

F#中的GUI更新模式

来自分类Dev

如何刷新模式中显示的字段

来自分类Dev

宏伟的弹出窗口:从现有模式中打开新模式

来自分类Dev

在Emacs中配置新模式:安装python-mode.el

来自分类Dev

如何在新模式中编写列表 (abap)

来自分类Dev

使用 Laravel 更新模式中的记录,而不是保存

来自分类Dev

FFMPEG检测流媒体量(PHP)

来自分类Dev

FFMPEG检测流媒体量(PHP)

来自分类Dev

如何理解USB检测流程?

来自分类Dev

Keras中的预测流输出

来自分类Dev

南方不承认新模式

来自分类Dev

南方不承认新模式

来自分类Dev

在Swift中检测UITextView中的空行和缺少文本

来自分类Dev

codemirror-在编辑器中检测并创建链接

来自分类Dev

如何运行循环以检查字符串中的新模式

来自分类Dev

InstallShield 2010 InstallScript:升级/更新模式中的先决条件

来自分类Dev

在Primavera P6中为Activity ID创建新模式

来自分类Dev

C#中的正则表达式问题,用于构建新模式

来自分类Dev

创建新模式索引时,如何在 Elastic Search 中设置默认映射?

来自分类Dev

检测流星应用程序的首次用户

来自分类Dev

检测流星应用程序的首次用户

来自分类Dev

通过读取文件来检测C ++中的空行

来自分类Dev

通过读取文件来检测C ++中的空行

来自分类Dev

在 OpenCV 中检测随机模式

来自分类Dev

无法折叠槽以xml模式显示在CodeMirror中

来自分类Dev

无法折叠槽以xml模式显示在CodeMirror中

来自分类Dev

从列中提取一种模式,并在R数据帧中创建一个新模式

来自分类Dev

来自文件的 sed 模式并使用字符串变量替换另一个文件中的新模式

Related 相关文章

热门标签

归档