ace-rails-ap 3.0.1 → 3.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/ace/rails/version.rb +1 -1
- data/vendor/assets/javascripts/ace/ace.js +210 -161
- data/vendor/assets/javascripts/ace/ext-beautify.js +0 -1
- data/vendor/assets/javascripts/ace/ext-chromevox.js +0 -1
- data/vendor/assets/javascripts/ace/ext-elastic_tabstops_lite.js +0 -1
- data/vendor/assets/javascripts/ace/ext-emmet.js +66 -48
- data/vendor/assets/javascripts/ace/ext-keybinding_menu.js +9 -19
- data/vendor/assets/javascripts/ace/ext-language_tools.js +108 -10
- data/vendor/assets/javascripts/ace/ext-linking.js +0 -1
- data/vendor/assets/javascripts/ace/ext-modelist.js +4 -1
- data/vendor/assets/javascripts/ace/ext-old_ie.js +23 -2
- data/vendor/assets/javascripts/ace/ext-searchbox.js +23 -2
- data/vendor/assets/javascripts/ace/ext-settings_menu.js +10 -1
- data/vendor/assets/javascripts/ace/ext-spellcheck.js +0 -1
- data/vendor/assets/javascripts/ace/ext-split.js +0 -1
- data/vendor/assets/javascripts/ace/ext-static_highlight.js +0 -1
- data/vendor/assets/javascripts/ace/ext-statusbar.js +2 -4
- data/vendor/assets/javascripts/ace/ext-textarea.js +0 -1
- data/vendor/assets/javascripts/ace/ext-themelist.js +0 -1
- data/vendor/assets/javascripts/ace/ext-whitespace.js +0 -1
- data/vendor/assets/javascripts/ace/keybinding-emacs.js +159 -50
- data/vendor/assets/javascripts/ace/mode-autohotkey.js +1 -1
- data/vendor/assets/javascripts/ace/mode-c_cpp.js +32 -14
- data/vendor/assets/javascripts/ace/mode-coffee.js +1 -1
- data/vendor/assets/javascripts/ace/mode-coldfusion.js +62 -24
- data/vendor/assets/javascripts/ace/mode-csharp.js +14 -8
- data/vendor/assets/javascripts/ace/mode-css.js +2 -2
- data/vendor/assets/javascripts/ace/mode-curly.js +62 -24
- data/vendor/assets/javascripts/ace/mode-d.js +13 -7
- data/vendor/assets/javascripts/ace/mode-dart.js +32 -14
- data/vendor/assets/javascripts/ace/mode-django.js +62 -24
- data/vendor/assets/javascripts/ace/mode-dockerfile.js +3 -3
- data/vendor/assets/javascripts/ace/mode-dot.js +12 -6
- data/vendor/assets/javascripts/ace/mode-ejs.js +126 -27
- data/vendor/assets/javascripts/ace/mode-elixir.js +493 -0
- data/vendor/assets/javascripts/ace/mode-elm.js +248 -0
- data/vendor/assets/javascripts/ace/mode-forth.js +1 -1
- data/vendor/assets/javascripts/ace/mode-ftl.js +20 -10
- data/vendor/assets/javascripts/ace/mode-gitignore.js +1 -0
- data/vendor/assets/javascripts/ace/mode-glsl.js +32 -14
- data/vendor/assets/javascripts/ace/mode-golang.js +14 -8
- data/vendor/assets/javascripts/ace/mode-groovy.js +22 -12
- data/vendor/assets/javascripts/ace/mode-haml.js +64 -3
- data/vendor/assets/javascripts/ace/mode-handlebars.js +72 -34
- data/vendor/assets/javascripts/ace/mode-haxe.js +14 -8
- data/vendor/assets/javascripts/ace/mode-html.js +62 -24
- data/vendor/assets/javascripts/ace/mode-html_ruby.js +126 -27
- data/vendor/assets/javascripts/ace/mode-jack.js +2 -2
- data/vendor/assets/javascripts/ace/mode-jade.js +21 -11
- data/vendor/assets/javascripts/ace/mode-java.js +22 -12
- data/vendor/assets/javascripts/ace/mode-javascript.js +22 -12
- data/vendor/assets/javascripts/ace/mode-json.js +2 -2
- data/vendor/assets/javascripts/ace/mode-jsoniq.js +47 -1835
- data/vendor/assets/javascripts/ace/mode-jsp.js +22 -12
- data/vendor/assets/javascripts/ace/mode-jsx.js +14 -8
- data/vendor/assets/javascripts/ace/mode-less.js +2 -2
- data/vendor/assets/javascripts/ace/mode-liquid.js +20 -10
- data/vendor/assets/javascripts/ace/mode-logiql.js +2 -2
- data/vendor/assets/javascripts/ace/mode-lsl.js +2 -2
- data/vendor/assets/javascripts/ace/mode-luapage.js +62 -24
- data/vendor/assets/javascripts/ace/mode-markdown.js +62 -24
- data/vendor/assets/javascripts/ace/mode-mel.js +2 -2
- data/vendor/assets/javascripts/ace/mode-mysql.js +12 -6
- data/vendor/assets/javascripts/ace/mode-nix.js +32 -14
- data/vendor/assets/javascripts/ace/mode-objectivec.js +30 -12
- data/vendor/assets/javascripts/ace/mode-pgsql.js +20 -10
- data/vendor/assets/javascripts/ace/mode-php.js +1126 -40
- data/vendor/assets/javascripts/ace/mode-powershell.js +2 -2
- data/vendor/assets/javascripts/ace/mode-protobuf.js +32 -14
- data/vendor/assets/javascripts/ace/mode-rhtml.js +62 -24
- data/vendor/assets/javascripts/ace/mode-ruby.js +66 -5
- data/vendor/assets/javascripts/ace/mode-rust.js +36 -3
- data/vendor/assets/javascripts/ace/mode-scad.js +14 -8
- data/vendor/assets/javascripts/ace/mode-scala.js +22 -12
- data/vendor/assets/javascripts/ace/mode-scss.js +2 -2
- data/vendor/assets/javascripts/ace/mode-sh.js +2 -2
- data/vendor/assets/javascripts/ace/mode-sjs.js +22 -12
- data/vendor/assets/javascripts/ace/mode-smarty.js +62 -24
- data/vendor/assets/javascripts/ace/mode-soy_template.js +63 -25
- data/vendor/assets/javascripts/ace/mode-stylus.js +4 -1
- data/vendor/assets/javascripts/ace/mode-svg.js +62 -24
- data/vendor/assets/javascripts/ace/mode-textile.js +1 -0
- data/vendor/assets/javascripts/ace/mode-twig.js +62 -24
- data/vendor/assets/javascripts/ace/mode-typescript.js +22 -12
- data/vendor/assets/javascripts/ace/mode-vala.js +2 -2
- data/vendor/assets/javascripts/ace/mode-velocity.js +62 -24
- data/vendor/assets/javascripts/ace/mode-xml.js +40 -12
- data/vendor/assets/javascripts/ace/mode-xquery.js +47 -1835
- data/vendor/assets/javascripts/ace/theme-cobalt.js +1 -1
- data/vendor/assets/javascripts/ace/theme-idle_fingers.js +1 -1
- data/vendor/assets/javascripts/ace/theme-tomorrow_night_bright.js +2 -2
- data/vendor/assets/javascripts/ace/worker-coffee.js +15 -5
- data/vendor/assets/javascripts/ace/worker-css.js +15 -5
- data/vendor/assets/javascripts/ace/worker-html.js +15 -5
- data/vendor/assets/javascripts/ace/worker-javascript.js +15 -5
- data/vendor/assets/javascripts/ace/worker-json.js +17 -6
- data/vendor/assets/javascripts/ace/worker-lua.js +15 -5
- data/vendor/assets/javascripts/ace/worker-php.js +15 -5
- data/vendor/assets/javascripts/ace/worker-xquery.js +15 -5
- metadata +4 -2
@@ -901,21 +901,13 @@ var Editor = require("./editor").Editor;
|
|
901
901
|
|
902
902
|
});
|
903
903
|
|
904
|
-
define("ace/ext/emmet",["require","exports","module","ace/keyboard/hash_handler","ace/editor","ace/snippets","ace/range","resources","resources","range","tabStops","resources","utils","actions","ace/config"], function(require, exports, module) {
|
904
|
+
define("ace/ext/emmet",["require","exports","module","ace/keyboard/hash_handler","ace/editor","ace/snippets","ace/range","resources","resources","range","tabStops","resources","utils","actions","ace/config","ace/config"], function(require, exports, module) {
|
905
905
|
"use strict";
|
906
906
|
var HashHandler = require("ace/keyboard/hash_handler").HashHandler;
|
907
907
|
var Editor = require("ace/editor").Editor;
|
908
908
|
var snippetManager = require("ace/snippets").snippetManager;
|
909
909
|
var Range = require("ace/range").Range;
|
910
|
-
var emmet;
|
911
|
-
|
912
|
-
Editor.prototype.indexToPosition = function(index) {
|
913
|
-
return this.session.doc.indexToPosition(index);
|
914
|
-
};
|
915
|
-
|
916
|
-
Editor.prototype.positionToIndex = function(pos) {
|
917
|
-
return this.session.doc.positionToIndex(pos);
|
918
|
-
};
|
910
|
+
var emmet, emmetPath;
|
919
911
|
function AceEmmetEditor() {}
|
920
912
|
|
921
913
|
AceEmmetEditor.prototype = {
|
@@ -930,21 +922,24 @@ AceEmmetEditor.prototype = {
|
|
930
922
|
},
|
931
923
|
getSelectionRange: function() {
|
932
924
|
var range = this.ace.getSelectionRange();
|
925
|
+
var doc = this.ace.session.doc;
|
933
926
|
return {
|
934
|
-
start:
|
935
|
-
end:
|
927
|
+
start: doc.positionToIndex(range.start),
|
928
|
+
end: doc.positionToIndex(range.end)
|
936
929
|
};
|
937
930
|
},
|
938
931
|
createSelection: function(start, end) {
|
932
|
+
var doc = this.ace.session.doc;
|
939
933
|
this.ace.selection.setRange({
|
940
|
-
start:
|
941
|
-
end:
|
934
|
+
start: doc.indexToPosition(start),
|
935
|
+
end: doc.indexToPosition(end)
|
942
936
|
});
|
943
937
|
},
|
944
938
|
getCurrentLineRange: function() {
|
945
|
-
var
|
946
|
-
var
|
947
|
-
var
|
939
|
+
var ace = this.ace;
|
940
|
+
var row = ace.getCursorPosition().row;
|
941
|
+
var lineLength = ace.session.getLine(row).length;
|
942
|
+
var index = ace.session.doc.positionToIndex({row: row, column: 0});
|
948
943
|
return {
|
949
944
|
start: index,
|
950
945
|
end: index + lineLength
|
@@ -952,10 +947,10 @@ AceEmmetEditor.prototype = {
|
|
952
947
|
},
|
953
948
|
getCaretPos: function(){
|
954
949
|
var pos = this.ace.getCursorPosition();
|
955
|
-
return this.ace.positionToIndex(pos);
|
950
|
+
return this.ace.session.doc.positionToIndex(pos);
|
956
951
|
},
|
957
952
|
setCaretPos: function(index){
|
958
|
-
var pos = this.ace.indexToPosition(index);
|
953
|
+
var pos = this.ace.session.doc.indexToPosition(index);
|
959
954
|
this.ace.selection.moveToPosition(pos);
|
960
955
|
},
|
961
956
|
getCurrentLine: function() {
|
@@ -969,13 +964,14 @@ AceEmmetEditor.prototype = {
|
|
969
964
|
start = 0;
|
970
965
|
|
971
966
|
var editor = this.ace;
|
972
|
-
var
|
967
|
+
var doc = editor.session.doc;
|
968
|
+
var range = Range.fromPoints(doc.indexToPosition(start), doc.indexToPosition(end));
|
973
969
|
editor.session.remove(range);
|
974
970
|
|
975
971
|
range.end = range.start;
|
976
972
|
|
977
973
|
value = this.$updateTabstops(value);
|
978
|
-
snippetManager.insertSnippet(editor, value)
|
974
|
+
snippetManager.insertSnippet(editor, value);
|
979
975
|
},
|
980
976
|
getContent: function(){
|
981
977
|
return this.ace.getValue();
|
@@ -1049,7 +1045,7 @@ AceEmmetEditor.prototype = {
|
|
1049
1045
|
lastZero = range.create(data.start, result);
|
1050
1046
|
}
|
1051
1047
|
|
1052
|
-
return result
|
1048
|
+
return result;
|
1053
1049
|
},
|
1054
1050
|
escape: function(ch) {
|
1055
1051
|
if (ch == '$') return '\\$';
|
@@ -1100,28 +1096,33 @@ var keymap = {
|
|
1100
1096
|
var editorProxy = new AceEmmetEditor();
|
1101
1097
|
exports.commands = new HashHandler();
|
1102
1098
|
exports.runEmmetCommand = function(editor) {
|
1103
|
-
|
1104
|
-
|
1105
|
-
|
1106
|
-
var actions = emmet.require("actions");
|
1107
|
-
|
1108
|
-
if (this.action == "expand_abbreviation_with_tab") {
|
1109
|
-
if (!editor.selection.isEmpty())
|
1099
|
+
try {
|
1100
|
+
editorProxy.setupContext(editor);
|
1101
|
+
if (editorProxy.getSyntax() == "php")
|
1110
1102
|
return false;
|
1111
|
-
|
1103
|
+
var actions = emmet.require("actions");
|
1112
1104
|
|
1113
|
-
|
1114
|
-
|
1115
|
-
|
1116
|
-
}
|
1117
|
-
|
1118
|
-
|
1119
|
-
|
1105
|
+
if (this.action == "expand_abbreviation_with_tab") {
|
1106
|
+
if (!editor.selection.isEmpty())
|
1107
|
+
return false;
|
1108
|
+
}
|
1109
|
+
|
1110
|
+
if (this.action == "wrap_with_abbreviation") {
|
1111
|
+
return setTimeout(function() {
|
1112
|
+
actions.run("wrap_with_abbreviation", editorProxy);
|
1113
|
+
}, 0);
|
1114
|
+
}
|
1115
|
+
|
1116
|
+
var pos = editor.selection.lead;
|
1117
|
+
var token = editor.session.getTokenAt(pos.row, pos.column);
|
1118
|
+
if (token && /\btag\b/.test(token.type))
|
1119
|
+
return false;
|
1120
|
+
|
1120
1121
|
var result = actions.run(this.action, editorProxy);
|
1121
1122
|
} catch(e) {
|
1122
1123
|
editor._signal("changeStatus", typeof e == "string" ? e : e.message);
|
1123
1124
|
console.log(e);
|
1124
|
-
result = false
|
1125
|
+
result = false;
|
1125
1126
|
}
|
1126
1127
|
return result;
|
1127
1128
|
};
|
@@ -1136,21 +1137,35 @@ for (var command in keymap) {
|
|
1136
1137
|
});
|
1137
1138
|
}
|
1138
1139
|
|
1140
|
+
exports.updateCommands = function(editor, enabled) {
|
1141
|
+
if (enabled) {
|
1142
|
+
editor.keyBinding.addKeyboardHandler(exports.commands);
|
1143
|
+
} else {
|
1144
|
+
editor.keyBinding.removeKeyboardHandler(exports.commands);
|
1145
|
+
}
|
1146
|
+
};
|
1147
|
+
|
1148
|
+
exports.isSupportedMode = function(modeId) {
|
1149
|
+
return modeId && /css|less|scss|sass|stylus|html|php|twig|ejs/.test(modeId);
|
1150
|
+
};
|
1151
|
+
|
1139
1152
|
var onChangeMode = function(e, target) {
|
1140
1153
|
var editor = target;
|
1141
1154
|
if (!editor)
|
1142
1155
|
return;
|
1143
|
-
var
|
1144
|
-
var enabled = modeId && /css|less|scss|sass|stylus|html|php/.test(modeId);
|
1156
|
+
var enabled = exports.isSupportedMode(editor.session.$modeId);
|
1145
1157
|
if (e.enableEmmet === false)
|
1146
1158
|
enabled = false;
|
1147
|
-
if (enabled)
|
1148
|
-
|
1149
|
-
|
1150
|
-
|
1159
|
+
if (enabled) {
|
1160
|
+
if (typeof emmetPath == "string") {
|
1161
|
+
require("ace/config").loadModule(emmetPath, function() {
|
1162
|
+
emmetPath = null;
|
1163
|
+
});
|
1164
|
+
}
|
1165
|
+
}
|
1166
|
+
exports.updateCommands(editor, enabled);
|
1151
1167
|
};
|
1152
1168
|
|
1153
|
-
|
1154
1169
|
exports.AceEmmetEditor = AceEmmetEditor;
|
1155
1170
|
require("ace/config").defineOptions(Editor.prototype, "editor", {
|
1156
1171
|
enableEmmet: {
|
@@ -1162,10 +1177,13 @@ require("ace/config").defineOptions(Editor.prototype, "editor", {
|
|
1162
1177
|
}
|
1163
1178
|
});
|
1164
1179
|
|
1165
|
-
|
1166
|
-
|
1180
|
+
exports.setCore = function(e) {
|
1181
|
+
if (typeof e == "string")
|
1182
|
+
emmetPath = e;
|
1183
|
+
else
|
1184
|
+
emmet = e;
|
1185
|
+
};
|
1167
1186
|
});
|
1168
|
-
;
|
1169
1187
|
(function() {
|
1170
1188
|
window.require(["ace/ext/emmet"], function() {});
|
1171
1189
|
})();
|
@@ -109,29 +109,20 @@ module.exports.getEditorKeybordShortcuts = function(editor) {
|
|
109
109
|
editor.keyBinding.$handlers.forEach(function(handler) {
|
110
110
|
var ckb = handler.commandKeyBinding;
|
111
111
|
for (var i in ckb) {
|
112
|
-
var
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
} else {
|
118
|
-
modifier = "" +
|
119
|
-
(modifier & KEY_MODS.command ? "Cmd-" : "") +
|
120
|
-
(modifier & KEY_MODS.ctrl ? "Ctrl-" : "") +
|
121
|
-
(modifier & KEY_MODS.alt ? "Alt-" : "") +
|
122
|
-
(modifier & KEY_MODS.shift ? "Shift-" : "");
|
123
|
-
}
|
124
|
-
for (var key in ckb[i]) {
|
125
|
-
var command = ckb[i][key]
|
112
|
+
var key = i.replace(/(^|-)\w/g, function(x) { return x.toUpperCase(); });
|
113
|
+
var commands = ckb[i];
|
114
|
+
if (!Array.isArray(commands))
|
115
|
+
commands = [commands];
|
116
|
+
commands.forEach(function(command) {
|
126
117
|
if (typeof command != "string")
|
127
118
|
command = command.name
|
128
119
|
if (commandMap[command]) {
|
129
|
-
commandMap[command].key += "|" +
|
120
|
+
commandMap[command].key += "|" + key;
|
130
121
|
} else {
|
131
|
-
commandMap[command] = {key:
|
122
|
+
commandMap[command] = {key: key, command: command};
|
132
123
|
keybindings.push(commandMap[command]);
|
133
|
-
}
|
134
|
-
}
|
124
|
+
}
|
125
|
+
});
|
135
126
|
}
|
136
127
|
});
|
137
128
|
return keybindings;
|
@@ -173,7 +164,6 @@ define("ace/ext/keybinding_menu",["require","exports","module","ace/editor","ace
|
|
173
164
|
};
|
174
165
|
|
175
166
|
});
|
176
|
-
;
|
177
167
|
(function() {
|
178
168
|
window.require(["ace/ext/keybinding_menu"], function() {});
|
179
169
|
})();
|
@@ -1251,7 +1251,7 @@ exports.retrieveFollowingIdentifier = function(text, pos, regex) {
|
|
1251
1251
|
|
1252
1252
|
});
|
1253
1253
|
|
1254
|
-
define("ace/autocomplete",["require","exports","module","ace/keyboard/hash_handler","ace/autocomplete/popup","ace/autocomplete/util","ace/lib/event","ace/lib/lang","ace/snippets"], function(require, exports, module) {
|
1254
|
+
define("ace/autocomplete",["require","exports","module","ace/keyboard/hash_handler","ace/autocomplete/popup","ace/autocomplete/util","ace/lib/event","ace/lib/lang","ace/lib/dom","ace/snippets"], function(require, exports, module) {
|
1255
1255
|
"use strict";
|
1256
1256
|
|
1257
1257
|
var HashHandler = require("./keyboard/hash_handler").HashHandler;
|
@@ -1259,6 +1259,7 @@ var AcePopup = require("./autocomplete/popup").AcePopup;
|
|
1259
1259
|
var util = require("./autocomplete/util");
|
1260
1260
|
var event = require("./lib/event");
|
1261
1261
|
var lang = require("./lib/lang");
|
1262
|
+
var dom = require("./lib/dom");
|
1262
1263
|
var snippetManager = require("./snippets").snippetManager;
|
1263
1264
|
|
1264
1265
|
var Autocomplete = function() {
|
@@ -1275,6 +1276,8 @@ var Autocomplete = function() {
|
|
1275
1276
|
this.changeTimer = lang.delayedCall(function() {
|
1276
1277
|
this.updateCompletions(true);
|
1277
1278
|
}.bind(this));
|
1279
|
+
|
1280
|
+
this.tooltipTimer = lang.delayedCall(this.updateDocTooltip.bind(this), 50);
|
1278
1281
|
};
|
1279
1282
|
|
1280
1283
|
(function() {
|
@@ -1287,6 +1290,14 @@ var Autocomplete = function() {
|
|
1287
1290
|
e.stop();
|
1288
1291
|
}.bind(this));
|
1289
1292
|
this.popup.focus = this.editor.focus.bind(this.editor);
|
1293
|
+
this.popup.on("show", this.tooltipTimer.bind(null, null));
|
1294
|
+
this.popup.on("select", this.tooltipTimer.bind(null, null));
|
1295
|
+
this.popup.on("changeHoverMarker", this.tooltipTimer.bind(null, null));
|
1296
|
+
return this.popup;
|
1297
|
+
};
|
1298
|
+
|
1299
|
+
this.getPopup = function() {
|
1300
|
+
return this.popup || this.$init();
|
1290
1301
|
};
|
1291
1302
|
|
1292
1303
|
this.openPopup = function(editor, prefix, keepPopupPosition) {
|
@@ -1324,6 +1335,7 @@ var Autocomplete = function() {
|
|
1324
1335
|
this.editor.off("mousedown", this.mousedownListener);
|
1325
1336
|
this.editor.off("mousewheel", this.mousewheelListener);
|
1326
1337
|
this.changeTimer.cancel();
|
1338
|
+
this.hideDocTooltip();
|
1327
1339
|
|
1328
1340
|
if (this.popup && this.popup.isOpen) {
|
1329
1341
|
this.gatherCompletionsId += 1;
|
@@ -1347,10 +1359,15 @@ var Autocomplete = function() {
|
|
1347
1359
|
this.detach();
|
1348
1360
|
};
|
1349
1361
|
|
1350
|
-
this.blurListener = function() {
|
1362
|
+
this.blurListener = function(e) {
|
1351
1363
|
var el = document.activeElement;
|
1352
|
-
|
1364
|
+
var text = this.editor.textInput.getElement()
|
1365
|
+
if (el != text && el.parentNode != this.popup.container
|
1366
|
+
&& el != this.tooltipNode && e.relatedTarget != this.tooltipNode
|
1367
|
+
&& e.relatedTarget != text
|
1368
|
+
) {
|
1353
1369
|
this.detach();
|
1370
|
+
}
|
1354
1371
|
};
|
1355
1372
|
|
1356
1373
|
this.mousedownListener = function(e) {
|
@@ -1382,7 +1399,7 @@ var Autocomplete = function() {
|
|
1382
1399
|
return false;
|
1383
1400
|
|
1384
1401
|
if (data.completer && data.completer.insertMatch) {
|
1385
|
-
data.completer.insertMatch(this.editor);
|
1402
|
+
data.completer.insertMatch(this.editor, data);
|
1386
1403
|
} else {
|
1387
1404
|
if (this.completions.filterText) {
|
1388
1405
|
var ranges = this.editor.selection.getAllRanges();
|
@@ -1399,6 +1416,7 @@ var Autocomplete = function() {
|
|
1399
1416
|
this.detach();
|
1400
1417
|
};
|
1401
1418
|
|
1419
|
+
|
1402
1420
|
this.commands = {
|
1403
1421
|
"Up": function(editor) { editor.completer.goTo("up"); },
|
1404
1422
|
"Down": function(editor) { editor.completer.goTo("down"); },
|
@@ -1519,6 +1537,73 @@ var Autocomplete = function() {
|
|
1519
1537
|
this.cancelContextMenu = function() {
|
1520
1538
|
this.editor.$mouseHandler.cancelContextMenu();
|
1521
1539
|
};
|
1540
|
+
|
1541
|
+
this.updateDocTooltip = function() {
|
1542
|
+
var popup = this.popup;
|
1543
|
+
var all = popup.data;
|
1544
|
+
var selected = all && (all[popup.getHoveredRow()] || all[popup.getRow()]);
|
1545
|
+
var doc = null;
|
1546
|
+
if (!selected || !this.editor || !this.popup.isOpen)
|
1547
|
+
return this.hideDocTooltip();
|
1548
|
+
this.editor.completers.some(function(completer) {
|
1549
|
+
if (completer.getDocTooltip)
|
1550
|
+
doc = completer.getDocTooltip(selected);
|
1551
|
+
return doc;
|
1552
|
+
});
|
1553
|
+
if (!doc)
|
1554
|
+
doc = selected;
|
1555
|
+
|
1556
|
+
if (typeof doc == "string")
|
1557
|
+
doc = {docText: doc}
|
1558
|
+
if (!doc || !(doc.docHTML || doc.docText))
|
1559
|
+
return this.hideDocTooltip();
|
1560
|
+
this.showDocTooltip(doc);
|
1561
|
+
};
|
1562
|
+
|
1563
|
+
this.showDocTooltip = function(item) {
|
1564
|
+
if (!this.tooltipNode) {
|
1565
|
+
this.tooltipNode = dom.createElement("div");
|
1566
|
+
this.tooltipNode.className = "ace_tooltip ace_doc-tooltip";
|
1567
|
+
this.tooltipNode.style.margin = 0;
|
1568
|
+
this.tooltipNode.style.pointerEvents = "auto";
|
1569
|
+
this.tooltipNode.tabIndex = -1;
|
1570
|
+
this.tooltipNode.onblur = this.blurListener.bind(this);
|
1571
|
+
}
|
1572
|
+
|
1573
|
+
var tooltipNode = this.tooltipNode;
|
1574
|
+
if (item.docHTML) {
|
1575
|
+
tooltipNode.innerHTML = item.docHTML;
|
1576
|
+
} else if (item.docText) {
|
1577
|
+
tooltipNode.textContent = item.docText;
|
1578
|
+
}
|
1579
|
+
|
1580
|
+
if (!tooltipNode.parentNode)
|
1581
|
+
document.body.appendChild(tooltipNode);
|
1582
|
+
var popup = this.popup;
|
1583
|
+
var rect = popup.container.getBoundingClientRect();
|
1584
|
+
tooltipNode.style.top = popup.container.style.top;
|
1585
|
+
tooltipNode.style.bottom = popup.container.style.bottom;
|
1586
|
+
|
1587
|
+
if (window.innerWidth - rect.right < 320) {
|
1588
|
+
tooltipNode.style.right = window.innerWidth - rect.left + "px";
|
1589
|
+
tooltipNode.style.left = "";
|
1590
|
+
} else {
|
1591
|
+
tooltipNode.style.left = (rect.right + 1) + "px";
|
1592
|
+
tooltipNode.style.right = "";
|
1593
|
+
}
|
1594
|
+
tooltipNode.style.display = "block";
|
1595
|
+
};
|
1596
|
+
|
1597
|
+
this.hideDocTooltip = function() {
|
1598
|
+
this.tooltipTimer.cancel();
|
1599
|
+
if (!this.tooltipNode) return;
|
1600
|
+
var el = this.tooltipNode;
|
1601
|
+
if (!this.editor.isFocused() && document.activeElement == el)
|
1602
|
+
this.editor.focus();
|
1603
|
+
this.tooltipNode = null;
|
1604
|
+
if (el.parentNode)
|
1605
|
+
el.parentNode.removeChild(el);
|
1606
|
+
};
|
1522
1607
|
|
1523
1608
|
}).call(Autocomplete.prototype);
|
1524
1609
|
|
@@ -1646,17 +1731,21 @@ define("ace/autocomplete/text_completer",["require","exports","module","ace/rang
|
|
1646
1731
|
};
|
1647
1732
|
});
|
1648
1733
|
|
1649
|
-
define("ace/ext/language_tools",["require","exports","module","ace/snippets","ace/autocomplete","ace/config","ace/autocomplete/util","ace/autocomplete/text_completer","ace/editor","ace/config"], function(require, exports, module) {
|
1734
|
+
define("ace/ext/language_tools",["require","exports","module","ace/snippets","ace/autocomplete","ace/config","ace/lib/lang","ace/autocomplete/util","ace/autocomplete/text_completer","ace/editor","ace/config"], function(require, exports, module) {
|
1650
1735
|
"use strict";
|
1651
1736
|
|
1652
1737
|
var snippetManager = require("../snippets").snippetManager;
|
1653
1738
|
var Autocomplete = require("../autocomplete").Autocomplete;
|
1654
1739
|
var config = require("../config");
|
1740
|
+
var lang = require("../lib/lang");
|
1655
1741
|
var util = require("../autocomplete/util");
|
1656
1742
|
|
1657
1743
|
var textCompleter = require("../autocomplete/text_completer");
|
1658
1744
|
var keyWordCompleter = {
|
1659
1745
|
getCompletions: function(editor, session, pos, prefix, callback) {
|
1746
|
+
if (session.$mode.completer) {
|
1747
|
+
return session.$mode.completer.getCompletions(editor, session, pos, prefix, callback);
|
1748
|
+
}
|
1660
1749
|
var state = editor.session.getState(pos.row);
|
1661
1750
|
var completions = session.$mode.getCompletions(state, session, pos, prefix);
|
1662
1751
|
callback(null, completions);
|
@@ -1677,15 +1766,27 @@ var snippetCompleter = {
|
|
1677
1766
|
completions.push({
|
1678
1767
|
caption: caption,
|
1679
1768
|
snippet: s.content,
|
1680
|
-
meta: s.tabTrigger && !s.name ? s.tabTrigger + "\u21E5 " : "snippet"
|
1769
|
+
meta: s.tabTrigger && !s.name ? s.tabTrigger + "\u21E5 " : "snippet",
|
1770
|
+
type: "snippet"
|
1681
1771
|
});
|
1682
1772
|
}
|
1683
1773
|
}, this);
|
1684
1774
|
callback(null, completions);
|
1775
|
+
},
|
1776
|
+
getDocTooltip: function(item) {
|
1777
|
+
if (item.type == "snippet" && !item.docHTML) {
|
1778
|
+
item.docHTML = [
|
1779
|
+
"<b>", lang.escapeHTML(item.caption), "</b>", "<hr></hr>",
|
1780
|
+
lang.escapeHTML(item.snippet)
|
1781
|
+
].join("");
|
1782
|
+
}
|
1685
1783
|
}
|
1686
1784
|
};
|
1687
1785
|
|
1688
1786
|
var completers = [snippetCompleter, textCompleter, keyWordCompleter];
|
1787
|
+
exports.setCompleters = function(val) {
|
1788
|
+
completers = val || [];
|
1789
|
+
};
|
1689
1790
|
exports.addCompleter = function(completer) {
|
1690
1791
|
completers.push(completer);
|
1691
1792
|
};
|
@@ -1696,9 +1797,7 @@ exports.snippetCompleter = snippetCompleter;
|
|
1696
1797
|
var expandSnippet = {
|
1697
1798
|
name: "expandSnippet",
|
1698
1799
|
exec: function(editor) {
|
1699
|
-
|
1700
|
-
if (!success)
|
1701
|
-
editor.execCommand("indent");
|
1800
|
+
return snippetManager.expandWithTab(editor);
|
1702
1801
|
},
|
1703
1802
|
bindKey: "Tab"
|
1704
1803
|
};
|
@@ -1814,7 +1913,6 @@ require("../config").defineOptions(Editor.prototype, "editor", {
|
|
1814
1913
|
}
|
1815
1914
|
});
|
1816
1915
|
});
|
1817
|
-
;
|
1818
1916
|
(function() {
|
1819
1917
|
window.require(["ace/ext/language_tools"], function() {});
|
1820
1918
|
})();
|