aboutsummaryrefslogtreecommitdiff
path: root/editors/code
diff options
context:
space:
mode:
authorEmil Lauridsen <[email protected]>2019-11-18 17:02:28 +0000
committerEmil Lauridsen <[email protected]>2019-11-19 16:23:50 +0000
commitdadad36bb9770f9b13ed84bc219ea0168a7a5bf1 (patch)
tree00051540da204b4294501f3c56960975177ae502 /editors/code
parentc24ee0990486b04723534f072d7a58e829bbd1bd (diff)
Move type inlay hint truncation to language server
This commit implements a general truncation framework for HirFormatter that keeps track of how much has been output so far. This information can then be used to perform truncation inside the language server, instead of relying on the client. Initial support is implemented for truncating types hints using the maxInlayHintLength server config option. The existing solution in the VSCode extension has been removed in favor of letting the server truncate type hints.
Diffstat (limited to 'editors/code')
-rw-r--r--editors/code/src/commands/inlay_hints.ts14
-rw-r--r--editors/code/src/server.ts1
2 files changed, 2 insertions, 13 deletions
diff --git a/editors/code/src/commands/inlay_hints.ts b/editors/code/src/commands/inlay_hints.ts
index ffaaaebcb..0dbdd94fb 100644
--- a/editors/code/src/commands/inlay_hints.ts
+++ b/editors/code/src/commands/inlay_hints.ts
@@ -87,7 +87,7 @@ export class HintsUpdater {
87 range: hint.range, 87 range: hint.range,
88 renderOptions: { 88 renderOptions: {
89 after: { 89 after: {
90 contentText: `: ${this.truncateHint(hint.label)}` 90 contentText: `: ${hint.label}`
91 } 91 }
92 } 92 }
93 })); 93 }));
@@ -98,18 +98,6 @@ export class HintsUpdater {
98 } 98 }
99 } 99 }
100 100
101 private truncateHint(label: string): string {
102 if (!Server.config.maxInlayHintLength) {
103 return label;
104 }
105
106 let newLabel = label.substring(0, Server.config.maxInlayHintLength);
107 if (label.length > Server.config.maxInlayHintLength) {
108 newLabel += '…';
109 }
110 return newLabel;
111 }
112
113 private async queryHints(documentUri: string): Promise<InlayHint[] | null> { 101 private async queryHints(documentUri: string): Promise<InlayHint[] | null> {
114 const request: InlayHintsParams = { 102 const request: InlayHintsParams = {
115 textDocument: { uri: documentUri } 103 textDocument: { uri: documentUri }
diff --git a/editors/code/src/server.ts b/editors/code/src/server.ts
index a3ef21a16..7907b70bc 100644
--- a/editors/code/src/server.ts
+++ b/editors/code/src/server.ts
@@ -43,6 +43,7 @@ export class Server {
43 initializationOptions: { 43 initializationOptions: {
44 publishDecorations: true, 44 publishDecorations: true,
45 lruCapacity: Server.config.lruCapacity, 45 lruCapacity: Server.config.lruCapacity,
46 maxInlayHintLength: Server.config.maxInlayHintLength,
46 excludeGlobs: Server.config.excludeGlobs, 47 excludeGlobs: Server.config.excludeGlobs,
47 useClientWatching: Server.config.useClientWatching, 48 useClientWatching: Server.config.useClientWatching,
48 featureFlags: Server.config.featureFlags 49 featureFlags: Server.config.featureFlags