mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-07 23:08:20 -06:00
Support '.' as a trigger character (#23890)
* Support '.' as a trigger character * Add a CompletionsTriggerCharacter type * Add more trigger characters * Add another type CompletionsTriggerCharacter * Update API baselines
This commit is contained in:
parent
f35a20e29e
commit
ddf20ecd6d
@ -957,7 +957,14 @@ namespace FourSlash {
|
||||
}
|
||||
|
||||
public verifyCompletionsAt(markerName: string | ReadonlyArray<string>, expected: ReadonlyArray<FourSlashInterface.ExpectedCompletionEntry>, options?: FourSlashInterface.CompletionsAtOptions) {
|
||||
this.verifyCompletions({ marker: markerName, exact: expected, isNewIdentifierLocation: options && options.isNewIdentifierLocation, preferences: options, triggerCharacter: options && options.triggerCharacter });
|
||||
this.verifyCompletions({
|
||||
marker: markerName,
|
||||
exact: expected,
|
||||
isNewIdentifierLocation: options && options.isNewIdentifierLocation,
|
||||
preferences: options,
|
||||
// TODO: GH#20090
|
||||
triggerCharacter: (options && options.triggerCharacter) as ts.CompletionsTriggerCharacter | undefined,
|
||||
});
|
||||
}
|
||||
|
||||
public verifyCompletionListContains(entryId: ts.Completions.CompletionEntryIdentifier, text?: string, documentation?: string, kind?: string | { kind?: string, kindModifiers?: string }, spanIndex?: number, hasAction?: boolean, options?: FourSlashInterface.VerifyCompletionListContainsOptions) {
|
||||
@ -4719,7 +4726,7 @@ namespace FourSlashInterface {
|
||||
readonly sourceDisplay?: string;
|
||||
};
|
||||
export interface CompletionsAtOptions extends Partial<ts.UserPreferences> {
|
||||
triggerCharacter?: string;
|
||||
triggerCharacter?: ts.CompletionsTriggerCharacter;
|
||||
isNewIdentifierLocation?: boolean;
|
||||
}
|
||||
|
||||
@ -4730,13 +4737,13 @@ namespace FourSlashInterface {
|
||||
readonly includes?: Many<ExpectedCompletionEntry>;
|
||||
readonly excludes?: Many<string | { readonly name: string, readonly source: string }>;
|
||||
readonly preferences: ts.UserPreferences;
|
||||
readonly triggerCharacter?: string;
|
||||
readonly triggerCharacter?: ts.CompletionsTriggerCharacter;
|
||||
}
|
||||
|
||||
export type Many<T> = T | ReadonlyArray<T>;
|
||||
|
||||
export interface VerifyCompletionListContainsOptions extends ts.UserPreferences {
|
||||
triggerCharacter?: string;
|
||||
triggerCharacter?: ts.CompletionsTriggerCharacter;
|
||||
sourceDisplay: string;
|
||||
isRecommended?: true;
|
||||
insertText?: string;
|
||||
|
||||
@ -1765,6 +1765,8 @@ namespace ts.server.protocol {
|
||||
arguments: FormatOnKeyRequestArgs;
|
||||
}
|
||||
|
||||
export type CompletionsTriggerCharacter = "." | '"' | "'" | "`" | "/" | "@" | "<";
|
||||
|
||||
/**
|
||||
* Arguments for completions messages.
|
||||
*/
|
||||
@ -1773,7 +1775,7 @@ namespace ts.server.protocol {
|
||||
* Optional prefix to apply to possible completions.
|
||||
*/
|
||||
prefix?: string;
|
||||
triggerCharacter?: string;
|
||||
triggerCharacter?: CompletionsTriggerCharacter;
|
||||
/**
|
||||
* @deprecated Use UserPreferences.includeCompletionsForModuleExports
|
||||
*/
|
||||
|
||||
@ -25,7 +25,7 @@ namespace ts.Completions {
|
||||
|
||||
const enum GlobalsSearch { Continue, Success, Fail }
|
||||
|
||||
export function getCompletionsAtPosition(host: LanguageServiceHost, program: Program, log: Log, sourceFile: SourceFile, position: number, preferences: UserPreferences, triggerCharacter: string | undefined): CompletionInfo | undefined {
|
||||
export function getCompletionsAtPosition(host: LanguageServiceHost, program: Program, log: Log, sourceFile: SourceFile, position: number, preferences: UserPreferences, triggerCharacter: CompletionsTriggerCharacter | undefined): CompletionInfo | undefined {
|
||||
const typeChecker = program.getTypeChecker();
|
||||
const compilerOptions = program.getCompilerOptions();
|
||||
if (isInReferenceComment(sourceFile, position)) {
|
||||
@ -2208,8 +2208,12 @@ namespace ts.Completions {
|
||||
return !!type.getStringIndexType() || !!type.getNumberIndexType();
|
||||
}
|
||||
|
||||
function isValidTrigger(sourceFile: SourceFile, triggerCharacter: string, contextToken: Node, position: number): boolean {
|
||||
function isValidTrigger(sourceFile: SourceFile, triggerCharacter: CompletionsTriggerCharacter, contextToken: Node, position: number): boolean {
|
||||
switch (triggerCharacter) {
|
||||
case ".":
|
||||
case "/":
|
||||
case "@":
|
||||
return true;
|
||||
case '"':
|
||||
case "'":
|
||||
case "`":
|
||||
@ -2219,7 +2223,7 @@ namespace ts.Completions {
|
||||
// Opening JSX tag
|
||||
return contextToken.kind === SyntaxKind.LessThanToken && contextToken.parent.kind !== SyntaxKind.BinaryExpression;
|
||||
default:
|
||||
return Debug.fail(triggerCharacter);
|
||||
return Debug.assertNever(triggerCharacter);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -358,9 +358,11 @@ namespace ts {
|
||||
|
||||
export type OrganizeImportsScope = CombinedCodeFixScope;
|
||||
|
||||
export type CompletionsTriggerCharacter = "." | '"' | "'" | "`" | "/" | "@" | "<";
|
||||
|
||||
export interface GetCompletionsAtPositionOptions extends UserPreferences {
|
||||
/** If the editor is asking for completions because a certain character was typed, and not because the user explicitly requested them, this should be set. */
|
||||
triggerCharacter?: string;
|
||||
triggerCharacter?: CompletionsTriggerCharacter;
|
||||
/** @deprecated Use includeCompletionsForModuleExports */
|
||||
includeExternalModuleExports?: boolean;
|
||||
/** @deprecated Use includeCompletionsWithInsertText */
|
||||
|
||||
@ -4539,9 +4539,10 @@ declare namespace ts {
|
||||
fileName: string;
|
||||
}
|
||||
type OrganizeImportsScope = CombinedCodeFixScope;
|
||||
type CompletionsTriggerCharacter = "." | '"' | "'" | "`" | "/" | "@" | "<";
|
||||
interface GetCompletionsAtPositionOptions extends UserPreferences {
|
||||
/** If the editor is asking for completions because a certain character was typed, and not because the user explicitly requested them, this should be set. */
|
||||
triggerCharacter?: string;
|
||||
triggerCharacter?: CompletionsTriggerCharacter;
|
||||
/** @deprecated Use includeCompletionsForModuleExports */
|
||||
includeExternalModuleExports?: boolean;
|
||||
/** @deprecated Use includeCompletionsWithInsertText */
|
||||
@ -6777,6 +6778,7 @@ declare namespace ts.server.protocol {
|
||||
command: CommandTypes.Formatonkey;
|
||||
arguments: FormatOnKeyRequestArgs;
|
||||
}
|
||||
type CompletionsTriggerCharacter = "." | '"' | "'" | "`" | "/" | "@" | "<";
|
||||
/**
|
||||
* Arguments for completions messages.
|
||||
*/
|
||||
@ -6785,7 +6787,7 @@ declare namespace ts.server.protocol {
|
||||
* Optional prefix to apply to possible completions.
|
||||
*/
|
||||
prefix?: string;
|
||||
triggerCharacter?: string;
|
||||
triggerCharacter?: CompletionsTriggerCharacter;
|
||||
/**
|
||||
* @deprecated Use UserPreferences.includeCompletionsForModuleExports
|
||||
*/
|
||||
|
||||
@ -4539,9 +4539,10 @@ declare namespace ts {
|
||||
fileName: string;
|
||||
}
|
||||
type OrganizeImportsScope = CombinedCodeFixScope;
|
||||
type CompletionsTriggerCharacter = "." | '"' | "'" | "`" | "/" | "@" | "<";
|
||||
interface GetCompletionsAtPositionOptions extends UserPreferences {
|
||||
/** If the editor is asking for completions because a certain character was typed, and not because the user explicitly requested them, this should be set. */
|
||||
triggerCharacter?: string;
|
||||
triggerCharacter?: CompletionsTriggerCharacter;
|
||||
/** @deprecated Use includeCompletionsForModuleExports */
|
||||
includeExternalModuleExports?: boolean;
|
||||
/** @deprecated Use includeCompletionsWithInsertText */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user