Прослушиватель расширений Vscode, когда файл открыт - PullRequest
1 голос
/ 22 апреля 2020

Я создал vs расширение, которое должно прослушивать изменения файла и реагировать соответствующим образом.

Расширение работает, когда вы открываете файл, такой как rakefile в редакторе, однако, если vscode открыт без какого-либо файла в редакторе или на странице приветствия я получил ошибку "не могу прочитать свойство undefined". Я помещаю if внутри конструктора , чтобы проверить, если activeTextEditor, потому что я хочу предоставить listener для файла, однако иногда я получаю эту ошибку, где я должен сделать это, чтобы покрыть оба сценария ios? Я хочу предоставить слушателю только когда файл открыт в редакторе

 export class TaskProvider implements vscode.TaskProvider {
      static MType = "rakefile";
      private makePromise: Thenable<vscode.Task[]> | undefined = undefined;

      constructor() {

    `    const filePath = vscode.window.activeTextEditor.document.fileName;
        const fileWatcher = vscode.workspace.createFileSystemWatcher(filePath);
        fileWatcher.onDidChange(() => (this.mPromise = this.provideTasks()));
        fileWatcher.onDidCreate(() => (this.mPromise = this.provideTasks()));

Если я выполняю функцию активации if inside

export function activate(_context: vscode.ExtensionContext): void {
  const workspaceRoot = vscode.workspace.rootPath;

  if (vscode.window.activeTextEditor) {
    if (!workspaceRoot) {
      return;
    }

Однако я не получаю ошибку, если открываю С соответствующим файлом (rakefile) ничего не происходит. так как событие не зарегистрировано

В конце я хочу зарегистрировать задачу et c, только если соответствующий файл открыт в редакторе

...