2012-05-21 25 views
7

Implementé Code Mirror como un complemento en un sistema CMS.CodeMirror 2: Múltiples sangría está eliminando líneas

Tengo un problema en el que si selecciono varias líneas y presiono la pestaña, las líneas se eliminan.

Esto no ocurre en el sitio web de demostración de Code Mirror. No puedo encontrar una opción de configuración para habilitar o deshabilitar la sangría múltiple.

Aquí está mi código de configuración:

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

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

No estoy seguro de lo que me falta. ¿Algunas ideas?

Respuesta

11

Los archivos JavaScript CodeMirror difieren entre your version y la demo version:

En la versión de demostración en torno a la línea 2036 existe el siguiente bloque de código que se encuentra en su versión:

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

Junto con un montón de funciones relacionadas con CodeMirror.keyMap.

Compare los dos y combine los bits que faltan, o simplemente use el script de la versión demo.

+0

Estoy en la versión 3.15 y no funciona para mí. La línea a la que se refiere en esta versión difiere aquí: 'else cm.replaceSelection (" \ t "," end "," + input ");'. Intenté usar 'else cm.replaceSelection (" \ t "," end ");' sin éxito. – nick

0

En mi caso, esto sucedía porque he usado el fragmento personalizado a partir de la documentación oficial CodeMirror el que asigna la lengüeta ¡para insertar espacios en lugar de un carácter de tabulación:

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

Extracción esta costumbre snippet hecho bloque de la labor de tabulación de nuevo y se usaron espacios en lugar de pestañas por defecto.