8

我已经将 Code Mirror 作为插件实现到 CMS 系统中。

我有一个问题,如果我选择多行并按 Tab,这些行将被删除。

这不会在 Code Mirror 演示网站上发生。我找不到启用或禁用多个缩进的配置选项。

这是我的配置代码:

this.CodeArea = CodeMirror.fromTextArea(codeArea, {
    lineNumbers: true,
    mode: { name: "xml", htmlMode: true },
    onChange : function (editor) {
        editor.save();
    }
});

上下文:https ://github.com/rsleggett/tridion-mirror/blob/master/src/BuildingBlocks.Tridion2011Extensions.CodeMirror/BuildingBlocks.Tridion2011Extensions.CodeMirror/Scripts/codemirror/codemirror.js

我不确定我错过了什么。有任何想法吗?

4

2 回答 2

13

CodeMirror javascripts 在您的版本演示版本之间有所不同:

在第 2036 行左右的演示版本中,您的版本中缺少以下代码块:

defaultTab: function(cm) {
    if (cm.somethingSelected()) cm.indentSelection("add");
    else cm.replaceSelection("\t", "end");
}

连同一堆与CodeMirror.keyMap.

比较两者并合并缺失的位,或者只使用演示版中的脚本。

于 2012-05-24T13:03:24.537 回答
0

就我而言,发生这种情况是因为我使用了 CodeMirror 官方文档中的自定义片段,该片段映射了 Tab ¡ 以插入空格而不是制表符:

editor.setOption("extraKeys", {
  Tab: function(cm) {
    var spaces = Array(cm.getOption("indentUnit") + 1).join(" ");
    cm.replaceSelection(spaces);
   }
});

删除此自定义片段使块制表再次工作,默认情况下使用空格而不是制表符。

于 2017-10-10T10:23:11.740 回答