打开文件时的Vscode扩展文件侦听器

时间:2020-04-22 06:29:03

标签: javascript node.js visual-studio-code vscode-extensions

我创建了vs扩展程序,它需要侦听文件更改并做出相应的反应。

当您在编辑器中打开rakefile之类的文件时,该扩展名有效,但是,如果在编辑器中没有任何文件的情况下打开vscode或欢迎页面,则会出现错误“无法读取未定义的属性”。 我将if放入 constructor 内以检查是否activeTextEditor,因为我想向文件提供 listener ,但是有时会出现此错误,我应该在哪里做涵盖这两种情况?我的意思是仅在编辑器中打开文件

时才提供侦听器
 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内部激活功能

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

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

但是如果我打开相关文件(rakefile),我什么都没有得到。由于事件didint已注册

最后,我想要的是注册任务等,即使在编辑器中打开了相关文件

0 个答案:

没有答案