diff options
author | Emil Lauridsen <[email protected]> | 2019-11-18 17:02:28 +0000 |
---|---|---|
committer | Emil Lauridsen <[email protected]> | 2019-11-19 16:23:50 +0000 |
commit | dadad36bb9770f9b13ed84bc219ea0168a7a5bf1 (patch) | |
tree | 00051540da204b4294501f3c56960975177ae502 /editors/code | |
parent | c24ee0990486b04723534f072d7a58e829bbd1bd (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.ts | 14 | ||||
-rw-r--r-- | editors/code/src/server.ts | 1 |
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 |