diff --git a/lib/ace/mode/jsoniq.js b/lib/ace/mode/jsoniq.js index 54b671e3..54298949 100644 --- a/lib/ace/mode/jsoniq.js +++ b/lib/ace/mode/jsoniq.js @@ -30,6 +30,7 @@ define(function(require, exports, module) { "use strict"; +var WorkerClient = require("../worker/worker_client").WorkerClient; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; @@ -37,7 +38,8 @@ var JSONiqLexer = require("./xquery/jsoniq_lexer").JSONiqLexer; var Range = require("../range").Range; var XQueryBehaviour = require("./behaviour/xquery").XQueryBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - +var Anchor = require("../anchor").Anchor; +var LanguageTools = require("../ext/language_tools"); var Mode = function() { this.$tokenizer = new JSONiqLexer(); @@ -50,6 +52,15 @@ oop.inherits(Mode, TextMode); (function() { + LanguageTools.addCompleter({ + getCompletions: function(editor, session, pos, prefix, callback) { + session.$worker.emit("complete", { data: { pos: pos, prefix: prefix } }); + session.$worker.on("complete", function(e){ + callback(null, e.data); + }); + } + }); + this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); var match = line.match(/\s*(?:then|else|return|[{\(]|<\w+>)\s*$/); diff --git a/lib/ace/mode/xquery.js b/lib/ace/mode/xquery.js index bbc76414..eccffc37 100644 --- a/lib/ace/mode/xquery.js +++ b/lib/ace/mode/xquery.js @@ -39,6 +39,7 @@ var Range = require("../range").Range; var XQueryBehaviour = require("./behaviour/xquery").XQueryBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; var Anchor = require("../anchor").Anchor; +var LanguageTools = require("../ext/language_tools"); var Mode = function() { this.$tokenizer = new XQueryLexer(); @@ -49,6 +50,15 @@ var Mode = function() { oop.inherits(Mode, TextMode); (function() { + + LanguageTools.addCompleter({ + getCompletions: function(editor, session, pos, prefix, callback) { + session.$worker.emit("complete", { data: { pos: pos, prefix: prefix } }); + session.$worker.on("complete", function(e){ + callback(null, e.data); + }); + } + }); this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); diff --git a/lib/ace/snippets/jsoniq.snippets b/lib/ace/snippets/jsoniq.snippets index 1d846bec..f00d9ea5 100644 --- a/lib/ace/snippets/jsoniq.snippets +++ b/lib/ace/snippets/jsoniq.snippets @@ -1,7 +1,7 @@ snippet for for $${1:item} in ${2:expr} snippet return - return ${1:expr} + return ${1:expr} snippet import import module namespace ${1:ns} = "${2:http://www.example.com/}"; snippet some diff --git a/lib/ace/snippets/xquery.snippets b/lib/ace/snippets/xquery.snippets index 1d846bec..f00d9ea5 100644 --- a/lib/ace/snippets/xquery.snippets +++ b/lib/ace/snippets/xquery.snippets @@ -1,7 +1,7 @@ snippet for for $${1:item} in ${2:expr} snippet return - return ${1:expr} + return ${1:expr} snippet import import module namespace ${1:ns} = "${2:http://www.example.com/}"; snippet some