From 58248e24cd45adcbfd7bfd00e1487df196b4a8c6 Mon Sep 17 00:00:00 2001 From: Steffen Lyngbaek Date: Wed, 11 Mar 2020 20:14:39 -0700 Subject: Switch from Vec to object with props - Instead of a single object type, use several individual nested types to allow toggling from the settings GUI - Remove unused struct definitions - Install and test that the toggles work --- editors/code/package.json | 32 +++++++++++--------------------- editors/code/src/client.ts | 2 +- editors/code/src/config.ts | 13 +++++++------ editors/code/src/inlay_hints.ts | 2 +- 4 files changed, 20 insertions(+), 29 deletions(-) (limited to 'editors/code') diff --git a/editors/code/package.json b/editors/code/package.json index 6f2275062..296d6fe8e 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -307,28 +307,18 @@ "exclusiveMinimum": true, "description": "Number of syntax trees rust-analyzer keeps in memory" }, - "rust-analyzer.inlayHintOpts.displayType": { - "type": "string", - "enum": [ - "off", - "typeHints", - "parameterHints", - "full" - ], - "enumDescriptions": [ - "No type inlay hints", - "Type inlays hints only", - "Parameter inlays hints only", - "All inlay hints types" - ], - "default": "full", - "description": "Display additional type and parameter information in the editor" + "rust-analyzer.inlayHints.typeHints": { + "type": "boolean", + "default": true, + "description": "Whether to show inlay type hints" }, - "rust-analyzer.inlayHintOpts.maxLength": { - "type": [ - "null", - "integer" - ], + "rust-analyzer.inlayHints.parameterHints": { + "type": "boolean", + "default": true, + "description": "Whether to show function parameter name inlay hints at the call site" + }, + "rust-analyzer.inlayHints.maxLength": { + "type": "integer", "default": 20, "minimum": 0, "exclusiveMinimum": true, diff --git a/editors/code/src/client.ts b/editors/code/src/client.ts index ac4417c61..3b8ea6f77 100644 --- a/editors/code/src/client.ts +++ b/editors/code/src/client.ts @@ -29,7 +29,7 @@ export async function createClient(config: Config, serverPath: string): Promise< initializationOptions: { publishDecorations: !config.highlightingSemanticTokens, lruCapacity: config.lruCapacity, - inlayHintOpts: config.inlayHintOpts, + inlayHints: config.inlayHints, cargoWatchEnable: cargoWatchOpts.enable, cargoWatchArgs: cargoWatchOpts.arguments, cargoWatchCommand: cargoWatchOpts.command, diff --git a/editors/code/src/config.ts b/editors/code/src/config.ts index b26bf10da..2668c9640 100644 --- a/editors/code/src/config.ts +++ b/editors/code/src/config.ts @@ -6,7 +6,8 @@ import { log } from "./util"; const RA_LSP_DEBUG = process.env.__RA_LSP_SERVER_DEBUG; export interface InlayHintOptions { - displayType: string; + typeHints: boolean; + parameterHints: boolean; maxLength: number; } @@ -28,8 +29,7 @@ export class Config { "cargoFeatures", "cargo-watch", "highlighting.semanticTokens", - "inlayHintOpts.maxLength", - "inlayHintOpts.displayType", + "inlayHints", ] .map(opt => `${Config.rootSection}.${opt}`); @@ -156,10 +156,11 @@ export class Config { get highlightingOn() { return this.cfg.get("highlightingOn") as boolean; } get rainbowHighlightingOn() { return this.cfg.get("rainbowHighlightingOn") as boolean; } get lruCapacity() { return this.cfg.get("lruCapacity") as null | number; } - get inlayHintOpts(): InlayHintOptions { + get inlayHints(): InlayHintOptions { return { - displayType: this.cfg.get("inlayHintOpts.displayType") as string, - maxLength: this.cfg.get("inlayHintOpts.maxLength") as number, + typeHints: this.cfg.get("inlayHints.typeHints") as boolean, + parameterHints: this.cfg.get("inlayHints.parameterHints") as boolean, + maxLength: this.cfg.get("inlayHints.maxLength") as number, }; } get excludeGlobs() { return this.cfg.get("excludeGlobs") as string[]; } diff --git a/editors/code/src/inlay_hints.ts b/editors/code/src/inlay_hints.ts index 8d291406d..b19b09ad5 100644 --- a/editors/code/src/inlay_hints.ts +++ b/editors/code/src/inlay_hints.ts @@ -10,7 +10,7 @@ export function activateInlayHints(ctx: Ctx) { const maybeUpdater = { updater: null as null | HintsUpdater, onConfigChange() { - if (ctx.config.inlayHintOpts.displayType === 'off') { + if (!ctx.config.inlayHints.typeHints && !ctx.config.inlayHints.parameterHints) { return this.dispose(); } if (!this.updater) this.updater = new HintsUpdater(ctx); -- cgit v1.2.3