CodeMirror 2:多个缩进正在删除行

时间:2012-05-21 18:03:40

标签: javascript codemirror

我已将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

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

2 个答案:

答案 0 :(得分:11)

CodeMirror javascripts在your versiondemo version之间有所不同:

在2036行附近的演示版中,您的版本中缺少以下代码块:

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

以及与CodeMirror.keyMap相关的一系列功能。

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

答案 1 :(得分:0)

在我的情况下,发生了这种情况,因为我使用了CodeMirror官方文档中的自定义代码段,该代码片段将Tab键映射到插入空格而不是制表符:

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

删除此自定义代码段使阻止列表再次起作用,默认情况下使用空格而不是制表符。