2012-05-21 13 views
7

Zaimplementowałem Code Mirror jako wtyczkę do systemu CMS.CodeMirror 2: Wiele wcięć usuwa linie

Mam problem gdzie jeśli mam wybrać wiele linii i naciśnij kartę linie są usuwane.

To nie dzieje się na stronie demonstracyjnej Code Mirror. Nie mogę znaleźć opcji konfiguracji, aby włączyć lub wyłączyć wiele wcięć.

Oto mój kod konfiguracji:

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

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

Nie jestem pewien, co mi brakuje. Jakieś pomysły?

Odpowiedz

11

W javascripts CodeMirror różnią się między your version a demo version:

W wersji demo na około linii 2036 jest następujący blok kodu, że brakuje od wersji:

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

Wraz z gronem funkcji związanych z CodeMirror.keyMap.

Porównaj i scalić dwa brakujące bity, lub po prostu użyć skryptu z wersji demo.

+0

Jestem w wersji 3.15 i nie działa dla mnie. Linia, do której odwołujesz się w tej wersji, różni się tutaj: 'else cm.replaceSelection (" \ t "," end "," + input ");'. Próbowałem użyć 'else cm.replaceSelection (" \ t "," end ");' bez skutku. – nick

0

W moim przypadku to się dzieje, ponieważ użyłem niestandardowy fragment z oficjalnej dokumentacji CodeMirror który odwzorowany Tab ¡do wstawienia spacji zamiast znaku zakładka:

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

usunięcie tego Niestandardowy fragment wykonany blok pracę tabulacji ponownie i domyślnie używane były spacje zamiast tabulatorów.

Powiązane problemy