diff options
Diffstat (limited to 'editors/code/src/commands/inlay_hints.ts')
-rw-r--r-- | editors/code/src/commands/inlay_hints.ts | 40 |
1 files changed, 10 insertions, 30 deletions
diff --git a/editors/code/src/commands/inlay_hints.ts b/editors/code/src/commands/inlay_hints.ts index 454a464d4..ffaaaebcb 100644 --- a/editors/code/src/commands/inlay_hints.ts +++ b/editors/code/src/commands/inlay_hints.ts | |||
@@ -83,20 +83,14 @@ export class HintsUpdater { | |||
83 | ): Promise<void> { | 83 | ): Promise<void> { |
84 | const newHints = await this.queryHints(editor.document.uri.toString()); | 84 | const newHints = await this.queryHints(editor.document.uri.toString()); |
85 | if (newHints !== null) { | 85 | if (newHints !== null) { |
86 | const newDecorations = newHints.map(hint => { | 86 | const newDecorations = newHints.map(hint => ({ |
87 | const [label, range] = this.truncateHint( | 87 | range: hint.range, |
88 | hint.label, | 88 | renderOptions: { |
89 | hint.range | 89 | after: { |
90 | ); | 90 | contentText: `: ${this.truncateHint(hint.label)}` |
91 | return { | ||
92 | range, | ||
93 | renderOptions: { | ||
94 | after: { | ||
95 | contentText: `: ${label}` | ||
96 | } | ||
97 | } | 91 | } |
98 | }; | 92 | } |
99 | }); | 93 | })); |
100 | return editor.setDecorations( | 94 | return editor.setDecorations( |
101 | typeHintDecorationType, | 95 | typeHintDecorationType, |
102 | newDecorations | 96 | newDecorations |
@@ -104,30 +98,16 @@ export class HintsUpdater { | |||
104 | } | 98 | } |
105 | } | 99 | } |
106 | 100 | ||
107 | private truncateHint( | 101 | private truncateHint(label: string): string { |
108 | label: string, | ||
109 | range: vscode.Range | ||
110 | ): [string, vscode.Range] { | ||
111 | if (!Server.config.maxInlayHintLength) { | 102 | if (!Server.config.maxInlayHintLength) { |
112 | return [label, range]; | 103 | return label; |
113 | } | 104 | } |
114 | 105 | ||
115 | let newLabel = label.substring(0, Server.config.maxInlayHintLength); | 106 | let newLabel = label.substring(0, Server.config.maxInlayHintLength); |
116 | if (label.length > Server.config.maxInlayHintLength) { | 107 | if (label.length > Server.config.maxInlayHintLength) { |
117 | newLabel += '…'; | 108 | newLabel += '…'; |
118 | } | 109 | } |
119 | 110 | return newLabel; | |
120 | range = new vscode.Range( | ||
121 | range.start.line, | ||
122 | range.start.character, | ||
123 | range.end.line, | ||
124 | Math.min( | ||
125 | range.start.character + Server.config.maxInlayHintLength, | ||
126 | range.end.character | ||
127 | ) | ||
128 | ); | ||
129 | |||
130 | return [newLabel, range]; | ||
131 | } | 111 | } |
132 | 112 | ||
133 | private async queryHints(documentUri: string): Promise<InlayHint[] | null> { | 113 | private async queryHints(documentUri: string): Promise<InlayHint[] | null> { |