2012-05-21 35 views
7

Tôi đã triển khai Mã Gương làm plugin vào hệ thống CMS.CodeMirror 2: Nhiều thụt lề đang xóa các dòng

Tôi gặp sự cố nếu tôi chọn nhiều dòng và nhấn tab, các dòng sẽ bị xóa.

Điều này không xảy ra trên trang web demo của Code Mirror. Tôi không thể tìm thấy tùy chọn cấu hình để bật hoặc tắt nhiều thụt lề.

Đây là mã cấu hình của tôi:

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

Bối cảnh: https://github.com/rsleggett/tridion-mirror/blob/master/src/BuildingBlocks.Tridion2011Extensions.CodeMirror/BuildingBlocks.Tridion2011Extensions.CodeMirror/Scripts/codemirror/codemirror.js

Tôi không chắc chắn những gì tôi đang mất tích. Bất kỳ ý tưởng?

Trả lời

11

Các javascripts CodeMirror khác nhau giữa your versiondemo version:

Trong phiên bản demo tại xung quanh dòng 2036 có khối mã sau đó là mất tích từ phiên bản của bạn:

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

Cùng với một bó các chức năng liên quan đến CodeMirror.keyMap.

So sánh hai và hợp nhất các bit bị thiếu hoặc chỉ sử dụng tập lệnh từ phiên bản demo.

+0

Tôi đang sử dụng phiên bản 3.15 và không hoạt động đối với tôi. Dòng bạn tham chiếu trong phiên bản này khác ở đây: 'else cm.replaceSelection (" \ t "," end "," + input ");'. Tôi đã thử sử dụng 'else cm.replaceSelection (" \ t "," end ");' không có kết quả. – nick

0

Trong trường hợp của tôi, điều này đã xảy ra bởi vì tôi đã sử dụng đoạn mã tùy chỉnh từ tài liệu chính thức CodeMirror mà ánh xạ Tab ¡để chèn khoảng trống thay vì một ký tự tab:

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

Loại bỏ tùy chỉnh này Đoạn làm khối việc lập bảng một lần nữa và không gian được sử dụng thay vì các tab theo mặc định.

Các vấn đề liên quan