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 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 329x 329x 329x 329x 329x 329x 329x 329x 73x 73x 73x 73x 73x 4x 310x 26x 26x 4x 4x 4x 26x 26x 118x | /*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { JSONCompletion } from './services/jsonCompletion'; import { JSONHover } from './services/jsonHover'; import { JSONValidation } from './services/jsonValidation'; import { JSONDocumentSymbols } from './services/jsonDocumentSymbols'; import { parse as parseJSON, JSONDocument as InternalJSONDocument, newJSONDocument } from './parser/jsonParser'; import { schemaContributions } from './services/configuration'; import { JSONSchemaService } from './services/jsonSchemaService'; import { getFoldingRanges } from './services/jsonFolding'; import { getSelectionRanges } from './services/jsonSelectionRanges'; import { format as formatJSON, Range as JSONCRange } from 'jsonc-parser'; import { Thenable, ASTNode, Color, ColorInformation, ColorPresentation, LanguageServiceParams, LanguageSettings, DocumentLanguageSettings, FoldingRange, JSONSchema, SelectionRange, FoldingRangesContext, DocumentSymbolsContext, ColorInformationContext as DocumentColorsContext, TextDocument, Position, CompletionItem, CompletionList, Hover, Range, SymbolInformation, Diagnostic, TextEdit, FormattingOptions, DocumentSymbol } from './jsonLanguageTypes'; export type JSONDocument = {}; export * from './jsonLanguageTypes'; export interface LanguageService { configure(settings: LanguageSettings): void; doValidation(document: TextDocument, jsonDocument: JSONDocument, documentSettings?: DocumentLanguageSettings, schema?: JSONSchema): Thenable<Diagnostic[]>; parseJSONDocument(document: TextDocument): JSONDocument; newJSONDocument(rootNode: ASTNode, syntaxDiagnostics?: Diagnostic[]): JSONDocument; resetSchema(uri: string): boolean; doResolve(item: CompletionItem): Thenable<CompletionItem>; doComplete(document: TextDocument, position: Position, doc: JSONDocument): Thenable<CompletionList | null>; findDocumentSymbols(document: TextDocument, doc: JSONDocument, context?: DocumentSymbolsContext): SymbolInformation[]; findDocumentSymbols2(document: TextDocument, doc: JSONDocument, context?: DocumentSymbolsContext): DocumentSymbol[]; /** deprecated, use findDocumentColors instead */ findColorSymbols(document: TextDocument, doc: JSONDocument): Thenable<Range[]>; findDocumentColors(document: TextDocument, doc: JSONDocument, context?: DocumentColorsContext): Thenable<ColorInformation[]>; getColorPresentations(document: TextDocument, doc: JSONDocument, color: Color, range: Range): ColorPresentation[]; doHover(document: TextDocument, position: Position, doc: JSONDocument): Thenable<Hover | null>; format(document: TextDocument, range: Range, options: FormattingOptions): TextEdit[]; getFoldingRanges(document: TextDocument, context?: FoldingRangesContext): FoldingRange[]; getSelectionRanges(document: TextDocument, positions: Position[], doc: JSONDocument): SelectionRange[]; } export function getLanguageService(params: LanguageServiceParams): LanguageService { const promise = params.promiseConstructor || Promise; const jsonSchemaService = new JSONSchemaService(params.schemaRequestService, params.workspaceContext, promise); jsonSchemaService.setSchemaContributions(schemaContributions); const jsonCompletion = new JSONCompletion(jsonSchemaService, params.contributions, promise, params.clientCapabilities); const jsonHover = new JSONHover(jsonSchemaService, params.contributions, promise); const jsonDocumentSymbols = new JSONDocumentSymbols(jsonSchemaService); const jsonValidation = new JSONValidation(jsonSchemaService, promise); return { configure: (settings: LanguageSettings) => { jsonSchemaService.clearExternalSchemas(); Eif (settings.schemas) { settings.schemas.forEach(settings => { jsonSchemaService.registerExternalSchema(settings.uri, settings.fileMatch, settings.schema); }); } jsonValidation.configure(settings); }, resetSchema: (uri: string) => jsonSchemaService.onResourceChange(uri), doValidation: jsonValidation.doValidation.bind(jsonValidation), parseJSONDocument: (document: TextDocument) => parseJSON(document, { collectComments: true }), newJSONDocument: (root: ASTNode, diagnostics: Diagnostic[]) => newJSONDocument(root, diagnostics), doResolve: jsonCompletion.doResolve.bind(jsonCompletion), doComplete: jsonCompletion.doComplete.bind(jsonCompletion), findDocumentSymbols: jsonDocumentSymbols.findDocumentSymbols.bind(jsonDocumentSymbols), findDocumentSymbols2: jsonDocumentSymbols.findDocumentSymbols2.bind(jsonDocumentSymbols), findColorSymbols: (d, s) => jsonDocumentSymbols.findDocumentColors(d, <InternalJSONDocument>s).then(s => s.map(s => s.range)), findDocumentColors: jsonDocumentSymbols.findDocumentColors.bind(jsonDocumentSymbols), getColorPresentations: jsonDocumentSymbols.getColorPresentations.bind(jsonDocumentSymbols), doHover: jsonHover.doHover.bind(jsonHover), getFoldingRanges, getSelectionRanges, format: (d, r, o) => { let range: JSONCRange | undefined = undefined; if (r) { const offset = d.offsetAt(r.start); const length = d.offsetAt(r.end) - offset; range = { offset, length }; } const options = { tabSize: o ? o.tabSize : 4, insertSpaces: o ? o.insertSpaces : true, eol: '\n' }; return formatJSON(d.getText(), range, options).map(e => { return TextEdit.replace(Range.create(d.positionAt(e.offset), d.positionAt(e.offset + e.length)), e.content); }); } }; } |