Skip to content

Commit bc48862

Browse files
TewanStefanH-AT
authored andcommitted
Port language extensions to use new document filter schemes
1 parent 6a0ce96 commit bc48862

File tree

3 files changed

+49
-16
lines changed

3 files changed

+49
-16
lines changed

src/language/lang-captions.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,25 @@
33
// Implementations of language utility providers for the captions language.
44
// ==========================================================================
55

6-
import { TextDocument, CancellationToken, DocumentColorProvider, Color, ColorPresentation, Range, ColorInformation, languages, SemanticTokensLegend, SemanticTokensBuilder, ExtensionContext, DocumentSelector } from "vscode";
6+
import { TextDocument, CancellationToken, DocumentColorProvider, Color, ColorPresentation, Range, ColorInformation, languages, SemanticTokensLegend, SemanticTokensBuilder, ExtensionContext, DocumentSelector, DocumentFilter } from "vscode";
77
import { getDocument, KeyvalueDocumentFormatter, KvTokensProviderBase, legend, Processor } from "../keyvalue-document";
88
import { populateColorTagMatches } from "../kv-core/kv-caption-tag-matches";
99

10-
export const selector: DocumentSelector = "captions";
10+
export const filterCaptionsSaved: DocumentFilter = {
11+
language: "captions",
12+
scheme: "file"
13+
};
14+
export const filterCaptionsUnsaved: DocumentFilter = {
15+
language: "captions",
16+
scheme: "untitled"
17+
};
18+
19+
export const selectorAll: ReadonlyArray<DocumentFilter> = [filterCaptionsSaved, filterCaptionsUnsaved];
1120

1221
export function init(context: ExtensionContext): void {
13-
const captionsColors = languages.registerColorProvider(selector, new CaptionColorsProvider());
14-
const captionsTokenProvider = languages.registerDocumentSemanticTokensProvider(selector, new CaptionsSemanticTokenProvider(), legend);
15-
const captionsFormatter = languages.registerDocumentFormattingEditProvider(selector, new KeyvalueDocumentFormatter());
22+
const captionsColors = languages.registerColorProvider(selectorAll, new CaptionColorsProvider());
23+
const captionsTokenProvider = languages.registerDocumentSemanticTokensProvider(selectorAll, new CaptionsSemanticTokenProvider(), legend);
24+
const captionsFormatter = languages.registerDocumentFormattingEditProvider(selectorAll, new KeyvalueDocumentFormatter());
1625
context.subscriptions.push(captionsColors, captionsTokenProvider, captionsFormatter);
1726
}
1827

src/language/lang-keyvalue.ts

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,31 @@
55
// This is NOT a base for other formats!
66
// ==========================================================================
77

8-
import { Range, SemanticTokensBuilder, SemanticTokensLegend, languages, TextDocument, ExtensionContext, DocumentSelector } from "vscode";
8+
import { Range, SemanticTokensBuilder, SemanticTokensLegend, languages, TextDocument, ExtensionContext, DocumentSelector, DocumentFilter } from "vscode";
99
import { KeyvalueDocumentFormatter, KvTokensProviderBase, legend, Processor } from "../keyvalue-document";
1010

11-
export const selector: DocumentSelector = [ "keyvalue3", "soundscript" ];
11+
export const filterKvSaved: DocumentFilter = {
12+
language: "keyvalue3",
13+
scheme: "file"
14+
};
15+
export const filterKvUnsaved: DocumentFilter = {
16+
language: "keyvalue3",
17+
scheme: "untitled"
18+
};
19+
export const filterSoundscriptSaved: DocumentFilter = {
20+
language: "soundscript",
21+
scheme: "file"
22+
};
23+
export const filterSoundscriptUnsaved: DocumentFilter = {
24+
language: "soundscript",
25+
scheme: "untitled"
26+
};
27+
export const selectorAll: ReadonlyArray<DocumentFilter> = [ filterKvSaved, filterKvUnsaved, filterSoundscriptSaved, filterSoundscriptUnsaved ];
1228

