All files / languages/sparql sparql-token-provider.ts

100% Statements 13/13
100% Branches 0/0
100% Functions 2/2
100% Lines 12/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49                                            6x 6x 6x 6x 6x 6x 6x 6x 6x 6x     6x 6x                          
import * as vscode from 'vscode';
import { container } from 'tsyringe';
import { ServiceToken } from '@src/services/tokens';
import {
	ResourceReferenceProvider,
	ResourceDefinitionProvider,
	ResourceTooltipProvider
} from '@src/providers';
import {
	TurtleAutoDefinePrefixProvider,
	TurtleCodeActionsProvider,
	TurtlePrefixCompletionProvider,
	TurtleRenameProvider
} from '@src/languages/turtle/providers';
import {
	SparqlCodeLensProvider,
	SparqlCompletionItemProvider,
	SparqlCodeFormattingProvider
} from '@src/languages/sparql/providers';
 
export class SparqlTokenProvider {
	constructor() {
		const codeActionsProvider = new TurtleCodeActionsProvider();
		const codeLensProvider = new SparqlCodeLensProvider();
		const completionProvider = new SparqlCompletionItemProvider();
		const definitionProvider = new ResourceDefinitionProvider();
		const formattingProvider = new SparqlCodeFormattingProvider();
		const hoverProvider = new ResourceTooltipProvider();
		const prefixCompletionProvider = new TurtlePrefixCompletionProvider((uri) => ` <${uri}>`);
		const referenceProvider = new ResourceReferenceProvider();
		const renameProvider = new TurtleRenameProvider();
		const autoDefinePrefixProvider = new TurtleAutoDefinePrefixProvider(['sparql']);
 
		// Self-register with the extension context for automatic disposal
		const context = container.resolve<vscode.ExtensionContext>(ServiceToken.ExtensionContext);
		context.subscriptions.push(
			autoDefinePrefixProvider,
			vscode.languages.registerCodeActionsProvider({ language: 'sparql' }, codeActionsProvider),
			vscode.languages.registerCodeLensProvider({ language: 'sparql' }, codeLensProvider),
			vscode.languages.registerCompletionItemProvider({ language: 'sparql' }, completionProvider, ...completionProvider.triggerCharacters),
			vscode.languages.registerDefinitionProvider({ language: 'sparql' }, definitionProvider),
			vscode.languages.registerDocumentFormattingEditProvider({ language: 'sparql' }, formattingProvider),
			vscode.languages.registerHoverProvider({ language: 'sparql' }, hoverProvider),
			vscode.languages.registerInlineCompletionItemProvider({ language: 'sparql' }, prefixCompletionProvider),
			vscode.languages.registerReferenceProvider({ language: 'sparql' }, referenceProvider),
			vscode.languages.registerRenameProvider({ language: 'sparql' }, renameProvider),
		);
	}
}