2012-05-21 8 views
7

Ich habe Code Mirror als Plugin in ein CMS-System implementiert.CodeMirror 2: Mehrere Einrückungen löschen Zeilen

Ich habe ein Problem, wo, wenn ich mehrere Zeilen auswählen und Tab drücken die Zeilen gelöscht werden.

Dies geschieht nicht auf der Demo-Website Code Mirror. Ich kann keine Konfigurationsoption finden, um mehrere Einrückungen zu aktivieren oder zu deaktivieren.

Hier ist meine Konfigurationscode:

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

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

Ich bin nicht sicher, was ich bin fehlt. Irgendwelche Ideen?

Antwort

11

Die Codemirror javascripts unterscheidet zwischen your version und den demo version:

In der Demoversion auf rund Linie 2036 gibt es den folgenden Code-Block, der von Ihrer Version fehlt:

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

Zusammen mit einem Bündel von Funktionen bezogen auf CodeMirror.keyMap.

Vergleichen Sie die beiden und führen Sie die fehlenden Bits zusammen oder verwenden Sie einfach das Skript aus der Demoversion.

+0

Ich bin auf Version 3.15 und es funktioniert nicht für mich. Die Zeile, auf die Sie in dieser Version verweisen, unterscheidet sich hier: 'else cm.replaceSelection (" \ t "," end "," + input ");'. Ich habe versucht, 'else cm.replaceSelection (" \ t "," end ") zu verwenden;' vergeblich. – nick

0

In meinem Fall, dies geschieht, weil ich den benutzerdefinierten Schnipsel aus Codemirror offizieller Dokumentation, welche die Tab ¡Räume abgebildet verwendet einzufügen, anstatt ein Tab-Zeichen:

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

diese kundenspezifische Entfernen Schnipsel Block Auftabellierung Arbeit gemacht wieder und Leerzeichen wurden standardmäßig anstelle von Tabs verwendet.