SVG Codemirror完成

时间:2018-12-18 16:32:07

标签: javascript svg codemirror

我正在尝试为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完成工程。

1 个答案:

答案 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)的回调应该返回一个对象,而不是一个函数。

Updated CodePen