|
@@ -2637,9 +2637,7 @@
|
|
|
editor.setTheme($.totalStorage("hue.ace.theme") || "ace/theme/hue");
|
|
editor.setTheme($.totalStorage("hue.ace.theme") || "ace/theme/hue");
|
|
|
|
|
|
|
|
var editorOptions = {
|
|
var editorOptions = {
|
|
|
- enableBasicAutocompletion: true,
|
|
|
|
|
enableSnippets: true,
|
|
enableSnippets: true,
|
|
|
- enableLiveAutocompletion: true,
|
|
|
|
|
showGutter: false,
|
|
showGutter: false,
|
|
|
showLineNumbers: false,
|
|
showLineNumbers: false,
|
|
|
showPrintMargin: false,
|
|
showPrintMargin: false,
|
|
@@ -2648,8 +2646,44 @@
|
|
|
maxLines: 25
|
|
maxLines: 25
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+ editor.enabledMenuOptions = {
|
|
|
|
|
+ setShowInvisibles: true,
|
|
|
|
|
+ setTabSize: true,
|
|
|
|
|
+ setShowGutter: true
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ editor.customMenuOptions = {
|
|
|
|
|
+ setEnableAutocompleter: function (enabled) {
|
|
|
|
|
+ editor.setOption('enableBasicAutocompletion', enabled);
|
|
|
|
|
+ snippet.getApiHelper().setInTotalStorage('hue.ace', 'enableBasicAutocompletion', enabled);
|
|
|
|
|
+ if (enabled && $('#setEnableLiveAutocompletion:checked').length === 0) {
|
|
|
|
|
+ $('#setEnableLiveAutocompletion').trigger('click');
|
|
|
|
|
+ } else if (!enabled && $('#setEnableLiveAutocompletion:checked').length !== 0) {
|
|
|
|
|
+ $('#setEnableLiveAutocompletion').trigger('click');
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ getEnableAutocompleter: function () {
|
|
|
|
|
+ return editor.getOption('enableBasicAutocompletion');
|
|
|
|
|
+ },
|
|
|
|
|
+ setEnableLiveAutocompletion: function (enabled) {
|
|
|
|
|
+ editor.setOption('enableLiveAutocompletion', enabled);
|
|
|
|
|
+ snippet.getApiHelper().setInTotalStorage('hue.ace', 'enableLiveAutocompletion', enabled);
|
|
|
|
|
+ if (enabled && $('#setEnableAutocompleter:checked').length === 0) {
|
|
|
|
|
+ $('#setEnableAutocompleter').trigger('click');
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ getEnableLiveAutocompletion: function () {
|
|
|
|
|
+ return editor.getOption('enableLiveAutocompletion');
|
|
|
|
|
+ }
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
$.extend(editorOptions, aceOptions);
|
|
$.extend(editorOptions, aceOptions);
|
|
|
|
|
|
|
|
|
|
+ editorOptions['enableBasicAutocompletion'] = snippet.getApiHelper().getFromTotalStorage('hue.ace', 'enableBasicAutocompletion', true);
|
|
|
|
|
+ if (editorOptions['enableBasicAutocompletion']) {
|
|
|
|
|
+ editorOptions['enableLiveAutocompletion'] = snippet.getApiHelper().getFromTotalStorage('hue.ace', 'enableLiveAutocompletion', true);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
editor.setOptions(editorOptions);
|
|
editor.setOptions(editorOptions);
|
|
|
|
|
|
|
|
var AceAutocomplete = ace.require("ace/autocomplete").Autocomplete;
|
|
var AceAutocomplete = ace.require("ace/autocomplete").Autocomplete;
|
|
@@ -2660,13 +2694,15 @@
|
|
|
editor.completer.exactMatch = ! snippet.isSqlDialect();
|
|
editor.completer.exactMatch = ! snippet.isSqlDialect();
|
|
|
|
|
|
|
|
var initAutocompleters = function () {
|
|
var initAutocompleters = function () {
|
|
|
- editor.completers.length = 0;
|
|
|
|
|
- if(! options.useNewAutocompleter) {
|
|
|
|
|
- editor.completers.push(langTools.snippetCompleter);
|
|
|
|
|
- editor.completers.push(langTools.textCompleter);
|
|
|
|
|
- editor.completers.push(langTools.keyWordCompleter);
|
|
|
|
|
|
|
+ if (editor.completers) {
|
|
|
|
|
+ editor.completers.length = 0;
|
|
|
|
|
+ if(! options.useNewAutocompleter) {
|
|
|
|
|
+ editor.completers.push(langTools.snippetCompleter);
|
|
|
|
|
+ editor.completers.push(langTools.textCompleter);
|
|
|
|
|
+ editor.completers.push(langTools.keyWordCompleter);
|
|
|
|
|
+ }
|
|
|
|
|
+ editor.completers.push(snippet.autocompleter);
|
|
|
}
|
|
}
|
|
|
- editor.completers.push(snippet.autocompleter);
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
var langTools = ace.require("ace/ext/language_tools");
|
|
var langTools = ace.require("ace/ext/language_tools");
|
|
@@ -3138,17 +3174,13 @@
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
+ var autocompleteTemporarilyDisabled = false;
|
|
|
editor.commands.on("afterExec", function (e) {
|
|
editor.commands.on("afterExec", function (e) {
|
|
|
- if (e.command.name === "insertstring") {
|
|
|
|
|
- var triggerAutocomplete = ((editor.session.getMode().$id == "ace/mode/hive" || editor.session.getMode().$id == "ace/mode/impala") && (e.args == "." || e.args == " ")) || /["']\/[^\/]*/.test(editor.getTextBeforeCursor());
|
|
|
|
|
|
|
+ if (editor.getOption('enableLiveAutocompletion') && e.command.name === "insertstring") {
|
|
|
var questionMarkMatch = editor.getTextBeforeCursor().match(/select \? from \S+[^.]$/i);
|
|
var questionMarkMatch = editor.getTextBeforeCursor().match(/select \? from \S+[^.]$/i);
|
|
|
if (questionMarkMatch) {
|
|
if (questionMarkMatch) {
|
|
|
editor.moveCursorTo(editor.getCursorPosition().row, editor.getCursorPosition().column - questionMarkMatch[0].length + 8);
|
|
editor.moveCursorTo(editor.getCursorPosition().row, editor.getCursorPosition().column - questionMarkMatch[0].length + 8);
|
|
|
editor.removeTextBeforeCursor(1);
|
|
editor.removeTextBeforeCursor(1);
|
|
|
- triggerAutocomplete = true;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if (triggerAutocomplete) {
|
|
|
|
|
window.setTimeout(function () {
|
|
window.setTimeout(function () {
|
|
|
editor.execCommand("startAutocomplete");
|
|
editor.execCommand("startAutocomplete");
|
|
|
}, 1);
|
|
}, 1);
|
|
@@ -3156,11 +3188,14 @@
|
|
|
}
|
|
}
|
|
|
editor.session.getMode().$id = snippet.getAceMode(); // forces the id again because of Ace command internals
|
|
editor.session.getMode().$id = snippet.getAceMode(); // forces the id again because of Ace command internals
|
|
|
// if it's pig and before it's LOAD ' we disable the autocomplete and show a filechooser btn
|
|
// if it's pig and before it's LOAD ' we disable the autocomplete and show a filechooser btn
|
|
|
- if (editor.session.getMode().$id = "ace/mode/pig" && e.args) {
|
|
|
|
|
|
|
+ if (editor.session.getMode().$id === "ace/mode/pig" && e.args) {
|
|
|
var textBefore = editor.getTextBeforeCursor();
|
|
var textBefore = editor.getTextBeforeCursor();
|
|
|
if ((e.args == "'" && textBefore.toUpperCase().indexOf("LOAD ") > -1 && textBefore.toUpperCase().indexOf("LOAD ") == textBefore.toUpperCase().length - 5)
|
|
if ((e.args == "'" && textBefore.toUpperCase().indexOf("LOAD ") > -1 && textBefore.toUpperCase().indexOf("LOAD ") == textBefore.toUpperCase().length - 5)
|
|
|
|| textBefore.toUpperCase().indexOf("LOAD '") > -1 && textBefore.toUpperCase().indexOf("LOAD '") == textBefore.toUpperCase().length - 6) {
|
|
|| textBefore.toUpperCase().indexOf("LOAD '") > -1 && textBefore.toUpperCase().indexOf("LOAD '") == textBefore.toUpperCase().length - 6) {
|
|
|
- editor.disableAutocomplete();
|
|
|
|
|
|
|
+ if (editor.getOption('enableBasicAutocompletion')) {
|
|
|
|
|
+ editor.disableAutocomplete();
|
|
|
|
|
+ autocompleteTemporarilyDisabled = true;
|
|
|
|
|
+ }
|
|
|
var btn = editor.showFileButton();
|
|
var btn = editor.showFileButton();
|
|
|
btn.on("click", function (ie) {
|
|
btn.on("click", function (ie) {
|
|
|
ie.preventDefault();
|
|
ie.preventDefault();
|
|
@@ -3174,7 +3209,10 @@
|
|
|
onFileChoose: function (filePath) {
|
|
onFileChoose: function (filePath) {
|
|
|
editor.session.insert(editor.getCursorPosition(), filePath + "'");
|
|
editor.session.insert(editor.getCursorPosition(), filePath + "'");
|
|
|
editor.hideFileButton();
|
|
editor.hideFileButton();
|
|
|
- editor.enableAutocomplete();
|
|
|
|
|
|
|
+ if (autocompleteTemporarilyDisabled) {
|
|
|
|
|
+ editor.enableAutocomplete();
|
|
|
|
|
+ autocompleteTemporarilyDisabled = false;
|
|
|
|
|
+ }
|
|
|
$(".ace-filechooser").hide();
|
|
$(".ace-filechooser").hide();
|
|
|
},
|
|
},
|
|
|
selectFolder: false,
|
|
selectFolder: false,
|
|
@@ -3182,14 +3220,19 @@
|
|
|
});
|
|
});
|
|
|
$(".ace-filechooser").css({ "top": $(ie.currentTarget).position().top, "left": $(ie.currentTarget).position().left}).show();
|
|
$(".ace-filechooser").css({ "top": $(ie.currentTarget).position().top, "left": $(ie.currentTarget).position().left}).show();
|
|
|
});
|
|
});
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
|
|
+ } else {
|
|
|
editor.hideFileButton();
|
|
editor.hideFileButton();
|
|
|
- editor.enableAutocomplete();
|
|
|
|
|
|
|
+ if (autocompleteTemporarilyDisabled) {
|
|
|
|
|
+ editor.enableAutocomplete();
|
|
|
|
|
+ autocompleteTemporarilyDisabled = false;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
if (e.args != "'" && textBefore.toUpperCase().indexOf("LOAD '") > -1 && textBefore.toUpperCase().indexOf("LOAD '") == textBefore.toUpperCase().length - 6) {
|
|
if (e.args != "'" && textBefore.toUpperCase().indexOf("LOAD '") > -1 && textBefore.toUpperCase().indexOf("LOAD '") == textBefore.toUpperCase().length - 6) {
|
|
|
editor.hideFileButton();
|
|
editor.hideFileButton();
|
|
|
- editor.enableAutocomplete();
|
|
|
|
|
|
|
+ if (autocompleteTemporarilyDisabled) {
|
|
|
|
|
+ editor.enableAutocomplete();
|
|
|
|
|
+ autocompleteTemporarilyDisabled = false;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|