1329
export function init(context: ExtensionContext): void {
1430
const kvTokenProvider = new KeyvalueSemanticTokensProvider();
15-
const kvSemantics = languages.registerDocumentSemanticTokensProvider(selector, kvTokenProvider, kvTokenProvider.legend);
16-
const kvFormatter = languages.registerDocumentFormattingEditProvider(selector, new KeyvalueDocumentFormatter());
31+
const kvSemantics = languages.registerDocumentSemanticTokensProvider(selectorAll, kvTokenProvider, kvTokenProvider.legend);
32+
const kvFormatter = languages.registerDocumentFormattingEditProvider(selectorAll, new KeyvalueDocumentFormatter());
1733
context.subscriptions.push(kvSemantics, kvTokenProvider.diagnosticCollection, kvFormatter);
1834
}
1935

src/language/lang-vmt.ts

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// Implementations of language utility providers for the vmt language.
44
// ==========================================================================
55

6-
import { CompletionItemProvider, TextDocument, Position, CancellationToken, CompletionItem, CompletionList, Range, SemanticTokensBuilder, SemanticTokensLegend, languages, HoverProvider, Hover, ProviderResult, Diagnostic, DiagnosticSeverity, DocumentColorProvider, Color, ColorInformation, ColorPresentation, CompletionItemKind, SnippetString, MarkdownString, ExtensionContext, DocumentSelector } from "vscode";
6+
import { CompletionItemProvider, TextDocument, Position, CancellationToken, CompletionItem, CompletionList, Range, SemanticTokensBuilder, SemanticTokensLegend, languages, HoverProvider, Hover, ProviderResult, Diagnostic, DiagnosticSeverity, DocumentColorProvider, Color, ColorInformation, ColorPresentation, CompletionItemKind, SnippetString, MarkdownString, ExtensionContext, DocumentSelector, DocumentFilter } from "vscode";
77
import { KeyvalueDocument, getDocument, KeyValue, KeyvalueDocumentFormatter, KvTokensProviderBase, Processor, legend } from "../keyvalue-document";
88
import { Token } from "../kv-core/kv-tokenizer";
99
import { ShaderParam } from "../kv-core/shader-param";
@@ -13,7 +13,15 @@ import { config } from "../main";
1313
import { isFloatValue, isScalarValue } from "../kv-core/kv-string-util";
1414

1515

16-
export const selector: DocumentSelector = "vmt";
16+
export const filterVmtSaved: DocumentFilter = {
17+
language: "vmt",
18+
scheme: "file"
19+
};
20+
export const filterVmtUnsaved: DocumentFilter = {
21+
language: "vmt",
22+
scheme: "untitled"
23+
};
24+
export const selectorAll: ReadonlyArray<DocumentFilter> = [filterVmtSaved, filterVmtUnsaved];
1725

1826
export let shaderParams: ShaderParam[];
1927
export let internalTextures: string[];
@@ -22,11 +30,11 @@ export function init(context: ExtensionContext): void {
2230
shaderParams = config.get("shaderParameters") ?? [];
2331
internalTextures = config.get("internalTextures") ?? [];
2432

25-
const vmtSemantics = languages.registerDocumentSemanticTokensProvider(selector, new VmtSemanticTokenProvider(), legend);
26-
const vmtCompletion = languages.registerCompletionItemProvider(selector, new ShaderParamCompletionItemProvider(), "$", "%");
27-
const vmtHover = languages.registerHoverProvider(selector, new ShaderParamHoverProvider());
28-
const vmtColors = languages.registerColorProvider(selector, new ShaderParamColorsProvider());
29-
const vmtFormatter = languages.registerDocumentFormattingEditProvider(selector, new KeyvalueDocumentFormatter());
33+
const vmtSemantics = languages.registerDocumentSemanticTokensProvider(selectorAll, new VmtSemanticTokenProvider(), legend);
34+
const vmtCompletion = languages.registerCompletionItemProvider(selectorAll, new ShaderParamCompletionItemProvider(), "$", "%");
35+
const vmtHover = languages.registerHoverProvider(selectorAll, new ShaderParamHoverProvider());
36+
const vmtColors = languages.registerColorProvider(selectorAll, new ShaderParamColorsProvider());
37+
const vmtFormatter = languages.registerDocumentFormattingEditProvider(selectorAll, new KeyvalueDocumentFormatter());
3038
context.subscriptions.push(vmtSemantics, vmtCompletion, vmtHover, vmtColors, vmtFormatter);
3139
}
3240

0 commit comments

Comments
 (0)