Skip to content

Commit 23fd180

Browse files
committed
update display writer and rename setting
1 parent 48ef90a commit 23fd180

File tree

7 files changed

+8758
-194
lines changed

7 files changed

+8758
-194
lines changed

src/compiler/checker.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6114,7 +6114,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
61146114
printer.writeNode(EmitHint.Unspecified, typeNode, /*sourceFile*/ sourceFile, writer);
61156115
const result = writer.getText();
61166116

6117-
const maxLength = noTruncation ? noTruncationMaximumTruncationLength * 2 : defaultMaximumTruncationLength * 2;
6117+
const maxLength = maximumLength || (noTruncation ? noTruncationMaximumTruncationLength * 2 : defaultMaximumTruncationLength * 2);
61186118
if (maxLength && result && result.length >= maxLength) {
61196119
return result.substr(0, maxLength - "...".length) + "...";
61206120
}

src/compiler/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10548,7 +10548,7 @@ export interface UserPreferences {
1054810548
*
1054910549
* Default: `500`
1055010550
*/
10551-
readonly hoverMaximumLength?: number;
10551+
readonly maximumHoverLength?: number;
1055210552
}
1055310553

1055410554
export type OrganizeImportsTypeOrder = "last" | "inline" | "first";

src/server/session.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2399,7 +2399,7 @@ export class Session<TMessage = string> implements EventSender {
23992399
const quickInfo = project.getLanguageService().getQuickInfoAtPosition(
24002400
file,
24012401
this.getPosition(args, scriptInfo),
2402-
userPreferences.hoverMaximumLength,
2402+
userPreferences.maximumHoverLength,
24032403
args.verbosityLevel,
24042404
);
24052405
if (!quickInfo) {

src/services/symbolDisplay.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -708,7 +708,7 @@ function getSymbolDisplayPartsDocumentationAndSymbolKindWorker(
708708
typeWriterOut,
709709
)!;
710710
getPrinter().writeNode(EmitHint.Unspecified, param, getSourceFileOfNode(getParseTreeNode(enclosingDeclaration)), writer);
711-
});
711+
}, maximumLength);
712712
addRange(displayParts, typeParameterParts);
713713
}
714714
else {
@@ -904,7 +904,7 @@ function getSymbolDisplayPartsDocumentationAndSymbolKindWorker(
904904
if (i > 0) writer.writeLine();
905905
printer.writeNode(EmitHint.Unspecified, node, sourceFile, writer);
906906
});
907-
});
907+
}, maximumLength);
908908
addRange(displayParts, expandedDisplayParts);
909909
symbolWasExpanded = true;
910910
return true;

src/services/utilities.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2761,9 +2761,16 @@ export function isFirstDeclarationOfSymbolParameter(symbol: Symbol): boolean {
27612761
return !!findAncestor(declaration, n => isParameter(n) ? true : isBindingElement(n) || isObjectBindingPattern(n) || isArrayBindingPattern(n) ? false : "quit");
27622762
}
27632763

2764-
const displayPartWriter = getDisplayPartWriter();
2765-
function getDisplayPartWriter(): DisplayPartsSymbolWriter {
2766-
const absoluteMaximumLength = defaultMaximumTruncationLength * 10; // A hard cutoff to avoid overloading the messaging channel in worst-case scenarios
2764+
const displayPartWriterCache = new Map<number | undefined, DisplayPartsSymbolWriter>();
2765+
function getDisplayPartWriter(maximumLength: number | undefined): DisplayPartsSymbolWriter {
2766+
if (!displayPartWriterCache.has(maximumLength)) {
2767+
displayPartWriterCache.set(maximumLength, getDisplayPartWriterWorker(maximumLength));
2768+
}
2769+
return displayPartWriterCache.get(maximumLength)!;
2770+
}
2771+
2772+
function getDisplayPartWriterWorker(maximumLength: number | undefined): DisplayPartsSymbolWriter {
2773+
const absoluteMaximumLength = (maximumLength || defaultMaximumTruncationLength) * 10; // A hard cutoff to avoid overloading the messaging channel in worst-case scenarios
27672774
let displayParts: SymbolDisplayPart[];
27682775
let lineStart: boolean;
27692776
let indent: number;
@@ -3036,7 +3043,8 @@ export function lineBreakPart(): SymbolDisplayPart {
30363043
}
30373044

30383045
/** @internal */
3039-
export function mapToDisplayParts(writeDisplayParts: (writer: DisplayPartsSymbolWriter) => void): SymbolDisplayPart[] {
3046+
export function mapToDisplayParts(writeDisplayParts: (writer: DisplayPartsSymbolWriter) => void, maximumLength?: number): SymbolDisplayPart[] {
3047+
const displayPartWriter = getDisplayPartWriter(maximumLength);
30403048
try {
30413049
writeDisplayParts(displayPartWriter);
30423050
return displayPartWriter.displayParts();
@@ -3058,7 +3066,7 @@ export function typeToDisplayParts(
30583066
): SymbolDisplayPart[] {
30593067
return mapToDisplayParts(writer => {
30603068
typechecker.writeType(type, enclosingDeclaration, flags | TypeFormatFlags.MultilineObjectLiterals | TypeFormatFlags.UseAliasDefinedOutsideCurrentScope, writer, maximumLength, verbosityLevel, out);
3061-
});
3069+
}, maximumLength);
30623070
}
30633071

30643072
/** @internal */
@@ -3081,7 +3089,7 @@ export function signatureToDisplayParts(
30813089
flags |= TypeFormatFlags.UseAliasDefinedOutsideCurrentScope | TypeFormatFlags.MultilineObjectLiterals | TypeFormatFlags.WriteTypeArgumentsOfSignature | TypeFormatFlags.OmitParameterModifiers;
30823090
return mapToDisplayParts(writer => {
30833091
typechecker.writeSignature(signature, enclosingDeclaration, flags, /*kind*/ undefined, writer, maximumLength, verbosityLevel, out);
3084-
});
3092+
}, maximumLength);
30853093
}
30863094

30873095
/** @internal */

0 commit comments

Comments
 (0)