Мой и другое расширение слились, и для устаревшего расширения мы проходим и проверяем, что пользователи будут хорошо информированы о слиянии. Одна вещь, которую я хотел бы сделать, чтобы сделать вещи очевидными, это сделать предупреждение об активации устаревшего расширения.
В package.json
я добавил
"activationEvents": [
"onLanguage:ada",
"onLanguage:adc",
"onLanguage:ali",
"onLanguage:gpr"
],
"main": "./out/extension.js",
И имейте extension.ts
со следующим:
import * as vscode from 'vscode';
export function activate(context: vscode.ExtensionContext) {
vscode.window.showWarningMessage('Hello World!');
}
export function deactivate() {}
Но предупреждающее сообщение не появляется. Я попытался заменить это оператором записи в консоль, и, конечно же, я получил зарегистрированное сообщение на хосте отладки, поэтому он, безусловно, выполняет функцию activate()
. Тогда я снова попытался показать предупреждение, установил некоторые контрольные точки и запустил его. Он пропустил прямо над функцией предупреждающего сообщения. Затем я поместил в функцию журнал консоли и предупреждающее сообщение, установил точки останова для обоих и запустил его. Он отлично выполнил консольный журнал, затем точки останова «переместились», пропустили сразу над предупреждающим сообщением и завершили функцию.
Я не очень хорошо знаю javascript / typcript, так что это полностью странное поведение для меня. Я знаю, что подъем может привести к тому, что переменные будут фактически объявлены в разных местах, откуда они написаны, но я знаю о похожих правилах выполнения функций. Кажется, что независимо от того, что я делаю, он не достигнет функции предупреждающего сообщения, даже если это должно , с моей точки зрения.