From 9b8385b07db5d429f46b03ef0272fa1013fef4ef Mon Sep 17 00:00:00 2001 From: takapa Date: Tue, 30 Sep 2014 19:55:06 +0100 Subject: [PATCH 1/3] Update language_tools.js Added removeCompleters() function to language tools exports as it is not possible to access the completers array directly. This is currently utilized by Ace GWT to cleardown existing completers (for entirely programmatic completers without snippets or keyword completions) but I feel it belongs in the mainline (I have to manage a fork at the moment and there seems to be no other workaround). --- lib/ace/ext/language_tools.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/ace/ext/language_tools.js b/lib/ace/ext/language_tools.js index d8b2a1dd..cad80605 100644 --- a/lib/ace/ext/language_tools.js +++ b/lib/ace/ext/language_tools.js @@ -67,6 +67,10 @@ var snippetCompleter = { } }; +exports.removeCompleters = function() { + completers = []; +}; + var completers = [snippetCompleter, textCompleter, keyWordCompleter]; exports.addCompleter = function(completer) { completers.push(completer); From 28b95df12c48f23909f4aa4cc3cd1d3982508183 Mon Sep 17 00:00:00 2001 From: takapa Date: Wed, 8 Oct 2014 22:07:23 +0100 Subject: [PATCH 2/3] Added setCompleters(...) function Added setCompleters() method, so that completers can be explicitly set from a pre-populated array, or can be removed entirely (if null is passed, or setCompleters() is called without an argument or an empty array is passed. Please check this carefully for rookie JavaScript bugs, as I'm not sure if the null/undefined test is best-practise here as I don't typically code in JavaScript in my day-job. --- lib/ace/ext/language_tools.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/ace/ext/language_tools.js b/lib/ace/ext/language_tools.js index cad80605..dac2075c 100644 --- a/lib/ace/ext/language_tools.js +++ b/lib/ace/ext/language_tools.js @@ -67,8 +67,14 @@ var snippetCompleter = { } }; -exports.removeCompleters = function() { - completers = []; +// Allows default completers to be removed or replaced with a explict set of completers +// A null argument here will result in an empty completer array, not a null attribute +exports.setCompleters = function(val) { + if (val == null || val == undefined || (!(val instanceof Array)) ) { + completers = []; + } else { + completers = val; + } }; var completers = [snippetCompleter, textCompleter, keyWordCompleter]; From 38ce8b891907408f2c6cc97e68f567f11b7b50ae Mon Sep 17 00:00:00 2001 From: nightwing Date: Thu, 9 Oct 2014 01:30:05 +0400 Subject: [PATCH 3/3] less java:) --- lib/ace/ext/language_tools.js | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/lib/ace/ext/language_tools.js b/lib/ace/ext/language_tools.js index dac2075c..4edbf170 100644 --- a/lib/ace/ext/language_tools.js +++ b/lib/ace/ext/language_tools.js @@ -67,17 +67,12 @@ var snippetCompleter = { } }; +var completers = [snippetCompleter, textCompleter, keyWordCompleter]; // Allows default completers to be removed or replaced with a explict set of completers // A null argument here will result in an empty completer array, not a null attribute exports.setCompleters = function(val) { - if (val == null || val == undefined || (!(val instanceof Array)) ) { - completers = []; - } else { - completers = val; - } + completers = val || []; }; - -var completers = [snippetCompleter, textCompleter, keyWordCompleter]; exports.addCompleter = function(completer) { completers.push(completer); };