8

Code Mirror をプラグインとして CMS システムに実装しました。

複数の行を選択してタブを押すと、行が削除されるという問題があります。

これは、Code Mirror デモ Web サイトでは発生しません。複数のインデントを有効または無効にする構成オプションが見つかりません。

ここに私の設定コードがあります:

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 の JavaScript は、お使いのバージョンデモ バージョンで異なります。

デモ バージョンの 2036 行付近には、次のコード ブロックが含まれていますが、バージョンにはありません。

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

に関連する一連の機能とともにCodeMirror.keyMap

2 つを比較して不足している部分をマージするか、デモ版のスクリプトをそのまま使用してください。

于 2012-05-24T13:03:24.537 に答える
0

私の場合、タブ文字の代わりにスペースを挿入するために、タブをマッピングした CodeMirror 公式ドキュメントのカスタム スニペットを使用したために、これが発生していました。

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

このカスタム スニペットを削除すると、ブロック集計が再び機能し、デフォルトでタブの代わりにスペースが使用されました。

于 2017-10-10T10:23:11.740 に答える