【问题标题】:Code Mirror - How to store information in an annotation or metadata?代码镜像 - 如何将信息存储在注释或元数据中?
【发布时间】:2021-06-11 00:50:49
【问题描述】:
我正在使用 Code Mirror 创建一个简单的代码编辑器,它可以根据某些命令在画布上创建形状。我想使用 Code Mirror 的注释将形状 ID 存储在行的元数据中。这样,当我删除命令上的一行时,我可以轻松地告诉 Canvas 要删除哪个形状。
我已经浏览了一段时间的代码镜像文档,但仍然不知道我将如何实现它。
如何使用 CodeMirror 访问文本中的元数据(注释)?
非常感谢任何帮助。
【问题讨论】:
标签:
javascript
codemirror
【解决方案1】:
好的,我想通了。 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"];
}
});
}