1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
codeq.makeEditor = function (elt, options, onEscape) {
var statusBar = $(elt).siblings(".block-statusbar")[0],
updateStatusBar = function (pos) {
statusBar.innerHTML = 'line ' + (pos.line+1) + ', column ' + (pos.ch+1);
},
allOptions = $.extend({
cursorHeight: 0.85,
lineNumbers: true,
matchBrackets: true,
extraKeys: {
// allow a custom function to escape the editor (there is no blur)
'Esc': onEscape || CodeMirror.Pass,
// replace tabs with spaces
'Tab': function (cm) {
var spaces = Array(cm.getOption("indentUnit") + 1).join(" ");
cm.replaceSelection(spaces);
},
// decrease indent if on first non-whitespace character in line
'Backspace': function (cm) {
var doc = cm.getDoc(),
cursor = doc.getCursor(),
line = doc.getLine(cursor.line),
col = cursor.ch;
if (col > 0 && !/\S/.test(line.substring(0, col)) &&
(col === line.length || /\S/.test(line[col]))) {
// cursor on the first non-whitespace character in line
cm.execCommand('indentLess');
}
else {
cm.execCommand('delCharBefore');
}
},
'Shift-Tab': 'indentLess',
}
}, options),
editor = CodeMirror(elt, allOptions);
updateStatusBar({line: 0, ch: 0});
editor.on('cursorActivity', function (instance) {
var pos = instance.getDoc().getCursor();
updateStatusBar(pos);
});
return editor;
};
|