Я создал 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, только если соответствующий файл открыт в редакторе