2016-09-02 20:34:23 +02:00
|
|
|
namespace ts {
|
|
|
|
export interface Node {
|
|
|
|
getSourceFile(): SourceFile;
|
|
|
|
getChildCount(sourceFile?: SourceFile): number;
|
|
|
|
getChildAt(index: number, sourceFile?: SourceFile): Node;
|
|
|
|
getChildren(sourceFile?: SourceFile): Node[];
|
2017-03-15 19:44:36 +01:00
|
|
|
/* @internal */
|
2017-11-07 03:38:03 +01:00
|
|
|
// tslint:disable-next-line unified-signatures
|
2017-03-15 19:44:36 +01:00
|
|
|
getChildren(sourceFile?: SourceFileLike): Node[];
|
2016-09-02 20:34:23 +02:00
|
|
|
getStart(sourceFile?: SourceFile, includeJsDocComment?: boolean): number;
|
2017-03-15 19:44:36 +01:00
|
|
|
/* @internal */
|
2017-11-07 03:38:03 +01:00
|
|
|
// tslint:disable-next-line unified-signatures
|
2017-03-15 19:44:36 +01:00
|
|
|
getStart(sourceFile?: SourceFileLike, includeJsDocComment?: boolean): number;
|
2016-09-02 20:34:23 +02:00
|
|
|
getFullStart(): number;
|
|
|
|
getEnd(): number;
|
2018-05-10 20:17:04 +02:00
|
|
|
getWidth(sourceFile?: SourceFileLike): number;
|
2016-09-02 20:34:23 +02:00
|
|
|
getFullWidth(): number;
|
|
|
|
getLeadingTriviaWidth(sourceFile?: SourceFile): number;
|
|
|
|
getFullText(sourceFile?: SourceFile): string;
|
|
|
|
getText(sourceFile?: SourceFile): string;
|
2018-05-22 23:46:57 +02:00
|
|
|
getFirstToken(sourceFile?: SourceFile): Node | undefined;
|
|
|
|
getLastToken(sourceFile?: SourceFile): Node | undefined;
|
2017-03-10 19:42:26 +01:00
|
|
|
// See ts.forEachChild for documentation.
|
2017-05-23 18:54:02 +02:00
|
|
|
forEachChild<T>(cbNode: (node: Node) => T | undefined, cbNodeArray?: (nodes: NodeArray<Node>) => T | undefined): T | undefined;
|
2016-09-02 20:34:23 +02:00
|
|
|
}
|
|
|
|
|
2017-07-25 22:16:34 +02:00
|
|
|
export interface Identifier {
|
|
|
|
readonly text: string;
|
|
|
|
}
|
|
|
|
|
2016-09-02 20:34:23 +02:00
|
|
|
export interface Symbol {
|
2017-07-25 23:22:26 +02:00
|
|
|
readonly name: string;
|
2016-09-02 20:34:23 +02:00
|
|
|
getFlags(): SymbolFlags;
|
2017-07-25 23:22:26 +02:00
|
|
|
getEscapedName(): __String;
|
|
|
|
getName(): string;
|
2017-05-23 18:54:02 +02:00
|
|
|
getDeclarations(): Declaration[] | undefined;
|
2017-11-06 22:18:21 +01:00
|
|
|
getDocumentationComment(typeChecker: TypeChecker | undefined): SymbolDisplayPart[];
|
2016-12-13 00:29:29 +01:00
|
|
|
getJsDocTags(): JSDocTagInfo[];
|
2016-09-02 20:34:23 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface Type {
|
|
|
|
getFlags(): TypeFlags;
|
2017-05-23 18:54:02 +02:00
|
|
|
getSymbol(): Symbol | undefined;
|
2016-09-02 20:34:23 +02:00
|
|
|
getProperties(): Symbol[];
|
2017-05-23 18:54:02 +02:00
|
|
|
getProperty(propertyName: string): Symbol | undefined;
|
2016-09-02 20:34:23 +02:00
|
|
|
getApparentProperties(): Symbol[];
|
2018-06-21 18:57:14 +02:00
|
|
|
getCallSignatures(): ReadonlyArray<Signature>;
|
|
|
|
getConstructSignatures(): ReadonlyArray<Signature>;
|
2017-05-23 18:54:02 +02:00
|
|
|
getStringIndexType(): Type | undefined;
|
|
|
|
getNumberIndexType(): Type | undefined;
|
|
|
|
getBaseTypes(): BaseType[] | undefined;
|
2016-09-02 20:34:23 +02:00
|
|
|
getNonNullableType(): Type;
|
2017-11-28 22:37:42 +01:00
|
|
|
getConstraint(): Type | undefined;
|
|
|
|
getDefault(): Type | undefined;
|
2018-04-04 17:10:09 +02:00
|
|
|
|
|
|
|
isUnion(): this is UnionType;
|
|
|
|
isIntersection(): this is IntersectionType;
|
|
|
|
isUnionOrIntersection(): this is UnionOrIntersectionType;
|
|
|
|
isLiteral(): this is LiteralType;
|
|
|
|
isStringLiteral(): this is StringLiteralType;
|
|
|
|
isNumberLiteral(): this is NumberLiteralType;
|
|
|
|
isTypeParameter(): this is TypeParameter;
|
|
|
|
isClassOrInterface(): this is InterfaceType;
|
|
|
|
isClass(): this is InterfaceType;
|
2016-09-02 20:34:23 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface Signature {
|
|
|
|
getDeclaration(): SignatureDeclaration;
|
2017-05-23 18:54:02 +02:00
|
|
|
getTypeParameters(): TypeParameter[] | undefined;
|
2016-09-02 20:34:23 +02:00
|
|
|
getParameters(): Symbol[];
|
|
|
|
getReturnType(): Type;
|
2017-11-06 22:18:21 +01:00
|
|
|
getDocumentationComment(typeChecker: TypeChecker | undefined): SymbolDisplayPart[];
|
2016-12-13 00:29:29 +01:00
|
|
|
getJsDocTags(): JSDocTagInfo[];
|
2016-09-02 20:34:23 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface SourceFile {
|
|
|
|
/* @internal */ version: string;
|
2018-05-22 23:46:57 +02:00
|
|
|
/* @internal */ scriptSnapshot: IScriptSnapshot | undefined;
|
|
|
|
/* @internal */ nameTable: UnderscoreEscapedMap<number> | undefined;
|
2016-09-02 20:34:23 +02:00
|
|
|
|
2018-07-03 04:25:27 +02:00
|
|
|
/* @internal */ getNamedDeclarations(): Map<ReadonlyArray<Declaration>>;
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
getLineAndCharacterOfPosition(pos: number): LineAndCharacter;
|
2016-11-17 01:01:16 +01:00
|
|
|
getLineEndOfPosition(pos: number): number;
|
2017-08-24 18:55:01 +02:00
|
|
|
getLineStarts(): ReadonlyArray<number>;
|
2016-09-02 20:34:23 +02:00
|
|
|
getPositionOfLineAndCharacter(line: number, character: number): number;
|
|
|
|
update(newText: string, textChangeRange: TextChangeRange): SourceFile;
|
2018-03-26 21:15:34 +02:00
|
|
|
|
|
|
|
/* @internal */ sourceMapper?: sourcemaps.SourceMapper;
|
2016-09-02 20:34:23 +02:00
|
|
|
}
|
|
|
|
|
2017-03-15 19:44:36 +01:00
|
|
|
export interface SourceFileLike {
|
|
|
|
getLineAndCharacterOfPosition(pos: number): LineAndCharacter;
|
2018-03-26 21:15:34 +02:00
|
|
|
/*@internal*/ sourceMapper?: sourcemaps.SourceMapper;
|
2017-03-15 19:44:36 +01:00
|
|
|
}
|
|
|
|
|
2017-05-18 20:08:07 +02:00
|
|
|
export interface SourceMapSource {
|
|
|
|
getLineAndCharacterOfPosition(pos: number): LineAndCharacter;
|
|
|
|
}
|
|
|
|
|
2016-09-02 20:34:23 +02:00
|
|
|
/**
|
|
|
|
* Represents an immutable snapshot of a script at a specified time.Once acquired, the
|
|
|
|
* snapshot is observably immutable. i.e. the same calls with the same parameters will return
|
|
|
|
* the same values.
|
|
|
|
*/
|
2017-11-03 01:20:18 +01:00
|
|
|
// tslint:disable-next-line interface-name
|
2016-09-02 20:34:23 +02:00
|
|
|
export interface IScriptSnapshot {
|
|
|
|
/** Gets a portion of the script snapshot specified by [start, end). */
|
|
|
|
getText(start: number, end: number): string;
|
|
|
|
|
|
|
|
/** Gets the length of this script snapshot. */
|
|
|
|
getLength(): number;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the TextChangeRange that describe how the text changed between this text and
|
|
|
|
* an older version. This information is used by the incremental parser to determine
|
|
|
|
* what sections of the script need to be re-parsed. 'undefined' can be returned if the
|
|
|
|
* change range cannot be determined. However, in that case, incremental parsing will
|
|
|
|
* not happen and the entire document will be re - parsed.
|
|
|
|
*/
|
|
|
|
getChangeRange(oldSnapshot: IScriptSnapshot): TextChangeRange | undefined;
|
|
|
|
|
|
|
|
/** Releases all resources held by this script snapshot */
|
|
|
|
dispose?(): void;
|
|
|
|
}
|
|
|
|
|
|
|
|
export namespace ScriptSnapshot {
|
|
|
|
class StringScriptSnapshot implements IScriptSnapshot {
|
|
|
|
|
|
|
|
constructor(private text: string) {
|
|
|
|
}
|
|
|
|
|
|
|
|
public getText(start: number, end: number): string {
|
2016-12-09 01:17:42 +01:00
|
|
|
return start === 0 && end === this.text.length
|
|
|
|
? this.text
|
|
|
|
: this.text.substring(start, end);
|
2016-09-02 20:34:23 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public getLength(): number {
|
|
|
|
return this.text.length;
|
|
|
|
}
|
|
|
|
|
2018-05-22 23:46:57 +02:00
|
|
|
public getChangeRange(): TextChangeRange | undefined {
|
2016-09-02 20:34:23 +02:00
|
|
|
// Text-based snapshots do not support incremental parsing. Return undefined
|
|
|
|
// to signal that to the caller.
|
|
|
|
return undefined;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export function fromString(text: string): IScriptSnapshot {
|
|
|
|
return new StringScriptSnapshot(text);
|
|
|
|
}
|
|
|
|
}
|
2018-05-03 20:00:10 +02:00
|
|
|
|
2016-09-02 20:34:23 +02:00
|
|
|
export interface PreProcessedFileInfo {
|
|
|
|
referencedFiles: FileReference[];
|
|
|
|
typeReferenceDirectives: FileReference[];
|
2018-05-03 20:00:10 +02:00
|
|
|
libReferenceDirectives: FileReference[];
|
2016-09-02 20:34:23 +02:00
|
|
|
importedFiles: FileReference[];
|
2018-05-22 23:46:57 +02:00
|
|
|
ambientExternalModules?: string[];
|
2016-09-02 20:34:23 +02:00
|
|
|
isLibFile: boolean;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface HostCancellationToken {
|
|
|
|
isCancellationRequested(): boolean;
|
|
|
|
}
|
|
|
|
|
2017-10-18 00:04:09 +02:00
|
|
|
export interface InstallPackageOptions {
|
|
|
|
fileName: Path;
|
|
|
|
packageName: string;
|
|
|
|
}
|
|
|
|
|
2016-09-02 20:34:23 +02:00
|
|
|
//
|
|
|
|
// Public interface of the host of a language service instance.
|
|
|
|
//
|
2017-10-18 00:04:09 +02:00
|
|
|
export interface LanguageServiceHost extends GetEffectiveTypeRootsHost {
|
2016-09-02 20:34:23 +02:00
|
|
|
getCompilationSettings(): CompilerOptions;
|
|
|
|
getNewLine?(): string;
|
|
|
|
getProjectVersion?(): string;
|
|
|
|
getScriptFileNames(): string[];
|
|
|
|
getScriptKind?(fileName: string): ScriptKind;
|
|
|
|
getScriptVersion(fileName: string): string;
|
|
|
|
getScriptSnapshot(fileName: string): IScriptSnapshot | undefined;
|
2018-05-08 00:12:50 +02:00
|
|
|
getProjectReferences?(): ReadonlyArray<ProjectReference> | undefined;
|
2016-09-02 20:34:23 +02:00
|
|
|
getLocalizedDiagnosticMessages?(): any;
|
|
|
|
getCancellationToken?(): HostCancellationToken;
|
|
|
|
getCurrentDirectory(): string;
|
|
|
|
getDefaultLibFileName(options: CompilerOptions): string;
|
|
|
|
log?(s: string): void;
|
|
|
|
trace?(s: string): void;
|
|
|
|
error?(s: string): void;
|
|
|
|
useCaseSensitiveFileNames?(): boolean;
|
|
|
|
|
2016-09-06 20:04:39 +02:00
|
|
|
/*
|
|
|
|
* LS host can optionally implement these methods to support completions for module specifiers.
|
|
|
|
* Without these methods, only completions for ambient modules will be provided.
|
|
|
|
*/
|
2017-07-12 02:39:33 +02:00
|
|
|
readDirectory?(path: string, extensions?: ReadonlyArray<string>, exclude?: ReadonlyArray<string>, include?: ReadonlyArray<string>, depth?: number): string[];
|
2017-07-14 23:26:13 +02:00
|
|
|
readFile?(path: string, encoding?: string): string | undefined;
|
2017-12-06 20:27:38 +01:00
|
|
|
realpath?(path: string): string;
|
2016-09-06 20:04:39 +02:00
|
|
|
fileExists?(path: string): boolean;
|
|
|
|
|
2016-09-27 23:02:10 +02:00
|
|
|
/*
|
|
|
|
* LS host can optionally implement these methods to support automatic updating when new type libraries are installed
|
|
|
|
*/
|
|
|
|
getTypeRootsVersion?(): number;
|
2016-09-28 00:04:34 +02:00
|
|
|
|
2016-09-02 20:34:23 +02:00
|
|
|
/*
|
|
|
|
* LS host can optionally implement this method if it wants to be completely in charge of module name resolution.
|
|
|
|
* if implementation is omitted then language service will use built-in module resolution logic and get answers to
|
|
|
|
* host specific questions using 'getScriptSnapshot'.
|
2018-05-19 01:42:42 +02:00
|
|
|
*
|
|
|
|
* If this is implemented, `getResolvedModuleWithFailedLookupLocationsFromCache` should be too.
|
2016-09-02 20:34:23 +02:00
|
|
|
*/
|
2018-10-22 20:59:42 +02:00
|
|
|
resolveModuleNames?(moduleNames: string[], containingFile: string, reusedNames?: string[], redirectedReference?: ResolvedProjectReference): (ResolvedModule | undefined)[];
|
2018-05-22 23:46:57 +02:00
|
|
|
getResolvedModuleWithFailedLookupLocationsFromCache?(modulename: string, containingFile: string): ResolvedModuleWithFailedLookupLocations | undefined;
|
2018-10-22 20:59:42 +02:00
|
|
|
resolveTypeReferenceDirectives?(typeDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference): (ResolvedTypeReferenceDirective | undefined)[];
|
2017-10-03 04:08:13 +02:00
|
|
|
/* @internal */ hasInvalidatedResolution?: HasInvalidatedResolution;
|
|
|
|
/* @internal */ hasChangedAutomaticTypeDirectiveNames?: boolean;
|
2016-09-06 20:04:39 +02:00
|
|
|
|
|
|
|
/*
|
2018-02-05 20:11:00 +01:00
|
|
|
* Required for full import and type reference completions.
|
|
|
|
* These should be unprefixed names. E.g. `getDirectories("/foo/bar")` should return `["a", "b"]`, not `["/foo/bar/a", "/foo/bar/b"]`.
|
2016-09-06 20:04:39 +02:00
|
|
|
*/
|
2016-09-02 20:34:23 +02:00
|
|
|
getDirectories?(directoryName: string): string[];
|
2017-02-07 23:36:15 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets a set of custom transformers to use during emit.
|
|
|
|
*/
|
|
|
|
getCustomTransformers?(): CustomTransformers | undefined;
|
2017-10-18 00:04:09 +02:00
|
|
|
|
|
|
|
isKnownTypesPackageName?(name: string): boolean;
|
2017-10-19 01:04:42 +02:00
|
|
|
installPackage?(options: InstallPackageOptions): Promise<ApplyCodeActionCommandResult>;
|
2018-09-18 20:47:29 +02:00
|
|
|
/* @internal */ inspectValue?(options: InspectValueOptions): Promise<ValueInfo>;
|
|
|
|
writeFile?(fileName: string, content: string): void;
|
2016-09-02 20:34:23 +02:00
|
|
|
}
|
|
|
|
|
2018-03-20 21:07:59 +01:00
|
|
|
/* @internal */
|
2018-06-13 00:36:53 +02:00
|
|
|
export const emptyOptions = {};
|
2018-03-20 21:07:59 +01:00
|
|
|
|
2016-09-02 20:34:23 +02:00
|
|
|
//
|
|
|
|
// Public services of a language service instance associated
|
|
|
|
// with a language service host instance
|
|
|
|
//
|
|
|
|
export interface LanguageService {
|
|
|
|
cleanupSemanticCache(): void;
|
|
|
|
|
2018-05-22 20:01:18 +02:00
|
|
|
getSyntacticDiagnostics(fileName: string): DiagnosticWithLocation[];
|
|
|
|
/** The first time this is called, it will return global diagnostics (no location). */
|
2016-09-02 20:34:23 +02:00
|
|
|
getSemanticDiagnostics(fileName: string): Diagnostic[];
|
2018-05-22 20:01:18 +02:00
|
|
|
getSuggestionDiagnostics(fileName: string): DiagnosticWithLocation[];
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
// TODO: Rename this to getProgramDiagnostics to better indicate that these are any
|
|
|
|
// diagnostics present for the program level, and not just 'options' diagnostics.
|
|
|
|
getCompilerOptionsDiagnostics(): Diagnostic[];
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @deprecated Use getEncodedSyntacticClassifications instead.
|
|
|
|
*/
|
|
|
|
getSyntacticClassifications(fileName: string, span: TextSpan): ClassifiedSpan[];
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @deprecated Use getEncodedSemanticClassifications instead.
|
|
|
|
*/
|
|
|
|
getSemanticClassifications(fileName: string, span: TextSpan): ClassifiedSpan[];
|
|
|
|
|
|
|
|
// Encoded as triples of [start, length, ClassificationType].
|
|
|
|
getEncodedSyntacticClassifications(fileName: string, span: TextSpan): Classifications;
|
|
|
|
getEncodedSemanticClassifications(fileName: string, span: TextSpan): Classifications;
|
|
|
|
|
2018-05-22 23:46:57 +02:00
|
|
|
getCompletionsAtPosition(fileName: string, position: number, options: GetCompletionsAtPositionOptions | undefined): CompletionInfo | undefined;
|
2017-10-26 17:22:17 +02:00
|
|
|
// "options" and "source" are optional only for backwards-compatibility
|
2017-10-30 23:10:34 +01:00
|
|
|
getCompletionEntryDetails(
|
|
|
|
fileName: string,
|
|
|
|
position: number,
|
|
|
|
name: string,
|
2018-03-20 21:07:59 +01:00
|
|
|
formatOptions: FormatCodeOptions | FormatCodeSettings | undefined,
|
2017-10-30 23:10:34 +01:00
|
|
|
source: string | undefined,
|
2018-03-20 21:07:59 +01:00
|
|
|
preferences: UserPreferences | undefined,
|
2018-05-22 23:46:57 +02:00
|
|
|
): CompletionEntryDetails | undefined;
|
|
|
|
getCompletionEntrySymbol(fileName: string, position: number, name: string, source: string | undefined): Symbol | undefined;
|
2016-09-02 20:34:23 +02:00
|
|
|
|
2018-05-22 23:46:57 +02:00
|
|
|
getQuickInfoAtPosition(fileName: string, position: number): QuickInfo | undefined;
|
2016-09-02 20:34:23 +02:00
|
|
|
|
2018-05-22 23:46:57 +02:00
|
|
|
getNameOrDottedNameSpan(fileName: string, startPos: number, endPos: number): TextSpan | undefined;
|
2016-09-02 20:34:23 +02:00
|
|
|
|
2018-05-22 23:46:57 +02:00
|
|
|
getBreakpointStatementAtPosition(fileName: string, position: number): TextSpan | undefined;
|
2016-09-02 20:34:23 +02:00
|
|
|
|
2018-06-13 00:36:53 +02:00
|
|
|
getSignatureHelpItems(fileName: string, position: number, options: SignatureHelpItemsOptions | undefined): SignatureHelpItems | undefined;
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
getRenameInfo(fileName: string, position: number): RenameInfo;
|
2018-05-22 23:46:57 +02:00
|
|
|
findRenameLocations(fileName: string, position: number, findInStrings: boolean, findInComments: boolean): RenameLocation[] | undefined;
|
2016-09-02 20:34:23 +02:00
|
|
|
|
2018-05-22 23:46:57 +02:00
|
|
|
getDefinitionAtPosition(fileName: string, position: number): DefinitionInfo[] | undefined;
|
|
|
|
getDefinitionAndBoundSpan(fileName: string, position: number): DefinitionInfoAndBoundSpan | undefined;
|
|
|
|
getTypeDefinitionAtPosition(fileName: string, position: number): DefinitionInfo[] | undefined;
|
|
|
|
getImplementationAtPosition(fileName: string, position: number): ImplementationLocation[] | undefined;
|
2016-09-02 20:34:23 +02:00
|
|
|
|
2018-05-22 23:46:57 +02:00
|
|
|
getReferencesAtPosition(fileName: string, position: number): ReferenceEntry[] | undefined;
|
|
|
|
findReferences(fileName: string, position: number): ReferencedSymbol[] | undefined;
|
|
|
|
getDocumentHighlights(fileName: string, position: number, filesToSearch: string[]): DocumentHighlights[] | undefined;
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
/** @deprecated */
|
2018-05-22 23:46:57 +02:00
|
|
|
getOccurrencesAtPosition(fileName: string, position: number): ReferenceEntry[] | undefined;
|
2016-09-02 20:34:23 +02:00
|
|
|
|
2016-09-27 19:22:41 +02:00
|
|
|
getNavigateToItems(searchValue: string, maxResultCount?: number, fileName?: string, excludeDtsFiles?: boolean): NavigateToItem[];
|
2016-09-02 20:34:23 +02:00
|
|
|
getNavigationBarItems(fileName: string): NavigationBarItem[];
|
2016-10-11 16:48:28 +02:00
|
|
|
getNavigationTree(fileName: string): NavigationTree;
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
getOutliningSpans(fileName: string): OutliningSpan[];
|
|
|
|
getTodoComments(fileName: string, descriptors: TodoCommentDescriptor[]): TodoComment[];
|
|
|
|
getBraceMatchingAtPosition(fileName: string, position: number): TextSpan[];
|
2016-09-27 19:22:41 +02:00
|
|
|
getIndentationAtPosition(fileName: string, position: number, options: EditorOptions | EditorSettings): number;
|
2016-09-02 20:34:23 +02:00
|
|
|
|
2016-09-27 19:22:41 +02:00
|
|
|
getFormattingEditsForRange(fileName: string, start: number, end: number, options: FormatCodeOptions | FormatCodeSettings): TextChange[];
|
|
|
|
getFormattingEditsForDocument(fileName: string, options: FormatCodeOptions | FormatCodeSettings): TextChange[];
|
|
|
|
getFormattingEditsAfterKeystroke(fileName: string, position: number, key: string, options: FormatCodeOptions | FormatCodeSettings): TextChange[];
|
2016-09-02 20:34:23 +02:00
|
|
|
|
2018-05-22 23:46:57 +02:00
|
|
|
getDocCommentTemplateAtPosition(fileName: string, position: number): TextInsertion | undefined;
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
isValidBraceCompletionAtPosition(fileName: string, position: number, openingBrace: number): boolean;
|
2018-06-04 19:08:15 +02:00
|
|
|
/**
|
|
|
|
* This will return a defined result if the position is after the `>` of the opening tag, or somewhere in the text, of a JSXElement with no closing tag.
|
|
|
|
* Editors should call this after `>` is typed.
|
|
|
|
*/
|
|
|
|
getJsxClosingTagAtPosition(fileName: string, position: number): JsxClosingTagInfo | undefined;
|
2016-09-02 20:34:23 +02:00
|
|
|
|
2018-05-22 23:46:57 +02:00
|
|
|
getSpanOfEnclosingComment(fileName: string, position: number, onlyMultiLine: boolean): TextSpan | undefined;
|
2017-06-09 02:08:07 +02:00
|
|
|
|
2018-05-08 00:12:50 +02:00
|
|
|
toLineColumnOffset?(fileName: string, position: number): LineAndCharacter;
|
2018-07-06 00:39:03 +02:00
|
|
|
/** @internal */
|
|
|
|
getSourceMapper(): SourceMapper;
|
2018-05-08 00:12:50 +02:00
|
|
|
|
2018-03-20 21:07:59 +01:00
|
|
|
getCodeFixesAtPosition(fileName: string, start: number, end: number, errorCodes: ReadonlyArray<number>, formatOptions: FormatCodeSettings, preferences: UserPreferences): ReadonlyArray<CodeFixAction>;
|
|
|
|
getCombinedCodeFix(scope: CombinedCodeFixScope, fixId: {}, formatOptions: FormatCodeSettings, preferences: UserPreferences): CombinedCodeActions;
|
2018-09-18 20:47:29 +02:00
|
|
|
applyCodeActionCommand(action: CodeActionCommand, formatSettings?: FormatCodeSettings): Promise<ApplyCodeActionCommandResult>;
|
|
|
|
applyCodeActionCommand(action: CodeActionCommand[], formatSettings?: FormatCodeSettings): Promise<ApplyCodeActionCommandResult[]>;
|
|
|
|
applyCodeActionCommand(action: CodeActionCommand | CodeActionCommand[], formatSettings?: FormatCodeSettings): Promise<ApplyCodeActionCommandResult | ApplyCodeActionCommandResult[]>;
|
2017-11-17 23:16:38 +01:00
|
|
|
/** @deprecated `fileName` will be ignored */
|
2017-10-19 01:04:42 +02:00
|
|
|
applyCodeActionCommand(fileName: string, action: CodeActionCommand): Promise<ApplyCodeActionCommandResult>;
|
2017-11-17 23:16:38 +01:00
|
|
|
/** @deprecated `fileName` will be ignored */
|
2017-11-09 22:17:47 +01:00
|
|
|
applyCodeActionCommand(fileName: string, action: CodeActionCommand[]): Promise<ApplyCodeActionCommandResult[]>;
|
2017-11-17 23:16:38 +01:00
|
|
|
/** @deprecated `fileName` will be ignored */
|
2017-11-09 22:17:47 +01:00
|
|
|
applyCodeActionCommand(fileName: string, action: CodeActionCommand | CodeActionCommand[]): Promise<ApplyCodeActionCommandResult | ApplyCodeActionCommandResult[]>;
|
2018-04-27 01:18:47 +02:00
|
|
|
getApplicableRefactors(fileName: string, positionOrRange: number | TextRange, preferences: UserPreferences | undefined): ApplicableRefactorInfo[];
|
2018-03-20 21:07:59 +01:00
|
|
|
getEditsForRefactor(fileName: string, formatOptions: FormatCodeSettings, positionOrRange: number | TextRange, refactorName: string, actionName: string, preferences: UserPreferences | undefined): RefactorEditInfo | undefined;
|
|
|
|
organizeImports(scope: OrganizeImportsScope, formatOptions: FormatCodeSettings, preferences: UserPreferences | undefined): ReadonlyArray<FileTextChanges>;
|
2018-06-01 17:23:37 +02:00
|
|
|
getEditsForFileRename(oldFilePath: string, newFilePath: string, formatOptions: FormatCodeSettings, preferences: UserPreferences | undefined): ReadonlyArray<FileTextChanges>;
|
2016-09-16 23:09:58 +02:00
|
|
|
|
2017-09-26 22:34:56 +02:00
|
|
|
getEmitOutput(fileName: string, emitOnlyDtsFiles?: boolean): EmitOutput;
|
2016-09-02 20:34:23 +02:00
|
|
|
|
2018-05-22 23:46:57 +02:00
|
|
|
getProgram(): Program | undefined;
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
/* @internal */ getNonBoundSourceFile(fileName: string): SourceFile;
|
|
|
|
|
|
|
|
dispose(): void;
|
|
|
|
}
|
|
|
|
|
2018-06-04 19:08:15 +02:00
|
|
|
export interface JsxClosingTagInfo {
|
|
|
|
readonly newText: string;
|
|
|
|
}
|
|
|
|
|
2017-12-07 21:14:18 +01:00
|
|
|
export interface CombinedCodeFixScope { type: "file"; fileName: string; }
|
|
|
|
|
2018-01-31 20:20:41 +01:00
|
|
|
export type OrganizeImportsScope = CombinedCodeFixScope;
|
|
|
|
|
2018-05-08 18:52:46 +02:00
|
|
|
export type CompletionsTriggerCharacter = "." | '"' | "'" | "`" | "/" | "@" | "<";
|
|
|
|
|
2018-03-20 21:07:59 +01:00
|
|
|
export interface GetCompletionsAtPositionOptions extends UserPreferences {
|
2018-06-13 00:36:53 +02:00
|
|
|
/**
|
|
|
|
* If the editor is asking for completions because a certain character was typed
|
|
|
|
* (as opposed to when the user explicitly requested them) this should be set.
|
|
|
|
*/
|
2018-05-08 18:52:46 +02:00
|
|
|
triggerCharacter?: CompletionsTriggerCharacter;
|
2018-03-20 21:07:59 +01:00
|
|
|
/** @deprecated Use includeCompletionsForModuleExports */
|
|
|
|
includeExternalModuleExports?: boolean;
|
|
|
|
/** @deprecated Use includeCompletionsWithInsertText */
|
|
|
|
includeInsertTextCompletions?: boolean;
|
2017-11-03 23:55:31 +01:00
|
|
|
}
|
|
|
|
|
2018-06-13 00:36:53 +02:00
|
|
|
export type SignatureHelpTriggerCharacter = "," | "(" | "<";
|
2018-07-03 01:04:20 +02:00
|
|
|
export type SignatureHelpRetriggerCharacter = SignatureHelpTriggerCharacter | ")";
|
2018-06-13 00:36:53 +02:00
|
|
|
|
|
|
|
export interface SignatureHelpItemsOptions {
|
2018-07-03 01:04:20 +02:00
|
|
|
triggerReason?: SignatureHelpTriggerReason;
|
|
|
|
}
|
|
|
|
|
|
|
|
export type SignatureHelpTriggerReason =
|
|
|
|
| SignatureHelpInvokedReason
|
|
|
|
| SignatureHelpCharacterTypedReason
|
|
|
|
| SignatureHelpRetriggeredReason;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Signals that the user manually requested signature help.
|
|
|
|
* The language service will unconditionally attempt to provide a result.
|
|
|
|
*/
|
|
|
|
export interface SignatureHelpInvokedReason {
|
2018-07-03 01:40:08 +02:00
|
|
|
kind: "invoked";
|
|
|
|
triggerCharacter?: undefined;
|
2018-07-03 01:04:20 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Signals that the signature help request came from a user typing a character.
|
|
|
|
* Depending on the character and the syntactic context, the request may or may not be served a result.
|
|
|
|
*/
|
|
|
|
export interface SignatureHelpCharacterTypedReason {
|
2018-07-03 01:40:08 +02:00
|
|
|
kind: "characterTyped";
|
2018-06-13 00:36:53 +02:00
|
|
|
/**
|
2018-07-03 01:04:20 +02:00
|
|
|
* Character that was responsible for triggering signature help.
|
|
|
|
*/
|
2018-07-03 01:40:08 +02:00
|
|
|
triggerCharacter: SignatureHelpTriggerCharacter;
|
2018-07-03 01:04:20 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Signals that this signature help request came from typing a character or moving the cursor.
|
|
|
|
* This should only occur if a signature help session was already active and the editor needs to see if it should adjust.
|
|
|
|
* The language service will unconditionally attempt to provide a result.
|
|
|
|
* `triggerCharacter` can be `undefined` for a retrigger caused by a cursor move.
|
|
|
|
*/
|
|
|
|
export interface SignatureHelpRetriggeredReason {
|
2018-07-03 01:40:08 +02:00
|
|
|
kind: "retrigger";
|
2018-07-03 01:04:20 +02:00
|
|
|
/**
|
|
|
|
* Character that was responsible for triggering signature help.
|
2018-06-13 00:36:53 +02:00
|
|
|
*/
|
2018-07-03 01:40:08 +02:00
|
|
|
triggerCharacter?: SignatureHelpRetriggerCharacter;
|
2018-06-13 00:36:53 +02:00
|
|
|
}
|
|
|
|
|
2017-10-18 00:04:09 +02:00
|
|
|
export interface ApplyCodeActionCommandResult {
|
|
|
|
successMessage: string;
|
|
|
|
}
|
|
|
|
|
2016-09-02 20:34:23 +02:00
|
|
|
export interface Classifications {
|
|
|
|
spans: number[];
|
|
|
|
endOfLineState: EndOfLineState;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface ClassifiedSpan {
|
|
|
|
textSpan: TextSpan;
|
2017-05-22 19:40:59 +02:00
|
|
|
classificationType: ClassificationTypeNames;
|
2016-09-02 20:34:23 +02:00
|
|
|
}
|
|
|
|
|
2016-10-11 16:48:28 +02:00
|
|
|
/**
|
|
|
|
* Navigation bar interface designed for visual studio's dual-column layout.
|
|
|
|
* This does not form a proper tree.
|
|
|
|
* The navbar is returned as a list of top-level items, each of which has a list of child items.
|
|
|
|
* Child items always have an empty array for their `childItems`.
|
|
|
|
*/
|
2016-09-02 20:34:23 +02:00
|
|
|
export interface NavigationBarItem {
|
|
|
|
text: string;
|
2017-05-20 05:06:08 +02:00
|
|
|
kind: ScriptElementKind;
|
2016-09-02 20:34:23 +02:00
|
|
|
kindModifiers: string;
|
|
|
|
spans: TextSpan[];
|
|
|
|
childItems: NavigationBarItem[];
|
|
|
|
indent: number;
|
|
|
|
bolded: boolean;
|
|
|
|
grayed: boolean;
|
|
|
|
}
|
|
|
|
|
2016-10-11 16:48:28 +02:00
|
|
|
/**
|
|
|
|
* Node in a tree of nested declarations in a file.
|
|
|
|
* The top node is always a script or module node.
|
|
|
|
*/
|
|
|
|
export interface NavigationTree {
|
|
|
|
/** Name of the declaration, or a short description, e.g. "<class>". */
|
|
|
|
text: string;
|
2017-05-20 05:06:08 +02:00
|
|
|
kind: ScriptElementKind;
|
2016-10-11 16:48:28 +02:00
|
|
|
/** ScriptElementKindModifier separated by commas, e.g. "public,abstract" */
|
|
|
|
kindModifiers: string;
|
|
|
|
/**
|
|
|
|
* Spans of the nodes that generated this declaration.
|
|
|
|
* There will be more than one if this is the result of merging.
|
|
|
|
*/
|
|
|
|
spans: TextSpan[];
|
2018-06-07 21:43:57 +02:00
|
|
|
nameSpan: TextSpan | undefined;
|
2016-10-11 16:48:28 +02:00
|
|
|
/** Present if non-empty */
|
|
|
|
childItems?: NavigationTree[];
|
|
|
|
}
|
|
|
|
|
2016-09-02 20:34:23 +02:00
|
|
|
export interface TodoCommentDescriptor {
|
|
|
|
text: string;
|
|
|
|
priority: number;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface TodoComment {
|
|
|
|
descriptor: TodoCommentDescriptor;
|
|
|
|
message: string;
|
|
|
|
position: number;
|
|
|
|
}
|
|
|
|
|
|
|
|
export class TextChange {
|
|
|
|
span: TextSpan;
|
|
|
|
newText: string;
|
|
|
|
}
|
|
|
|
|
2016-09-16 23:09:58 +02:00
|
|
|
export interface FileTextChanges {
|
|
|
|
fileName: string;
|
|
|
|
textChanges: TextChange[];
|
2018-05-15 22:55:26 +02:00
|
|
|
isNewFile?: boolean;
|
2016-09-16 23:09:58 +02:00
|
|
|
}
|
2016-10-06 22:59:54 +02:00
|
|
|
|
2016-09-16 23:09:58 +02:00
|
|
|
export interface CodeAction {
|
|
|
|
/** Description of the code action to display in the UI of the editor */
|
|
|
|
description: string;
|
|
|
|
/** Text changes to apply to each file as part of the code action */
|
|
|
|
changes: FileTextChanges[];
|
2017-10-18 00:04:09 +02:00
|
|
|
/**
|
|
|
|
* If the user accepts the code fix, the editor should send the action back in a `applyAction` request.
|
|
|
|
* This allows the language service to have side effects (e.g. installing dependencies) upon a code fix.
|
|
|
|
*/
|
|
|
|
commands?: CodeActionCommand[];
|
|
|
|
}
|
|
|
|
|
2017-12-07 21:14:18 +01:00
|
|
|
export interface CodeFixAction extends CodeAction {
|
2018-04-12 18:05:30 +02:00
|
|
|
/** Short name to identify the fix, for use by telemetry. */
|
|
|
|
fixName: string;
|
2017-12-07 21:14:18 +01:00
|
|
|
/**
|
|
|
|
* If present, one may call 'getCombinedCodeFix' with this fixId.
|
|
|
|
* This may be omitted to indicate that the code fix can't be applied in a group.
|
|
|
|
*/
|
|
|
|
fixId?: {};
|
2018-03-28 03:21:21 +02:00
|
|
|
fixAllDescription?: string;
|
2017-12-07 21:14:18 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface CombinedCodeActions {
|
|
|
|
changes: ReadonlyArray<FileTextChanges>;
|
2018-05-22 23:46:57 +02:00
|
|
|
commands?: ReadonlyArray<CodeActionCommand>;
|
2017-12-07 21:14:18 +01:00
|
|
|
}
|
|
|
|
|
2017-10-18 00:04:09 +02:00
|
|
|
// Publicly, this type is just `{}`. Internally it is a union of all the actions we use.
|
|
|
|
// See `commands?: {}[]` in protocol.ts
|
2018-09-18 20:47:29 +02:00
|
|
|
export type CodeActionCommand = InstallPackageAction | GenerateTypesAction;
|
2017-10-18 00:04:09 +02:00
|
|
|
|
|
|
|
export interface InstallPackageAction {
|
2018-09-18 20:47:29 +02:00
|
|
|
/* @internal */ readonly type: "install package";
|
|
|
|
/* @internal */ readonly file: string;
|
|
|
|
/* @internal */ readonly packageName: string;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface GenerateTypesAction extends GenerateTypesOptions {
|
|
|
|
/* @internal */ readonly type: "generate types";
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface GenerateTypesOptions {
|
|
|
|
readonly file: string; // File that was importing fileToGenerateTypesFor; used for formatting options.
|
|
|
|
readonly fileToGenerateTypesFor: string;
|
|
|
|
readonly outputFileName: string;
|
2016-09-16 23:09:58 +02:00
|
|
|
}
|
|
|
|
|
2017-06-06 23:58:18 +02:00
|
|
|
/**
|
|
|
|
* A set of one or more available refactoring actions, grouped under a parent refactoring.
|
|
|
|
*/
|
2017-05-19 19:18:42 +02:00
|
|
|
export interface ApplicableRefactorInfo {
|
2017-06-06 23:58:18 +02:00
|
|
|
/**
|
|
|
|
* The programmatic name of the refactoring
|
|
|
|
*/
|
2017-05-19 19:18:42 +02:00
|
|
|
name: string;
|
2017-06-06 23:58:18 +02:00
|
|
|
/**
|
|
|
|
* A description of this refactoring category to show to the user.
|
|
|
|
* If the refactoring gets inlined (see below), this text will not be visible.
|
|
|
|
*/
|
2017-05-19 19:18:42 +02:00
|
|
|
description: string;
|
2017-06-06 23:58:18 +02:00
|
|
|
/**
|
|
|
|
* Inlineable refactorings can have their actions hoisted out to the top level
|
|
|
|
* of a context menu. Non-inlineanable refactorings should always be shown inside
|
|
|
|
* their parent grouping.
|
|
|
|
*
|
|
|
|
* If not specified, this value is assumed to be 'true'
|
|
|
|
*/
|
|
|
|
inlineable?: boolean;
|
|
|
|
|
|
|
|
actions: RefactorActionInfo[];
|
2017-05-19 19:18:42 +02:00
|
|
|
}
|
|
|
|
|
2017-06-06 23:58:18 +02:00
|
|
|
/**
|
|
|
|
* Represents a single refactoring action - for example, the "Extract Method..." refactor might
|
|
|
|
* offer several actions, each corresponding to a surround class or closure to extract into.
|
|
|
|
*/
|
2017-09-07 18:14:59 +02:00
|
|
|
export interface RefactorActionInfo {
|
2017-06-06 23:58:18 +02:00
|
|
|
/**
|
|
|
|
* The programmatic name of the refactoring action
|
|
|
|
*/
|
|
|
|
name: string;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* A description of this refactoring action to show to the user.
|
|
|
|
* If the parent refactoring is inlined away, this will be the only text shown,
|
|
|
|
* so this description should make sense by itself if the parent is inlineable=true
|
|
|
|
*/
|
|
|
|
description: string;
|
2017-09-07 18:14:59 +02:00
|
|
|
}
|
2017-06-06 23:58:18 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* A set of edits to make in response to a refactor action, plus an optional
|
|
|
|
* location where renaming should be invoked from
|
|
|
|
*/
|
2017-09-07 18:14:59 +02:00
|
|
|
export interface RefactorEditInfo {
|
2017-06-06 23:58:18 +02:00
|
|
|
edits: FileTextChanges[];
|
2018-05-22 23:46:57 +02:00
|
|
|
renameFilename?: string ;
|
|
|
|
renameLocation?: number;
|
2017-10-18 00:04:09 +02:00
|
|
|
commands?: CodeActionCommand[];
|
2017-09-07 18:14:59 +02:00
|
|
|
}
|
2017-06-06 23:58:18 +02:00
|
|
|
|
2016-09-02 20:34:23 +02:00
|
|
|
export interface TextInsertion {
|
|
|
|
newText: string;
|
|
|
|
/** The position in newText the caret should point to after the insertion. */
|
|
|
|
caretOffset: number;
|
|
|
|
}
|
|
|
|
|
2017-03-16 23:53:05 +01:00
|
|
|
export interface DocumentSpan {
|
2016-09-02 20:34:23 +02:00
|
|
|
textSpan: TextSpan;
|
|
|
|
fileName: string;
|
2018-05-02 23:16:39 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* If the span represents a location that was remapped (e.g. via a .d.ts.map file),
|
|
|
|
* then the original filename and span will be specified here
|
|
|
|
*/
|
|
|
|
originalTextSpan?: TextSpan;
|
|
|
|
originalFileName?: string;
|
2016-09-02 20:34:23 +02:00
|
|
|
}
|
|
|
|
|
2017-03-16 23:53:05 +01:00
|
|
|
export interface RenameLocation extends DocumentSpan {
|
2018-09-27 01:58:01 +02:00
|
|
|
readonly prefixText?: string;
|
|
|
|
readonly suffixText?: string;
|
2017-03-16 23:53:05 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface ReferenceEntry extends DocumentSpan {
|
2016-09-02 20:34:23 +02:00
|
|
|
isWriteAccess: boolean;
|
|
|
|
isDefinition: boolean;
|
2017-03-16 19:01:48 +01:00
|
|
|
isInString?: true;
|
2016-09-02 20:34:23 +02:00
|
|
|
}
|
|
|
|
|
2017-03-16 23:53:05 +01:00
|
|
|
export interface ImplementationLocation extends DocumentSpan {
|
2017-05-20 05:06:08 +02:00
|
|
|
kind: ScriptElementKind;
|
2017-03-16 23:53:05 +01:00
|
|
|
displayParts: SymbolDisplayPart[];
|
2016-09-06 23:11:38 +02:00
|
|
|
}
|
|
|
|
|
2016-09-02 20:34:23 +02:00
|
|
|
export interface DocumentHighlights {
|
|
|
|
fileName: string;
|
|
|
|
highlightSpans: HighlightSpan[];
|
|
|
|
}
|
|
|
|
|
2017-05-20 05:06:08 +02:00
|
|
|
export const enum HighlightSpanKind {
|
|
|
|
none = "none",
|
|
|
|
definition = "definition",
|
|
|
|
reference = "reference",
|
|
|
|
writtenReference = "writtenReference",
|
2016-09-02 20:34:23 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface HighlightSpan {
|
|
|
|
fileName?: string;
|
2017-03-16 19:01:48 +01:00
|
|
|
isInString?: true;
|
2016-09-02 20:34:23 +02:00
|
|
|
textSpan: TextSpan;
|
2017-05-20 05:06:08 +02:00
|
|
|
kind: HighlightSpanKind;
|
2016-09-02 20:34:23 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface NavigateToItem {
|
|
|
|
name: string;
|
2017-05-20 05:06:08 +02:00
|
|
|
kind: ScriptElementKind;
|
2016-09-02 20:34:23 +02:00
|
|
|
kindModifiers: string;
|
2018-07-03 04:25:27 +02:00
|
|
|
matchKind: "exact" | "prefix" | "substring" | "camelCase";
|
2016-09-02 20:34:23 +02:00
|
|
|
isCaseSensitive: boolean;
|
|
|
|
fileName: string;
|
|
|
|
textSpan: TextSpan;
|
|
|
|
containerName: string;
|
2017-05-20 05:06:08 +02:00
|
|
|
containerKind: ScriptElementKind;
|
2016-09-02 20:34:23 +02:00
|
|
|
}
|
|
|
|
|
2016-09-27 19:22:41 +02:00
|
|
|
export enum IndentStyle {
|
|
|
|
None = 0,
|
|
|
|
Block = 1,
|
|
|
|
Smart = 2,
|
|
|
|
}
|
|
|
|
|
|
|
|
/* @deprecated - consider using EditorSettings instead */
|
2016-09-02 20:34:23 +02:00
|
|
|
export interface EditorOptions {
|
|
|
|
BaseIndentSize?: number;
|
|
|
|
IndentSize: number;
|
|
|
|
TabSize: number;
|
|
|
|
NewLineCharacter: string;
|
|
|
|
ConvertTabsToSpaces: boolean;
|
|
|
|
IndentStyle: IndentStyle;
|
|
|
|
}
|
|
|
|
|
2018-05-22 23:46:57 +02:00
|
|
|
// TODO: GH#18217 These are frequently asserted as defined
|
2016-09-27 19:22:41 +02:00
|
|
|
export interface EditorSettings {
|
|
|
|
baseIndentSize?: number;
|
2016-10-12 20:02:56 +02:00
|
|
|
indentSize?: number;
|
|
|
|
tabSize?: number;
|
|
|
|
newLineCharacter?: string;
|
|
|
|
convertTabsToSpaces?: boolean;
|
|
|
|
indentStyle?: IndentStyle;
|
2016-09-02 20:34:23 +02:00
|
|
|
}
|
|
|
|
|
2016-09-27 19:22:41 +02:00
|
|
|
/* @deprecated - consider using FormatCodeSettings instead */
|
2016-09-02 20:34:23 +02:00
|
|
|
export interface FormatCodeOptions extends EditorOptions {
|
|
|
|
InsertSpaceAfterCommaDelimiter: boolean;
|
|
|
|
InsertSpaceAfterSemicolonInForStatements: boolean;
|
|
|
|
InsertSpaceBeforeAndAfterBinaryOperators: boolean;
|
2016-12-20 17:05:10 +01:00
|
|
|
InsertSpaceAfterConstructor?: boolean;
|
2016-09-02 20:34:23 +02:00
|
|
|
InsertSpaceAfterKeywordsInControlFlowStatements: boolean;
|
|
|
|
InsertSpaceAfterFunctionKeywordForAnonymousFunctions: boolean;
|
|
|
|
InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: boolean;
|
|
|
|
InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: boolean;
|
2016-09-07 01:15:13 +02:00
|
|
|
InsertSpaceAfterOpeningAndBeforeClosingNonemptyBraces?: boolean;
|
2016-09-02 20:34:23 +02:00
|
|
|
InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: boolean;
|
|
|
|
InsertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces?: boolean;
|
2016-09-14 05:51:20 +02:00
|
|
|
InsertSpaceAfterTypeAssertion?: boolean;
|
2016-12-20 06:05:30 +01:00
|
|
|
InsertSpaceBeforeFunctionParenthesis?: boolean;
|
2016-09-02 20:34:23 +02:00
|
|
|
PlaceOpenBraceOnNewLineForFunctions: boolean;
|
|
|
|
PlaceOpenBraceOnNewLineForControlBlocks: boolean;
|
2018-01-08 22:25:02 +01:00
|
|
|
insertSpaceBeforeTypeAnnotation?: boolean;
|
2016-09-27 19:22:41 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface FormatCodeSettings extends EditorSettings {
|
2016-10-12 20:02:56 +02:00
|
|
|
insertSpaceAfterCommaDelimiter?: boolean;
|
|
|
|
insertSpaceAfterSemicolonInForStatements?: boolean;
|
|
|
|
insertSpaceBeforeAndAfterBinaryOperators?: boolean;
|
2016-12-20 17:05:10 +01:00
|
|
|
insertSpaceAfterConstructor?: boolean;
|
2016-10-12 20:02:56 +02:00
|
|
|
insertSpaceAfterKeywordsInControlFlowStatements?: boolean;
|
|
|
|
insertSpaceAfterFunctionKeywordForAnonymousFunctions?: boolean;
|
|
|
|
insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis?: boolean;
|
|
|
|
insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets?: boolean;
|
2016-09-27 19:22:41 +02:00
|
|
|
insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces?: boolean;
|
2016-10-12 20:02:56 +02:00
|
|
|
insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces?: boolean;
|
|
|
|
insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces?: boolean;
|
2016-09-27 19:22:41 +02:00
|
|
|
insertSpaceAfterTypeAssertion?: boolean;
|
2016-12-20 06:05:30 +01:00
|
|
|
insertSpaceBeforeFunctionParenthesis?: boolean;
|
2016-10-12 20:02:56 +02:00
|
|
|
placeOpenBraceOnNewLineForFunctions?: boolean;
|
|
|
|
placeOpenBraceOnNewLineForControlBlocks?: boolean;
|
2018-01-08 22:25:02 +01:00
|
|
|
insertSpaceBeforeTypeAnnotation?: boolean;
|
2018-03-30 00:40:23 +02:00
|
|
|
indentMultiLineObjectLiteralBeginningOnBlankLine?: boolean;
|
2016-09-02 20:34:23 +02:00
|
|
|
}
|
|
|
|
|
2018-09-18 20:47:29 +02:00
|
|
|
/* @internal */
|
|
|
|
export const testFormatSettings: FormatCodeSettings = {
|
|
|
|
baseIndentSize: 0,
|
|
|
|
indentSize: 4,
|
|
|
|
tabSize: 4,
|
|
|
|
newLineCharacter: "\n",
|
|
|
|
convertTabsToSpaces: true,
|
|
|
|
indentStyle: IndentStyle.Smart,
|
|
|
|
insertSpaceAfterCommaDelimiter: true,
|
|
|
|
insertSpaceAfterSemicolonInForStatements: true,
|
|
|
|
insertSpaceBeforeAndAfterBinaryOperators: true,
|
|
|
|
insertSpaceAfterConstructor: false,
|
|
|
|
insertSpaceAfterKeywordsInControlFlowStatements: true,
|
|
|
|
insertSpaceAfterFunctionKeywordForAnonymousFunctions: false,
|
|
|
|
insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: false,
|
|
|
|
insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: false,
|
|
|
|
insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces: true,
|
|
|
|
insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: false,
|
|
|
|
insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces: false,
|
|
|
|
insertSpaceAfterTypeAssertion: false,
|
|
|
|
placeOpenBraceOnNewLineForFunctions: false,
|
|
|
|
placeOpenBraceOnNewLineForControlBlocks: false,
|
|
|
|
insertSpaceBeforeTypeAnnotation: false
|
|
|
|
};
|
|
|
|
|
2018-05-02 23:16:39 +02:00
|
|
|
export interface DefinitionInfo extends DocumentSpan {
|
2017-05-20 05:06:08 +02:00
|
|
|
kind: ScriptElementKind;
|
2016-09-02 20:34:23 +02:00
|
|
|
name: string;
|
2017-05-20 05:06:08 +02:00
|
|
|
containerKind: ScriptElementKind;
|
2016-09-02 20:34:23 +02:00
|
|
|
containerName: string;
|
|
|
|
}
|
|
|
|
|
2017-10-17 02:50:35 +02:00
|
|
|
export interface DefinitionInfoAndBoundSpan {
|
2018-05-22 23:46:57 +02:00
|
|
|
definitions?: ReadonlyArray<DefinitionInfo>;
|
2017-10-17 02:50:35 +02:00
|
|
|
textSpan: TextSpan;
|
|
|
|
}
|
|
|
|
|
2016-09-02 20:34:23 +02:00
|
|
|
export interface ReferencedSymbolDefinitionInfo extends DefinitionInfo {
|
|
|
|
displayParts: SymbolDisplayPart[];
|
|
|
|
}
|
|
|
|
|
2017-03-27 20:51:13 +02:00
|
|
|
export interface ReferencedSymbol {
|
2016-09-02 20:34:23 +02:00
|
|
|
definition: ReferencedSymbolDefinitionInfo;
|
2017-03-27 20:51:13 +02:00
|
|
|
references: ReferenceEntry[];
|
2016-09-02 20:34:23 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export enum SymbolDisplayPartKind {
|
|
|
|
aliasName,
|
|
|
|
className,
|
|
|
|
enumName,
|
|
|
|
fieldName,
|
|
|
|
interfaceName,
|
|
|
|
keyword,
|
|
|
|
lineBreak,
|
|
|
|
numericLiteral,
|
|
|
|
stringLiteral,
|
|
|
|
localName,
|
|
|
|
methodName,
|
|
|
|
moduleName,
|
|
|
|
operator,
|
|
|
|
parameterName,
|
|
|
|
propertyName,
|
|
|
|
punctuation,
|
|
|
|
space,
|
|
|
|
text,
|
|
|
|
typeParameterName,
|
|
|
|
enumMemberName,
|
|
|
|
functionName,
|
|
|
|
regularExpressionLiteral,
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface SymbolDisplayPart {
|
|
|
|
text: string;
|
2017-05-20 05:06:08 +02:00
|
|
|
kind: string;
|
2016-09-02 20:34:23 +02:00
|
|
|
}
|
|
|
|
|
2016-12-13 00:29:29 +01:00
|
|
|
export interface JSDocTagInfo {
|
|
|
|
name: string;
|
|
|
|
text?: string;
|
|
|
|
}
|
|
|
|
|
2016-09-02 20:34:23 +02:00
|
|
|
export interface QuickInfo {
|
2017-05-20 05:06:08 +02:00
|
|
|
kind: ScriptElementKind;
|
2016-09-02 20:34:23 +02:00
|
|
|
kindModifiers: string;
|
|
|
|
textSpan: TextSpan;
|
2018-05-22 23:46:57 +02:00
|
|
|
displayParts?: SymbolDisplayPart[];
|
|
|
|
documentation?: SymbolDisplayPart[];
|
|
|
|
tags?: JSDocTagInfo[];
|
2016-09-02 20:34:23 +02:00
|
|
|
}
|
|
|
|
|
2018-09-27 17:56:40 +02:00
|
|
|
export type RenameInfo = RenameInfoSuccess | RenameInfoFailure;
|
|
|
|
export interface RenameInfoSuccess {
|
|
|
|
canRename: true;
|
2018-09-10 20:25:03 +02:00
|
|
|
/**
|
|
|
|
* File or directory to rename.
|
|
|
|
* If set, `getEditsForFileRename` should be called instead of `findRenameLocations`.
|
|
|
|
*/
|
|
|
|
fileToRename?: string;
|
2016-09-02 20:34:23 +02:00
|
|
|
displayName: string;
|
|
|
|
fullDisplayName: string;
|
2017-05-20 05:06:08 +02:00
|
|
|
kind: ScriptElementKind;
|
2016-09-02 20:34:23 +02:00
|
|
|
kindModifiers: string;
|
|
|
|
triggerSpan: TextSpan;
|
|
|
|
}
|
2018-09-27 17:56:40 +02:00
|
|
|
export interface RenameInfoFailure {
|
|
|
|
canRename: false;
|
|
|
|
localizedErrorMessage: string;
|
|
|
|
}
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
export interface SignatureHelpParameter {
|
|
|
|
name: string;
|
|
|
|
documentation: SymbolDisplayPart[];
|
|
|
|
displayParts: SymbolDisplayPart[];
|
|
|
|
isOptional: boolean;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Represents a single signature to show in signature help.
|
|
|
|
* The id is used for subsequent calls into the language service to ask questions about the
|
|
|
|
* signature help item in the context of any documents that have been updated. i.e. after
|
|
|
|
* an edit has happened, while signature help is still active, the host can ask important
|
|
|
|
* questions like 'what parameter is the user currently contained within?'.
|
|
|
|
*/
|
|
|
|
export interface SignatureHelpItem {
|
|
|
|
isVariadic: boolean;
|
|
|
|
prefixDisplayParts: SymbolDisplayPart[];
|
|
|
|
suffixDisplayParts: SymbolDisplayPart[];
|
|
|
|
separatorDisplayParts: SymbolDisplayPart[];
|
|
|
|
parameters: SignatureHelpParameter[];
|
|
|
|
documentation: SymbolDisplayPart[];
|
2016-12-13 00:29:29 +01:00
|
|
|
tags: JSDocTagInfo[];
|
2016-09-02 20:34:23 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Represents a set of signature help items, and the preferred item that should be selected.
|
|
|
|
*/
|
|
|
|
export interface SignatureHelpItems {
|
|
|
|
items: SignatureHelpItem[];
|
|
|
|
applicableSpan: TextSpan;
|
|
|
|
selectedItemIndex: number;
|
|
|
|
argumentIndex: number;
|
|
|
|
argumentCount: number;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface CompletionInfo {
|
2018-02-21 22:12:13 +01:00
|
|
|
/** Not true for all glboal completions. This will be true if the enclosing scope matches a few syntax kinds. See `isSnippetScope`. */
|
2016-10-04 01:29:06 +02:00
|
|
|
isGlobalCompletion: boolean;
|
2016-09-02 20:34:23 +02:00
|
|
|
isMemberCompletion: boolean;
|
2016-09-24 02:37:11 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* true when the current location also allows for a new identifier
|
|
|
|
*/
|
|
|
|
isNewIdentifierLocation: boolean;
|
2016-09-02 20:34:23 +02:00
|
|
|
entries: CompletionEntry[];
|
|
|
|
}
|
|
|
|
|
2017-12-01 22:00:01 +01:00
|
|
|
// see comments in protocol.ts
|
2016-09-02 20:34:23 +02:00
|
|
|
export interface CompletionEntry {
|
|
|
|
name: string;
|
2017-05-20 05:06:08 +02:00
|
|
|
kind: ScriptElementKind;
|
2018-05-22 23:46:57 +02:00
|
|
|
kindModifiers?: string; // see ScriptElementKindModifier, comma separated
|
2016-09-02 20:34:23 +02:00
|
|
|
sortText: string;
|
2018-01-09 03:57:46 +01:00
|
|
|
insertText?: string;
|
2016-09-06 20:04:39 +02:00
|
|
|
/**
|
2017-12-01 22:00:01 +01:00
|
|
|
* An optional span that indicates the text to be replaced by this completion item.
|
|
|
|
* If present, this span should be used instead of the default one.
|
|
|
|
* It will be set if the required span differs from the one generated by the default replacement behavior.
|
2017-04-03 18:32:39 +02:00
|
|
|
*/
|
2016-09-06 20:04:39 +02:00
|
|
|
replacementSpan?: TextSpan;
|
Add exported members of all project files in the global completion list (#19069)
* checker.ts: Remove null check on symbols
* tsserverProjectSystem.ts: add two tests
* client.ts, completions.ts, types.ts: Add codeActions member to CompletionEntryDetails
* protocol.ts, session.ts: Add codeActions member to CompletionEntryDetails protocol
* protocol.ts, session.ts, types.ts: add hasAction to CompletionEntry
* session.ts, services.ts, types.ts: Add formattingOptions parameter to getCompletionEntryDetails
* completions.ts: define SymbolOriginInfo type
* completions.ts, services.ts: Add allSourceFiles parameter to getCompletionsAtPosition
* completions.ts, services.ts: Plumb allSourceFiles into new function getSymbolsFromOtherSourceFileExports inside getCompletionData
* completions.ts: add symbolToOriginInfoMap parameter to getCompletionEntriesFromSymbols and to return value of getCompletionData
* utilities.ts: Add getOtherModuleSymbols, getUniqueSymbolIdAsString, getUniqueSymbolId
* completions.ts: Set CompletionEntry.hasAction when symbol is found in symbolToOriginInfoMap (meaning there's an import action)
* completions.ts: Populate list with possible exports (implement getSymbolsFromOtherSourceFileExports)
* completions.ts, services.ts: Plumb host and rulesProvider into getCompletionEntryDetails
* completions.ts: Add TODO comment
* importFixes.ts: Add types ImportDeclarationMap and ImportCodeFixContext
* Move getImportDeclarations into getCodeActionForImport, immediately after the implementation
* importFixes.ts: Move createChangeTracker into getCodeActionForImport, immediately after getImportDeclarations
* importFixes.ts: Add convertToImportCodeFixContext function and reference it from the getCodeActions lambda
* importFixes.ts: Add context: ImportCodeFixContext parameter to getCodeActionForImport, update call sites, destructure it, use compilerOptions in getModuleSpecifierForNewImport
* importFixes.ts: Remove moduleSymbol parameter from getImportDeclarations and use the ambient one
* importFixes.ts: Use cachedImportDeclarations from context in getCodeActionForImport
* importFixes.ts: Move createCodeAction out, immediately above convertToImportCodeFixContext
* Move the declaration for lastImportDeclaration out of the getCodeActions lambda into getCodeActionForImport
* importFixes.ts: Use symbolToken in getCodeActionForImport
* importFixes.ts: Remove useCaseSensitiveFileNames altogether from getCodeActions lambda
* importFixes.ts: Remove local getUniqueSymbolId function and add checker parameter to calls to it
* importFixes.ts: Move getCodeActionForImport out into an export, immediately below convertToImportCodeFixContext
* completions.ts: In getCompletionEntryDetails, if there's symbolOriginInfo, call getCodeActionForImport
* importFixes.ts: Create and use importFixContext within getCodeActions lambda
* importFixes.ts: Use local newLineCharacter instead of context.newLineCharacter in getCodeActionForImport
* importFixes.ts: Use local host instead of context.host in getCodeActionForImport
* importFixes.ts: Remove dummy getCanonicalFileName line
* Filter symbols after gathering exports instead of before
* Lint
* Test, fix bugs, refactor
* Suggestions from code review
* Update api baseline
* Fix bug if previousToken is not an Identifier
* Replace `startsWith` with `stringContainsCharactersInOrder`
2017-10-17 19:20:11 +02:00
|
|
|
hasAction?: true;
|
2017-10-26 17:22:17 +02:00
|
|
|
source?: string;
|
2017-12-01 22:00:01 +01:00
|
|
|
isRecommended?: true;
|
2016-09-02 20:34:23 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface CompletionEntryDetails {
|
|
|
|
name: string;
|
2017-05-20 05:06:08 +02:00
|
|
|
kind: ScriptElementKind;
|
2016-09-02 20:34:23 +02:00
|
|
|
kindModifiers: string; // see ScriptElementKindModifier, comma separated
|
|
|
|
displayParts: SymbolDisplayPart[];
|
2018-05-22 23:46:57 +02:00
|
|
|
documentation?: SymbolDisplayPart[];
|
|
|
|
tags?: JSDocTagInfo[];
|
Add exported members of all project files in the global completion list (#19069)
* checker.ts: Remove null check on symbols
* tsserverProjectSystem.ts: add two tests
* client.ts, completions.ts, types.ts: Add codeActions member to CompletionEntryDetails
* protocol.ts, session.ts: Add codeActions member to CompletionEntryDetails protocol
* protocol.ts, session.ts, types.ts: add hasAction to CompletionEntry
* session.ts, services.ts, types.ts: Add formattingOptions parameter to getCompletionEntryDetails
* completions.ts: define SymbolOriginInfo type
* completions.ts, services.ts: Add allSourceFiles parameter to getCompletionsAtPosition
* completions.ts, services.ts: Plumb allSourceFiles into new function getSymbolsFromOtherSourceFileExports inside getCompletionData
* completions.ts: add symbolToOriginInfoMap parameter to getCompletionEntriesFromSymbols and to return value of getCompletionData
* utilities.ts: Add getOtherModuleSymbols, getUniqueSymbolIdAsString, getUniqueSymbolId
* completions.ts: Set CompletionEntry.hasAction when symbol is found in symbolToOriginInfoMap (meaning there's an import action)
* completions.ts: Populate list with possible exports (implement getSymbolsFromOtherSourceFileExports)
* completions.ts, services.ts: Plumb host and rulesProvider into getCompletionEntryDetails
* completions.ts: Add TODO comment
* importFixes.ts: Add types ImportDeclarationMap and ImportCodeFixContext
* Move getImportDeclarations into getCodeActionForImport, immediately after the implementation
* importFixes.ts: Move createChangeTracker into getCodeActionForImport, immediately after getImportDeclarations
* importFixes.ts: Add convertToImportCodeFixContext function and reference it from the getCodeActions lambda
* importFixes.ts: Add context: ImportCodeFixContext parameter to getCodeActionForImport, update call sites, destructure it, use compilerOptions in getModuleSpecifierForNewImport
* importFixes.ts: Remove moduleSymbol parameter from getImportDeclarations and use the ambient one
* importFixes.ts: Use cachedImportDeclarations from context in getCodeActionForImport
* importFixes.ts: Move createCodeAction out, immediately above convertToImportCodeFixContext
* Move the declaration for lastImportDeclaration out of the getCodeActions lambda into getCodeActionForImport
* importFixes.ts: Use symbolToken in getCodeActionForImport
* importFixes.ts: Remove useCaseSensitiveFileNames altogether from getCodeActions lambda
* importFixes.ts: Remove local getUniqueSymbolId function and add checker parameter to calls to it
* importFixes.ts: Move getCodeActionForImport out into an export, immediately below convertToImportCodeFixContext
* completions.ts: In getCompletionEntryDetails, if there's symbolOriginInfo, call getCodeActionForImport
* importFixes.ts: Create and use importFixContext within getCodeActions lambda
* importFixes.ts: Use local newLineCharacter instead of context.newLineCharacter in getCodeActionForImport
* importFixes.ts: Use local host instead of context.host in getCodeActionForImport
* importFixes.ts: Remove dummy getCanonicalFileName line
* Filter symbols after gathering exports instead of before
* Lint
* Test, fix bugs, refactor
* Suggestions from code review
* Update api baseline
* Fix bug if previousToken is not an Identifier
* Replace `startsWith` with `stringContainsCharactersInOrder`
2017-10-17 19:20:11 +02:00
|
|
|
codeActions?: CodeAction[];
|
2017-10-26 17:22:17 +02:00
|
|
|
source?: SymbolDisplayPart[];
|
2016-09-02 20:34:23 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface OutliningSpan {
|
|
|
|
/** The span of the document to actually collapse. */
|
|
|
|
textSpan: TextSpan;
|
|
|
|
|
|
|
|
/** The span of the document to display when the user hovers over the collapsed span. */
|
|
|
|
hintSpan: TextSpan;
|
|
|
|
|
|
|
|
/** The text to display in the editor for the collapsed region. */
|
|
|
|
bannerText: string;
|
|
|
|
|
|
|
|
/**
|
2017-04-03 18:32:39 +02:00
|
|
|
* Whether or not this region should be automatically collapsed when
|
|
|
|
* the 'Collapse to Definitions' command is invoked.
|
|
|
|
*/
|
2016-09-02 20:34:23 +02:00
|
|
|
autoCollapse: boolean;
|
2018-05-04 01:28:55 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Classification of the contents of the span
|
|
|
|
*/
|
|
|
|
kind: OutliningSpanKind;
|
|
|
|
}
|
|
|
|
|
|
|
|
export const enum OutliningSpanKind {
|
2018-05-05 21:38:59 +02:00
|
|
|
/** Single or multi-line comments */
|
2018-05-04 01:28:55 +02:00
|
|
|
Comment = "comment",
|
2018-05-05 21:38:59 +02:00
|
|
|
|
|
|
|
/** Sections marked by '// #region' and '// #endregion' comments */
|
2018-05-04 01:28:55 +02:00
|
|
|
Region = "region",
|
2018-05-05 21:38:59 +02:00
|
|
|
|
|
|
|
/** Declarations and expressions */
|
2018-05-04 19:39:47 +02:00
|
|
|
Code = "code",
|
2018-05-05 21:38:59 +02:00
|
|
|
|
|
|
|
/** Contiguous blocks of import declarations */
|
2018-05-05 21:02:29 +02:00
|
|
|
Imports = "imports"
|
2016-09-02 20:34:23 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export const enum OutputFileType {
|
|
|
|
JavaScript,
|
|
|
|
SourceMap,
|
|
|
|
Declaration
|
|
|
|
}
|
|
|
|
|
|
|
|
export const enum EndOfLineState {
|
|
|
|
None,
|
|
|
|
InMultiLineCommentTrivia,
|
|
|
|
InSingleQuoteStringLiteral,
|
|
|
|
InDoubleQuoteStringLiteral,
|
|
|
|
InTemplateHeadOrNoSubstitutionTemplate,
|
|
|
|
InTemplateMiddleOrTail,
|
|
|
|
InTemplateSubstitutionPosition,
|
|
|
|
}
|
|
|
|
|
|
|
|
export enum TokenClass {
|
|
|
|
Punctuation,
|
|
|
|
Keyword,
|
|
|
|
Operator,
|
|
|
|
Comment,
|
|
|
|
Whitespace,
|
|
|
|
Identifier,
|
|
|
|
NumberLiteral,
|
|
|
|
StringLiteral,
|
|
|
|
RegExpLiteral,
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface ClassificationResult {
|
|
|
|
finalLexState: EndOfLineState;
|
|
|
|
entries: ClassificationInfo[];
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface ClassificationInfo {
|
|
|
|
length: number;
|
|
|
|
classification: TokenClass;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface Classifier {
|
|
|
|
/**
|
|
|
|
* Gives lexical classifications of tokens on a line without any syntactic context.
|
|
|
|
* For instance, a token consisting of the text 'string' can be either an identifier
|
|
|
|
* named 'string' or the keyword 'string', however, because this classifier is not aware,
|
|
|
|
* it relies on certain heuristics to give acceptable results. For classifications where
|
|
|
|
* speed trumps accuracy, this function is preferable; however, for true accuracy, the
|
|
|
|
* syntactic classifier is ideal. In fact, in certain editing scenarios, combining the
|
|
|
|
* lexical, syntactic, and semantic classifiers may issue the best user experience.
|
|
|
|
*
|
|
|
|
* @param text The text of a line to classify.
|
|
|
|
* @param lexState The state of the lexical classifier at the end of the previous line.
|
|
|
|
* @param syntacticClassifierAbsent Whether the client is *not* using a syntactic classifier.
|
|
|
|
* If there is no syntactic classifier (syntacticClassifierAbsent=true),
|
|
|
|
* certain heuristics may be used in its place; however, if there is a
|
|
|
|
* syntactic classifier (syntacticClassifierAbsent=false), certain
|
|
|
|
* classifications which may be incorrectly categorized will be given
|
|
|
|
* back as Identifiers in order to allow the syntactic classifier to
|
|
|
|
* subsume the classification.
|
|
|
|
* @deprecated Use getLexicalClassifications instead.
|
|
|
|
*/
|
|
|
|
getClassificationsForLine(text: string, lexState: EndOfLineState, syntacticClassifierAbsent: boolean): ClassificationResult;
|
|
|
|
getEncodedLexicalClassifications(text: string, endOfLineState: EndOfLineState, syntacticClassifierAbsent: boolean): Classifications;
|
|
|
|
}
|
|
|
|
|
2017-05-20 05:06:08 +02:00
|
|
|
export const enum ScriptElementKind {
|
|
|
|
unknown = "",
|
|
|
|
warning = "warning",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
/** predefined type (void) or keyword (class) */
|
2017-05-20 05:06:08 +02:00
|
|
|
keyword = "keyword",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
/** top level script node */
|
2017-05-20 05:06:08 +02:00
|
|
|
scriptElement = "script",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
/** module foo {} */
|
2017-05-20 05:06:08 +02:00
|
|
|
moduleElement = "module",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
/** class X {} */
|
2017-05-20 05:06:08 +02:00
|
|
|
classElement = "class",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
/** var x = class X {} */
|
2017-05-20 05:06:08 +02:00
|
|
|
localClassElement = "local class",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
/** interface Y {} */
|
2017-05-20 05:06:08 +02:00
|
|
|
interfaceElement = "interface",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
/** type T = ... */
|
2017-05-20 05:06:08 +02:00
|
|
|
typeElement = "type",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
/** enum E */
|
2017-05-20 05:06:08 +02:00
|
|
|
enumElement = "enum",
|
|
|
|
enumMemberElement = "enum member",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Inside module and script only
|
|
|
|
* const v = ..
|
|
|
|
*/
|
2017-05-20 05:06:08 +02:00
|
|
|
variableElement = "var",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
/** Inside function */
|
2017-05-20 05:06:08 +02:00
|
|
|
localVariableElement = "local var",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Inside module and script only
|
|
|
|
* function f() { }
|
|
|
|
*/
|
2017-05-20 05:06:08 +02:00
|
|
|
functionElement = "function",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
/** Inside function */
|
2017-05-20 05:06:08 +02:00
|
|
|
localFunctionElement = "local function",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
/** class X { [public|private]* foo() {} } */
|
2017-05-20 05:06:08 +02:00
|
|
|
memberFunctionElement = "method",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
/** class X { [public|private]* [get|set] foo:number; } */
|
2017-05-20 05:06:08 +02:00
|
|
|
memberGetAccessorElement = "getter",
|
|
|
|
memberSetAccessorElement = "setter",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* class X { [public|private]* foo:number; }
|
|
|
|
* interface Y { foo:number; }
|
|
|
|
*/
|
2017-05-20 05:06:08 +02:00
|
|
|
memberVariableElement = "property",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
/** class X { constructor() { } } */
|
2017-05-20 05:06:08 +02:00
|
|
|
constructorImplementationElement = "constructor",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
/** interface Y { ():number; } */
|
2017-05-20 05:06:08 +02:00
|
|
|
callSignatureElement = "call",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
/** interface Y { []:number; } */
|
2017-05-20 05:06:08 +02:00
|
|
|
indexSignatureElement = "index",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
/** interface Y { new():Y; } */
|
2017-05-20 05:06:08 +02:00
|
|
|
constructSignatureElement = "construct",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
|
|
|
/** function foo(*Y*: string) */
|
2017-05-20 05:06:08 +02:00
|
|
|
parameterElement = "parameter",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
2017-05-20 05:06:08 +02:00
|
|
|
typeParameterElement = "type parameter",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
2017-05-20 05:06:08 +02:00
|
|
|
primitiveType = "primitive type",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
2017-05-20 05:06:08 +02:00
|
|
|
label = "label",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
2017-05-20 05:06:08 +02:00
|
|
|
alias = "alias",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
2017-05-20 05:06:08 +02:00
|
|
|
constElement = "const",
|
2016-09-02 20:34:23 +02:00
|
|
|
|
2017-05-20 05:06:08 +02:00
|
|
|
letElement = "let",
|
2016-09-06 20:04:39 +02:00
|
|
|
|
2017-05-20 05:06:08 +02:00
|
|
|
directory = "directory",
|
2016-09-06 20:04:39 +02:00
|
|
|
|
2017-05-20 05:06:08 +02:00
|
|
|
externalModuleName = "external module name",
|
2016-11-08 17:56:08 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* <JsxTagName attribute1 attribute2={0} />
|
2017-04-03 18:32:39 +02:00
|
|
|
*/
|
2017-05-20 05:06:08 +02:00
|
|
|
jsxAttribute = "JSX attribute",
|
2018-05-07 21:39:00 +02:00
|
|
|
|
|
|
|
/** String literal */
|
|
|
|
string = "string",
|
2016-09-02 20:34:23 +02:00
|
|
|
}
|
|
|
|
|
2017-05-22 19:40:59 +02:00
|
|
|
export const enum ScriptElementKindModifier {
|
|
|
|
none = "",
|
|
|
|
publicMemberModifier = "public",
|
|
|
|
privateMemberModifier = "private",
|
|
|
|
protectedMemberModifier = "protected",
|
|
|
|
exportedModifier = "export",
|
|
|
|
ambientModifier = "declare",
|
|
|
|
staticModifier = "static",
|
|
|
|
abstractModifier = "abstract",
|
2018-01-05 01:36:31 +01:00
|
|
|
optionalModifier = "optional"
|
2017-05-22 19:40:59 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export const enum ClassificationTypeNames {
|
|
|
|
comment = "comment",
|
|
|
|
identifier = "identifier",
|
|
|
|
keyword = "keyword",
|
|
|
|
numericLiteral = "number",
|
|
|
|
operator = "operator",
|
|
|
|
stringLiteral = "string",
|
|
|
|
whiteSpace = "whitespace",
|
|
|
|
text = "text",
|
|
|
|
|
|
|
|
punctuation = "punctuation",
|
|
|
|
|
|
|
|
className = "class name",
|
|
|
|
enumName = "enum name",
|
|
|
|
interfaceName = "interface name",
|
|
|
|
moduleName = "module name",
|
|
|
|
typeParameterName = "type parameter name",
|
|
|
|
typeAliasName = "type alias name",
|
|
|
|
parameterName = "parameter name",
|
|
|
|
docCommentTagName = "doc comment tag name",
|
|
|
|
jsxOpenTagName = "jsx open tag name",
|
|
|
|
jsxCloseTagName = "jsx close tag name",
|
|
|
|
jsxSelfClosingTagName = "jsx self closing tag name",
|
|
|
|
jsxAttribute = "jsx attribute",
|
|
|
|
jsxText = "jsx text",
|
|
|
|
jsxAttributeStringLiteralValue = "jsx attribute string literal value",
|
2016-09-02 20:34:23 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export const enum ClassificationType {
|
|
|
|
comment = 1,
|
|
|
|
identifier = 2,
|
|
|
|
keyword = 3,
|
|
|
|
numericLiteral = 4,
|
|
|
|
operator = 5,
|
|
|
|
stringLiteral = 6,
|
|
|
|
regularExpressionLiteral = 7,
|
|
|
|
whiteSpace = 8,
|
|
|
|
text = 9,
|
|
|
|
punctuation = 10,
|
|
|
|
className = 11,
|
|
|
|
enumName = 12,
|
|
|
|
interfaceName = 13,
|
|
|
|
moduleName = 14,
|
|
|
|
typeParameterName = 15,
|
|
|
|
typeAliasName = 16,
|
|
|
|
parameterName = 17,
|
|
|
|
docCommentTagName = 18,
|
|
|
|
jsxOpenTagName = 19,
|
|
|
|
jsxCloseTagName = 20,
|
|
|
|
jsxSelfClosingTagName = 21,
|
|
|
|
jsxAttribute = 22,
|
|
|
|
jsxText = 23,
|
|
|
|
jsxAttributeStringLiteralValue = 24,
|
|
|
|
}
|
|
|
|
}
|