diff --git a/extensions/html-language-features/client/src/htmlMain.ts b/extensions/html-language-features/client/src/htmlMain.ts
index ad1aa45f310..50f6c126af5 100644
--- a/extensions/html-language-features/client/src/htmlMain.ts
+++ b/extensions/html-language-features/client/src/htmlMain.ts
@@ -9,9 +9,9 @@ import * as nls from 'vscode-nls';
const localize = nls.loadMessageBundle();
import {
- languages, ExtensionContext, IndentAction, Position, TextDocument, Range, CompletionItem, CompletionItemKind, SnippetString, workspace,
+ languages, ExtensionContext, IndentAction, Position, TextDocument, Range, CompletionItem, CompletionItemKind, SnippetString, workspace, extensions,
Disposable, FormattingOptions, CancellationToken, ProviderResult, TextEdit, CompletionContext, CompletionList, SemanticTokensLegend,
- DocumentSemanticTokensProvider, DocumentRangeSemanticTokensProvider, SemanticTokens
+ DocumentSemanticTokensProvider, DocumentRangeSemanticTokensProvider, SemanticTokens, window, commands
} from 'vscode';
import {
LanguageClient, LanguageClientOptions, ServerOptions, TransportKind, RequestType, TextDocumentPositionParams, DocumentRangeFormattingParams,
@@ -41,6 +41,12 @@ namespace SemanticTokenLegendRequest {
export const type: RequestType0<{ types: string[]; modifiers: string[] } | null, any, any> = new RequestType0('html/semanticTokenLegend');
}
+namespace SettingIds {
+ export const renameOnType = 'editor.renameOnType';
+ export const formatEnable = 'html.format.enable';
+
+}
+
interface IPackageInfo {
name: string;
version: string;
@@ -140,7 +146,7 @@ export function activate(context: ExtensionContext) {
// manually register / deregister format provider based on the `html.format.enable` setting avoiding issues with late registration. See #71652.
updateFormatterRegistration();
toDispose.push({ dispose: () => rangeFormatting && rangeFormatting.dispose() });
- toDispose.push(workspace.onDidChangeConfiguration(e => e.affectsConfiguration('html.format.enable') && updateFormatterRegistration()));
+ toDispose.push(workspace.onDidChangeConfiguration(e => e.affectsConfiguration(SettingIds.formatEnable) && updateFormatterRegistration()));
client.sendRequest(SemanticTokenLegendRequest.type).then(legend => {
if (legend) {
@@ -180,7 +186,7 @@ export function activate(context: ExtensionContext) {
});
function updateFormatterRegistration() {
- const formatEnabled = workspace.getConfiguration().get('html.format.enable');
+ const formatEnabled = workspace.getConfiguration().get(SettingIds.formatEnable);
if (!formatEnabled && rangeFormatting) {
rangeFormatting.dispose();
rangeFormatting = undefined;
@@ -290,6 +296,23 @@ export function activate(context: ExtensionContext) {
return results;
}
});
+
+ const promptForTypeOnRenameKey = 'html.promptForTypeOnRename';
+ const promptForTypeOnRename =
+ !workspace.getConfiguration().get(SettingIds.renameOnType, { languageId: 'html' }) &&
+ extensions.getExtension('formulahendry.auto-rename-tag') &&
+ (context.globalState.get(promptForTypeOnRenameKey) !== false);
+
+ toDispose.push(window.onDidChangeActiveTextEditor(async e => {
+ if (e && promptForTypeOnRename && documentSelector.indexOf(e.document.languageId) !== -1) {
+ context.globalState.update(promptForTypeOnRenameKey, false);
+ const configure = localize('configureButton', 'Configure');
+ const res = await window.showInformationMessage(localize('renameOnTypeQuestion', 'VS Code now has built-in support for auto-renaming tags. Do you want to enable it?'), configure);
+ if (res === configure) {
+ commands.executeCommand('workbench.action.openSettings', SettingIds.renameOnType);
+ }
+ }
+ }));
}
function getPackageInfo(context: ExtensionContext): IPackageInfo | null {