aboutsummaryrefslogtreecommitdiff
path: root/editors/code
diff options
context:
space:
mode:
authorWilco Kusee <[email protected]>2019-10-10 12:26:17 +0100
committerWilco Kusee <[email protected]>2019-10-10 13:52:05 +0100
commitce4fb06dec597207324195ae62db93f53984b890 (patch)
tree5f66834352ba3ef53a594cf2da985982b26c89e4 /editors/code
parent523d7d2c8210b382146c76927e93f1cc8a6d31e2 (diff)
Truncate hints longer than 20 characters
Diffstat (limited to 'editors/code')
-rw-r--r--editors/code/src/commands/inlay_hints.ts32
1 files changed, 28 insertions, 4 deletions
diff --git a/editors/code/src/commands/inlay_hints.ts b/editors/code/src/commands/inlay_hints.ts
index 5393a2bc9..3157c04c8 100644
--- a/editors/code/src/commands/inlay_hints.ts
+++ b/editors/code/src/commands/inlay_hints.ts
@@ -13,6 +13,8 @@ interface InlayHint {
13 label: string; 13 label: string;
14} 14}
15 15
16const maxHintLength = 20;
17
16const typeHintDecorationType = vscode.window.createTextEditorDecorationType({ 18const typeHintDecorationType = vscode.window.createTextEditorDecorationType({
17 after: { 19 after: {
18 color: new vscode.ThemeColor('ralsp.inlayHint') 20 color: new vscode.ThemeColor('ralsp.inlayHint')
@@ -83,10 +85,20 @@ export class HintsUpdater {
83 ): Promise<void> { 85 ): Promise<void> {
84 const newHints = await this.queryHints(editor.document.uri.toString()); 86 const newHints = await this.queryHints(editor.document.uri.toString());
85 if (newHints !== null) { 87 if (newHints !== null) {
86 const newDecorations = newHints.map(hint => ({ 88 const newDecorations = newHints.map(hint => {
87 range: hint.range, 89 let label = hint.label.substring(0, maxHintLength);
88 renderOptions: { after: { contentText: `: ${hint.label}` } } 90 if (hint.label.length > maxHintLength) {
89 })); 91 label += '…';
92 }
93 return {
94 range: this.truncateHint(hint.range),
95 renderOptions: {
96 after: {
97 contentText: `: ${label}`
98 }
99 }
100 };
101 });
90 return editor.setDecorations( 102 return editor.setDecorations(
91 typeHintDecorationType, 103 typeHintDecorationType,
92 newDecorations 104 newDecorations
@@ -94,6 +106,18 @@ export class HintsUpdater {
94 } 106 }
95 } 107 }
96 108
109 private truncateHint(range: Range): Range {
110 if (!range.isSingleLine) {
111 return range;
112 }
113 const maxEnd = new vscode.Position(
114 range.start.line,
115 range.start.character + maxHintLength
116 );
117 const end = range.end.isAfter(maxEnd) ? maxEnd : range.end;
118 return new Range(range.start, end);
119 }
120
97 private async queryHints(documentUri: string): Promise<InlayHint[] | null> { 121 private async queryHints(documentUri: string): Promise<InlayHint[] | null> {
98 const request: InlayHintsParams = { 122 const request: InlayHintsParams = {
99 textDocument: { uri: documentUri } 123 textDocument: { uri: documentUri }