1+ import * as vscode from 'vscode' ;
2+
3+ export function setupCvbAsMarkdown ( context : vscode . ExtensionContext ) {
4+ const config = vscode . workspace . getConfiguration ( 'codeReDesign' ) ;
5+ const treatCvbAsMarkdown = config . get ( 'treatCvbAsMarkdown' , true ) ;
6+
7+ const originalLanguages : { [ key : string ] : string } = { } ;
8+
9+ function setLanguageForCvbDocuments ( enabled : boolean ) {
10+ vscode . workspace . textDocuments . forEach ( doc => {
11+ if ( doc . fileName . endsWith ( '.cvb' ) ) {
12+ if ( enabled ) {
13+ originalLanguages [ doc . uri . toString ( ) ] = doc . languageId ;
14+ vscode . languages . setTextDocumentLanguage ( doc , 'markdown' ) ;
15+ } else {
16+ const originalLanguage = originalLanguages [ doc . uri . toString ( ) ] ;
17+ if ( originalLanguage ) {
18+ vscode . languages . setTextDocumentLanguage ( doc , originalLanguage ) ;
19+ delete originalLanguages [ doc . uri . toString ( ) ] ;
20+ }
21+ }
22+ }
23+ } ) ;
24+ }
25+
26+ if ( treatCvbAsMarkdown ) {
27+ setLanguageForCvbDocuments ( true ) ;
28+
29+ const openDocumentListener = vscode . workspace . onDidOpenTextDocument ( document => {
30+ if ( document . fileName . endsWith ( '.cvb' ) ) {
31+ originalLanguages [ document . uri . toString ( ) ] = document . languageId ;
32+ vscode . languages . setTextDocumentLanguage ( document , 'markdown' ) ;
33+ }
34+ } ) ;
35+ context . subscriptions . push ( openDocumentListener ) ;
36+ }
37+
38+ config . onDidChange ( ( e : vscode . ConfigurationChangeEvent ) => {
39+ if ( e . affectsConfiguration ( 'codeReDesign.treatCvbAsMarkdown' ) ) {
40+ const newValue = config . get ( 'treatCvbAsMarkdown' , true ) ;
41+ setLanguageForCvbDocuments ( newValue ) ;
42+ }
43+ } , null , context . subscriptions ) ;
44+ }
0 commit comments