Jacob O'Mara
a3b2f42cc7
This adds auto-complete for the sql reports editor codemirror instance. To prevent a regression in syntax highlighting the overlay mode 'sqlPlaceholders' has been removed and replaced with a highlighting engine that works correctly with the autocomplete engine. Test Plan: 1. Navigate to reports and create a new sql report 2. Write an Sql query and observe that there is no autocomplete options 3. Apply patch 4. Write a new Sql query and observe that there are now auto-complete options that can be navigated through with the arrow keys and accepted with either tab or the enter keys. 5. Ensure that items bounded in << >> or [[ ]] are still syntax highlighted post-patch Signed-off-by: Andrew Fuerste-Henry <andrewfh@dubcolib.org> Signed-off-by: Nick Clemens <nick@bywatersolutions.com> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
24 lines
786 B
JavaScript
24 lines
786 B
JavaScript
(function(mod) {
|
|
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
|
mod(require("../../lib/codemirror"));
|
|
else if (typeof define == "function" && define.amd) // AMD
|
|
define(["../../lib/codemirror"], mod);
|
|
else // Plain browser env
|
|
mod(CodeMirror);
|
|
})(function(CodeMirror) {
|
|
CodeMirror.defineOption("keyword", {}, function(cm, val, prev) {
|
|
if (prev == CodeMirror.Init) prev = false;
|
|
if (prev && !val)
|
|
cm.removeOverlay("keyword");
|
|
else if (!prev && val)
|
|
cm.addOverlay({
|
|
token: function(stream) {
|
|
for (var key in cm.options.keyword) {
|
|
if (stream.match(new RegExp(key))) return cm.options.keyword[key];
|
|
}
|
|
stream.next();
|
|
},
|
|
name: "keyword"
|
|
});
|
|
});
|
|
});
|