代码镜像 - 如何在注释或元数据中存储信息?

Code Mirror - How to store information in an annotation or metadata?

我正在使用 Code Mirror 创建一个简单的代码编辑器,它根据某些命令在 canvas 上创建形状。我想使用 Code Mirror 的注释在线条的元数据中存储形状 ID。这样,当我删除命令中的一行时,我可以轻松地告诉 Canvas 要删除哪个形状。

我已经查看代码镜像的文档一段时间了,但仍然不知道我将如何实现它。

如何使用 CodeMirror 访问文本中的元数据(注释)?

非常感谢任何帮助。

好的,我明白了。 CodeMirror 有一个函数“markText”,可用于为特定 CSS 样式的行提供类名。它还可以用于传递任何其他参数,包括用户创建的参数,如 shapeID。

// Give a line an ID
function giveLineID(lineIndex,id){
   editor.markText( {line:lineIndex,ch:0},{line:lineIndex,ch:line.length},{shapeID : id});
}

// Retrieve an ID from a line
function retrieveID(lineIndex){
  var line = myCodeMirror.getLine(lineIndex);

  var marks = cm.findMarks({line:lineIndex,ch:0},{line:lineIndex,ch:line.length});
  marks.forEach(mark => {
     if (mark.hasOwnProperty("shapeID")){
         return mark["shapeID"];
       }
     });
}