瀏覽代碼

HUE-4016 [editor] Add configuration option to enable the new autocompleter

Johan Ahlen 9 年之前
父節點
當前提交
5d61845f0d

+ 7 - 0
desktop/core/src/desktop/conf.py

@@ -1101,6 +1101,13 @@ DJANGO_EMAIL_BACKEND = Config(
   default="django.core.mail.backends.smtp.EmailBackend"
 )
 
+USE_NEW_AUTOCOMPLETER = Config( # To remove when it's working properly
+  key='use_new_autocompleter',
+  default=False,
+  type=coerce_bool,
+  help=_('Enable the new editor SQL autocompleter')
+)
+
 USE_NEW_EDITOR = Config( # To remove in Hue 4
   key='use_new_editor',
   default=True,

+ 12 - 7
desktop/core/src/desktop/static/desktop/js/ko.hue-bindings.js

@@ -2609,16 +2609,21 @@
       }
       editor.completer.exactMatch = ! snippet.isSqlDialect();
 
+      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);
+        }
+        editor.completers.push(snippet.autocompleter);
+      }
+
       var langTools = ace.require("ace/ext/language_tools");
       langTools.textCompleter.setSqlMode(snippet.isSqlDialect());
 
-      editor.on("focus", function () {
-        editor.completers.length = 0;
-        editor.completers.push(langTools.snippetCompleter);
-        editor.completers.push(langTools.textCompleter);
-        editor.completers.push(langTools.keyWordCompleter);
-        editor.completers.push(snippet.autocompleter);
-      });
+      editor.on("focus", initAutocompleters);
+      initAutocompleters();
 
       var placeHolderElement = null;
       var placeHolderVisible = false;

+ 3 - 1
desktop/libs/notebook/src/notebook/static/notebook/js/notebook.ko.js

@@ -1021,7 +1021,8 @@
     self.autocompleter = new Autocompleter({
       snippet: self,
       user: vm.user,
-      optEnabled: false
+      optEnabled: false,
+      useNewAutocompleter: vm.useNewAutocompleter
     });
 
     self.init = function () {
@@ -1574,6 +1575,7 @@
     self.i18n = i18n;
     self.user = options.user;
     self.userId = options.userId;
+    self.useNewAutocompleter = options.useNewAutocompleter || false;
     self.selectedNotebook = ko.observable();
     self.combinedContent = ko.observable();
     self.isPlayerMode = ko.observable(false);

+ 4 - 0
desktop/libs/notebook/src/notebook/templates/editor_components.mako

@@ -1340,6 +1340,7 @@ ${ hueIcons.symbols() }
         expandStar: '${ _ko("Shift + Click to replace with all columns") }',
         onBlur: saveTemporarySnippet,
         highlightedRange: result.statement_range,
+        useNewAutocompleter: $root.useNewAutocompleter,
         aceOptions: {
           showLineNumbers: $root.editorMode,
           showGutter: $root.editorMode,
@@ -2506,6 +2507,9 @@ ${ hueIcons.symbols() }
       user: '${ user.username }',
       userId: ${ user.id },
       assistAvailable: true,
+      %if conf.USE_NEW_AUTOCOMPLETER.get():
+      useNewAutocompleter: true,
+      %endif
       snippetViewSettings: {
         default: {
           placeHolder: '${ _("Example: SELECT * FROM tablename, or press CTRL + space") }',