1980: Shorten inline type hints r=matklad a=detrumi

Implements #1946 

Co-authored-by: Wilco Kusee <wilcokusee@gmail.com>
This commit is contained in:
bors[bot] 2019-10-23 11:13:04 +00:00 committed by GitHub
commit d2e1f9f6da
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 1 deletions

View file

@ -270,6 +270,11 @@
"type": "boolean",
"default": true,
"description": "Display additional type information in the editor"
},
"rust-analyzer.maxInlayHintLength": {
"type": "number",
"default": 20,
"description": "Maximum length for inlay hints"
}
}
},

View file

@ -85,7 +85,11 @@ export class HintsUpdater {
if (newHints !== null) {
const newDecorations = newHints.map(hint => ({
range: hint.range,
renderOptions: { after: { contentText: `: ${hint.label}` } }
renderOptions: {
after: {
contentText: `: ${this.truncateHint(hint.label)}`
}
}
}));
return editor.setDecorations(
typeHintDecorationType,
@ -94,6 +98,18 @@ export class HintsUpdater {
}
}
private truncateHint(label: string): string {
if (!Server.config.maxInlayHintLength) {
return label;
}
let newLabel = label.substring(0, Server.config.maxInlayHintLength);
if (label.length > Server.config.maxInlayHintLength) {
newLabel += '…';
}
return newLabel;
}
private async queryHints(documentUri: string): Promise<InlayHint[] | null> {
const request: InlayHintsParams = {
textDocument: { uri: documentUri }

View file

@ -23,6 +23,7 @@ export class Config {
public showWorkspaceLoadedNotification = true;
public lruCapacity: null | number = null;
public displayInlayHints = true;
public maxInlayHintLength: null | number = null;
public excludeGlobs = [];
public useClientWatching = false;
public featureFlags = {};
@ -140,6 +141,11 @@ export class Config {
if (config.has('displayInlayHints')) {
this.displayInlayHints = config.get('displayInlayHints') as boolean;
}
if (config.has('maxInlayHintLength')) {
this.maxInlayHintLength = config.get(
'maxInlayHintLength'
) as number;
}
if (config.has('excludeGlobs')) {
this.excludeGlobs = config.get('excludeGlobs') || [];
}