-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjserror.js
More file actions
110 lines (92 loc) · 2.5 KB
/
Copy pathjserror.js
File metadata and controls
110 lines (92 loc) · 2.5 KB
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/** @externType Ace.instance */
/** @externType Ace.event */
/** @externType Ace.position */
/** @externType Ace.def_event */
/** @externType list(a') */
// hack: only trigger the given callback when the events performed on the
// editor are user performed to prevent loops.
var program_triggered = false;
function trigger_as_program(cont) {
program_triggered = true;
var result = cont();
program_triggered = false;
return result;
}
/**
* @register {string -> Ace.instance}
*/
function edit(id) {
var inst = ace.edit(id);
return inst;
}
/**
* @register {Ace.instance, string -> Ace.instance}
*/
function setTheme(inst, name) {
return inst.setTheme(name);
}
/**
* @register {Ace.instance, string -> Ace.instance}
*/
function setMode(inst, name) {
return inst.getSession().setMode(name);
}
/**
* @register {Ace.instance, (Ace.event -> void) -> Ace.instance}
*/
function onChange(inst, callback) {
return inst.getSession().on('change', function (e) {
if (program_triggered)
return;
console.log(e);
callback({action: e.data.action,
text: e.data.text,
start: {row: e.data.range.start.row, column: e.data.range.start.column},
end: {row: e.data.range.end.row, column: e.data.range.end.column}
});
});
}
/**
* @register {Ace.instance, string -> Ace.instance}
*/
function setValue(inst, val) {
return trigger_as_program(function () {
return inst.getSession().setValue(val);
});
}
/**
* @register {Ace.instance, Ace.position, string -> Ace.instance}
*/
function insertValue(inst, pos, text) {
return trigger_as_program(function () {
return inst.getSession().insert(pos, text);
});
}
/**
* @register {Ace.instance, Ace.position, Ace.position -> void}
*/
function removeValue(inst, start, end) {
var Range = ace.require('ace/range').Range;
var r = new Range(start.row, start.column, end.row, end.column);
return trigger_as_program(function () {
return inst.getSession().remove(r);
});
}
/**
* @register {Ace.instance, Ace.position, Ace.position -> void}
*/
function removeLines(inst, start, end) {
return trigger_as_program(function () {
return inst.getSession().doc.removeLines(start.row, end.row);
});
}
/**
* @register {Ace.instance, Ace.position, opa[list(string)] -> void}
*/
function insertLines(inst, start, lines) {
return trigger_as_program(function () {
console.log(lines);
console.log(list2js(lines));
return inst.getSession().doc.insertLines(start.row, list2js(lines));
});
}