Элементы автозаполнения, добавленные в список автозаполнения, не отображаются после сохранения файла - PullRequest
1 голос
/ 22 декабря 2019

Этот образец работает нормально перед сохранением. Наличие «Untitled-1» работает нормально, так как после сохранения его в «test.py» элемент, кажется, не был добавлен в список автозаполнения. Я запускал «npm install» в папке несколько раз, но это не помогло. Вот расширения файлов, которые не работают:

  • .ts
  • .c
  • .cpp
  • .js
  • .py
  • .sh

Расширения, которые работают:

  • Без расширения (unsaved9
  • .txt

Я запускаю это на: - Ubuntu 18.04.2 LTS - vscode 1.41.0

Редактировать:

Мне удалось воспроизвести проблему на моемWindows machine. Инструкции по воспроизведению:

  1. Клонируйте этот Git
  2. Запустите "npm install" в папке с примерами завершений
  3. Откройте папку с примерами завершений в vscode
  4. Выберите «Начать отладку» в разделе «Отладка», чтобы запустить расширение
  5. Создайте новый файл и не сохраняйте.
  6. Нажмите Ctrl + Shift + p и выберите «Предложить триггер». Должно появиться меню с элементами из кода расширения, например «Hello World!».
  7. Дайте файлу расширение путем сохранения, например «.py». Повторите шаг 5, и меню не будет содержать никаких пользовательскихautocomplete items.

На этом я работаю:

  • Windows 10
  • Свежая установка vscode 1.41.1

1 Ответ

0 голосов
/ 23 декабря 2019

Я попросил помощи на официальном репозитории vscode. Видимо, вам нужно изменить идентификатор языка при добавлении элемента автозаполнения. По умолчанию он имеет значение «открытый текст», что означает, что элементы автозаполнения будут отображаться только для документов с открытым текстом.

let provider = vscode.languages.registerCompletionItemProvider('plaintext', {

    provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken, context: vscode.CompletionContext) {

        // a simple completion item which inserts `Hello World!`
        const simpleCompletion = new vscode.CompletionItem('Hello World!');

        // return all completion items as array
        return [
            simpleCompletion
        ];
    }
});

Если я хочу, чтобы элементы отображались для python, я могу найти идентификатор языка на эту ссылку и измените код на:

let provider = vscode.languages.registerCompletionItemProvider('python', {

    provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken, context: vscode.CompletionContext) {

        // a simple completion item which inserts `Hello World!`
        const simpleCompletion = new vscode.CompletionItem('Hello World!');

        // return all completion items as array
        return [
            simpleCompletion
        ];
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...