我正在尝试为CodeMirror创建SVG模式(至少要有一个起点)。我已经复制了htmlmixed模式,并用svg替换了html(因为它是相同的,所以补全不同)
我还删除了所有html标记,并将其替换(在提示中):
var s = { attrs: {} }; // Simple tag, reused for a whole lot of tags
var data = {
svg: {
attrs: {
width: null, height: null, viewBox: null
}
},
g: s
};
var globalAttrs = {
id: null,
'class': null,
lang: ["en", "es"],
style: null
};
但是当我键入<sv
或<svg wid
并按 CTRL + Space 时,我并没有完成操作。我做错了什么?
我正在从textarea创建编辑器:
var text = document.querySelector('textarea');
var myCodeMirror = CodeMirror.fromTextArea(text, {
mode: "svg",
extraKeys: {"Ctrl-Space": "autocomplete"},
});
这是我的CodePen demo。
如果我将模式更改为htmlmixed完成工程。
答案 0 :(得分:1)
Codemirror.registerHelper("hint", name)
名称参数与模式名称无关。您可以覆盖自动完成功能,并将其调用showHint
:
CodeMirror.commands.autocomplete = function(cm) {
CodeMirror.showHint(cm, CodeMirror.hint.name) // name being the name you passed to registerHelper
}
此外,Codemirror.registerHelper("hint", name, callback)
的回调应该返回一个对象,而不是一个函数。