Редактор Монако: как мы можем не открывать подсказку для некоторых случаев - PullRequest
0 голосов
/ 14 января 2020

Monaco Editor : 0.15.6

Описание проблемы :

Я реализовал автоматическое предложение в редакторе Monaco и использовал вызов ajax чтобы показать данные в виджете предложить.

Я хочу при открытии редактора Monaco. Я хочу отправить фиктивный вызов на сервер, чтобы я мог выполнить некоторую обработку на сервере и не хочу показывать совет на виджете. front end.

Но если я отправляю фиктивный запрос, он отображает подсказку подсказки с «Нет предложений».

Ожидание :

Я не хочу показывать подсказку для этих случаев. Возможно ли это?

Наблюдение :

Предложить виджет виден там, где я не хочу его показывать.

Примечание : Если я отправляю такой же запрос по нажатию кнопки ";" символ, то окно не отображается. Но в обоих случаях это onLoad или ";" нажмите Я возвращаю предложение emty ([]) из бэкэнда.

Код для ссылки :


 this._registerCompletionItemProviderRef = languages.registerCompletionItemProvider("java", {
            triggerCharacters: this.triggerCharactersArray, /** Triggering character to invoke auto completion */
            provideCompletionItems: function (model, position) {
                return this.getAutoCompleteData(model, position).then(function (res) {
                    /** Get completion response from websocket */
                    let completionListSuggestion = getCompletionList(res ? JSON.parse(res) : null);

                    /** Return suggestion list to GUI */
                    return {
                        incomplete: true, // So that autocompletion request is sent on every char
                        suggestions: completionListSuggestion.map(item => ({ ...item }))
                    };
                }.bind(this));
            }.bind(this)
        });


getAutoCompleteData(model, position) {
        return new Promise(function (resolve, reject) {
            this._autocompleteWSSubscr = this._wsObject.subscribe(
                data => {
                    resolve(data);
                },
                error => {
                    console.log('Error in autocomplete recieved from WS :' + JSON.stringify(error));
                    reject(error);
                }
            );

            this.sendAutoCompletionData(model, position);

        }.bind(this));
    }

...