Skip to content

Commit 7cc28c3

Browse files
committed
Add markdown validation status item
Fixes microsoft#236399
1 parent d08f30d commit 7cc28c3

File tree

1 file changed

+52
-1
lines changed
  • extensions/markdown-language-features/src/languageFeatures

1 file changed

+52
-1
lines changed

extensions/markdown-language-features/src/languageFeatures/diagnostics.ts

+52-1
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,61 @@ class AddToIgnoreLinksQuickFixProvider implements vscode.CodeActionProvider {
7272
}
7373
}
7474

75+
function registerMarkdownStatusItem(selector: vscode.DocumentSelector, commandManager: CommandManager): vscode.Disposable {
76+
const statusItem = vscode.languages.createLanguageStatusItem('markdownStatus', selector);
77+
78+
const enabledSettingId = 'validate.enabled';
79+
const commandId = '_markdown.toggleValidation';
80+
81+
const commandSub = commandManager.register({
82+
id: commandId,
83+
execute: (enabled: boolean) => {
84+
vscode.workspace.getConfiguration('markdown').update(enabledSettingId, enabled);
85+
}
86+
});
87+
88+
const update = () => {
89+
const activeDoc = vscode.window.activeTextEditor?.document;
90+
const markdownDoc = activeDoc?.languageId === 'markdown' ? activeDoc : undefined;
91+
92+
const enabled = vscode.workspace.getConfiguration('markdown', markdownDoc).get(enabledSettingId);
93+
if (enabled) {
94+
statusItem.text = vscode.l10n.t('Link validation enabled');
95+
statusItem.command = {
96+
command: commandId,
97+
arguments: [false],
98+
title: vscode.l10n.t('Disable'),
99+
tooltip: vscode.l10n.t('Disable validation of Markdown links'),
100+
};
101+
} else {
102+
statusItem.text = vscode.l10n.t('Link validation disabled');
103+
statusItem.command = {
104+
command: commandId,
105+
arguments: [true],
106+
title: vscode.l10n.t('Enable'),
107+
tooltip: vscode.l10n.t('Enable validation of Markdown links'),
108+
};
109+
}
110+
};
111+
update();
112+
113+
return vscode.Disposable.from(
114+
statusItem,
115+
commandSub,
116+
vscode.workspace.onDidChangeConfiguration(e => {
117+
if (e.affectsConfiguration('markdown.' + enabledSettingId)) {
118+
update();
119+
}
120+
}),
121+
);
122+
}
75123

76124
export function registerDiagnosticSupport(
77125
selector: vscode.DocumentSelector,
78126
commandManager: CommandManager,
79127
): vscode.Disposable {
80-
return AddToIgnoreLinksQuickFixProvider.register(selector, commandManager);
128+
return vscode.Disposable.from(
129+
AddToIgnoreLinksQuickFixProvider.register(selector, commandManager),
130+
registerMarkdownStatusItem(selector, commandManager),
131+
);
81132
}

0 commit comments

Comments
 (0)