@@ -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
76124export 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