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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x | import * as vscode from 'vscode';
import { container } from 'tsyringe';
import { VocabularyRepository } from '@faubulous/mentor-rdf';
import { ServiceToken } from '@src/services/tokens';
import { IDocumentContextService, IPrefixLookupService, IPresetDocumentService } from '@src/services/document';
import { IWorkspaceIndexerService, IWorkspaceRenameService } from '@src/services/core';
import {
ISparqlConnectionRegistry,
ISparqlQueryService,
ITripleStoreConfigService,
IGraphManagementService,
IDocumentConnectionService
} from '@src/languages/sparql/services';
import {
ResourceReferenceProvider,
ResourceDefinitionProvider,
WorkspaceGraphDefinitionProvider,
NotebookCellSlugCodeLensProvider
} from '@src/providers';
import {
TurtleAutoDefinePrefixProvider,
TurtleCodeActionsProvider,
TurtlePrefixCompletionProvider
} from '@src/languages/turtle/providers';
import {
SparqlCodeLensProvider,
SparqlCompletionItemProvider,
SparqlCodeFormattingProvider,
SparqlGraphDiagnosticProvider,
SparqlRenameProvider
} from '@src/languages/sparql/providers';
import { SparqlPrefixDefinitionService } from '@src/languages/sparql/services/sparql-prefix-definition-service';
/**
* Registers the language feature providers for the SPARQL language.
*
* This is a composition point: services are resolved from the container once
* and passed into the provider constructors.
*/
export class SparqlTokenProvider {
constructor() {
const contextService = container.resolve<IDocumentContextService>(ServiceToken.DocumentContextService);
const vocabulary = container.resolve<VocabularyRepository>(ServiceToken.VocabularyRepository);
const prefixLookup = container.resolve<IPrefixLookupService>(ServiceToken.PrefixLookupService);
const connectionRegistry = container.resolve<ISparqlConnectionRegistry>(ServiceToken.SparqlConnectionRegistry);
const documentConnectionService = container.resolve<IDocumentConnectionService>(ServiceToken.DocumentConnectionService);
const storeConfigService = container.resolve<ITripleStoreConfigService>(ServiceToken.StoreConfigService);
const queryService = container.resolve<ISparqlQueryService>(ServiceToken.SparqlQueryService);
const graphService = container.resolve<IGraphManagementService>(ServiceToken.GraphManagementService);
const renameService = container.resolve<IWorkspaceRenameService>(ServiceToken.WorkspaceRenameService);
const workspaceIndexer = container.resolve<IWorkspaceIndexerService>(ServiceToken.WorkspaceIndexerService);
const presetDocuments = container.resolve<IPresetDocumentService>(ServiceToken.PresetDocumentService);
const codeActionsProvider = new TurtleCodeActionsProvider(contextService);
const codeLensProvider = new SparqlCodeLensProvider(connectionRegistry, documentConnectionService, storeConfigService, queryService);
const notebookSlugCodelensProvider = new NotebookCellSlugCodeLensProvider(contextService);
const completionProvider = new SparqlCompletionItemProvider(contextService, vocabulary, connectionRegistry, documentConnectionService, graphService);
const definitionProvider = new ResourceDefinitionProvider(contextService, workspaceIndexer, presetDocuments);
const workspaceGraphDefinitionProvider = new WorkspaceGraphDefinitionProvider(contextService);
const formattingProvider = new SparqlCodeFormattingProvider();
const prefixCompletionProvider = new TurtlePrefixCompletionProvider((uri) => ` <${uri}>`, contextService, prefixLookup);
const referenceProvider = new ResourceReferenceProvider(contextService);
const renameProvider = new SparqlRenameProvider(contextService, renameService);
const prefixDefinitionService = container.resolve<SparqlPrefixDefinitionService>(ServiceToken.SparqlPrefixDefinitionService);
const autoDefinePrefixProvider = new TurtleAutoDefinePrefixProvider(['sparql'], prefixDefinitionService, contextService);
const graphDiagnosticProvider = new SparqlGraphDiagnosticProvider(documentConnectionService, graphService);
// Self-register with the extension context for automatic disposal
const context = container.resolve<vscode.ExtensionContext>(ServiceToken.ExtensionContext);
context.subscriptions.push(
autoDefinePrefixProvider,
graphDiagnosticProvider,
vscode.languages.registerCodeActionsProvider({ language: 'sparql' }, codeActionsProvider, {
providedCodeActionKinds: TurtleCodeActionsProvider.providedCodeActionKinds
}),
vscode.languages.registerCodeLensProvider({ language: 'sparql' }, codeLensProvider),
vscode.languages.registerCompletionItemProvider({ language: 'sparql' }, completionProvider, ...completionProvider.triggerCharacters),
vscode.languages.registerDefinitionProvider({ language: 'sparql' }, definitionProvider),
vscode.languages.registerDefinitionProvider({ language: 'sparql' }, workspaceGraphDefinitionProvider),
vscode.languages.registerDocumentFormattingEditProvider({ language: 'sparql' }, formattingProvider),
vscode.languages.registerInlineCompletionItemProvider({ language: 'sparql' }, prefixCompletionProvider),
vscode.languages.registerReferenceProvider({ language: 'sparql' }, referenceProvider),
vscode.languages.registerRenameProvider({ language: 'sparql' }, renameProvider),
vscode.languages.registerCodeLensProvider({ language: 'sparql' }, notebookSlugCodelensProvider),
);
}
}
|