summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/CodeEditor/modules/ace/ext-linking.js
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/CodeEditor/modules/ace/ext-linking.js')
-rw-r--r--www/wiki/extensions/CodeEditor/modules/ace/ext-linking.js61
1 files changed, 61 insertions, 0 deletions
diff --git a/www/wiki/extensions/CodeEditor/modules/ace/ext-linking.js b/www/wiki/extensions/CodeEditor/modules/ace/ext-linking.js
new file mode 100644
index 00000000..baa75702
--- /dev/null
+++ b/www/wiki/extensions/CodeEditor/modules/ace/ext-linking.js
@@ -0,0 +1,61 @@
+ace.define("ace/ext/linking",["require","exports","module","ace/editor","ace/config"], function(require, exports, module) {
+
+var Editor = require("ace/editor").Editor;
+
+require("../config").defineOptions(Editor.prototype, "editor", {
+ enableLinking: {
+ set: function(val) {
+ if (val) {
+ this.on("click", onClick);
+ this.on("mousemove", onMouseMove);
+ } else {
+ this.off("click", onClick);
+ this.off("mousemove", onMouseMove);
+ }
+ },
+ value: false
+ }
+})
+
+exports.previousLinkingHover = false;
+
+function onMouseMove(e) {
+ var editor = e.editor;
+ var ctrl = e.getAccelKey();
+
+ if (ctrl) {
+ var editor = e.editor;
+ var docPos = e.getDocumentPosition();
+ var session = editor.session;
+ var token = session.getTokenAt(docPos.row, docPos.column);
+
+ if (exports.previousLinkingHover && exports.previousLinkingHover != token) {
+ editor._emit("linkHoverOut");
+ }
+ editor._emit("linkHover", {position: docPos, token: token});
+ exports.previousLinkingHover = token;
+ } else if (exports.previousLinkingHover) {
+ editor._emit("linkHoverOut");
+ exports.previousLinkingHover = false;
+ }
+}
+
+function onClick(e) {
+ var ctrl = e.getAccelKey();
+ var button = e.getButton();
+
+ if (button == 0 && ctrl) {
+ var editor = e.editor;
+ var docPos = e.getDocumentPosition();
+ var session = editor.session;
+ var token = session.getTokenAt(docPos.row, docPos.column);
+
+ editor._emit("linkClick", {position: docPos, token: token});
+ }
+}
+
+});
+ (function() {
+ ace.require(["ace/ext/linking"], function() {});
+ })();
+ \ No newline at end of file