diff --git a/src/autocomplete.js b/src/autocomplete.js index f9cc1a1d062..95fa49f66c7 100644 --- a/src/autocomplete.js +++ b/src/autocomplete.js @@ -574,7 +574,8 @@ class Autocomplete { ]; this.completions = new FilteredList(completionsForEmpty); this.openPopup(this.editor, prefix, keepPopupPosition); - this.popup.renderer.setStyle("ace_loading", false); + this.popup.renderer.setStyle("ace_loading", false); + this.popup.renderer.setStyle("ace_empty-message", true); return; } return this.detach(); @@ -598,6 +599,7 @@ class Autocomplete { this.openPopup(this.editor, prefix, keepPopupPosition); + this.popup.renderer.setStyle("ace_empty-message", false); this.popup.renderer.setStyle("ace_loading", !finished); }.bind(this)); diff --git a/src/autocomplete_test.js b/src/autocomplete_test.js index 0c78971d3ce..b48ec080b21 100644 --- a/src/autocomplete_test.js +++ b/src/autocomplete_test.js @@ -462,12 +462,52 @@ module.exports = { user.type("Ctrl-Space"); assert.equal(editor.completer.popup.isOpen, true); assert.equal(editor.completer.popup.data[0].caption, emptyMessageText); + assert.ok(editor.completer.popup.renderer.container.classList.contains("ace_empty-message")); user.type("Return"); assert.equal(editor.completer.popup.isOpen, false); done(); }, + "test: no empty message class if suggestions available": function(done) { + var editor = initEditor(""); + var emptyMessageText = "No suggestions."; + var autocomplete = Autocomplete.for(editor); + autocomplete.emptyMessage = () => emptyMessageText; + + editor.completers = [ + { + getCompletions: function (editor, session, pos, prefix, callback) { + var completions = [ + { + caption: "append", + value: "append" + } + ]; + callback(null, completions); + } + } + ]; + + user.type("b"); + + // Open autocompletion via key-binding and verify empty message class + user.type("Ctrl-Space"); + assert.equal(editor.completer.popup.isOpen, true); + assert.equal(editor.completer.popup.data[0].caption, emptyMessageText); + assert.ok(editor.completer.popup.renderer.container.classList.contains("ace_empty-message")); + + user.type("Backspace"); + assert.equal(editor.completer.popup.isOpen, false); + + // Open autocompletion via key-binding and verify no empty message class + user.type("Ctrl-Space"); + assert.equal(editor.completer.popup.isOpen, true); + assert.equal(editor.completer.popup.data[0].caption, "append"); + assert.ok(!editor.completer.popup.renderer.container.classList.contains("ace_empty-message")); + + done(); + }, "test: liveAutocompleteDelay": function(done) { var editor = initEditor("hello world "); editor.setOptions({