From 61b952927647a35a819c099f9b4ca07b6729e955 Mon Sep 17 00:00:00 2001 From: Johnson Chu Date: Sun, 31 Mar 2024 18:24:37 +0800 Subject: [PATCH] refactor(typescript): narrow `getUserPreferences` params --- packages/typescript/lib/configs/getUserPreferences.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/typescript/lib/configs/getUserPreferences.ts b/packages/typescript/lib/configs/getUserPreferences.ts index 61d1e668..badc2c39 100644 --- a/packages/typescript/lib/configs/getUserPreferences.ts +++ b/packages/typescript/lib/configs/getUserPreferences.ts @@ -2,13 +2,16 @@ import * as path from 'path-browserify'; import type * as ts from 'typescript'; import type { TextDocument } from 'vscode-languageserver-textdocument'; import { getConfigTitle } from '../shared'; -import type { SharedContext } from '../semanticFeatures/types'; +import type { ServiceContext } from '@volar/language-service'; export async function getUserPreferences( - ctx: SharedContext, + ctx: ServiceContext, document: TextDocument, ): Promise { - + let currentDirectory = ''; + if (ctx.language.typescript) { + currentDirectory = ctx.language.typescript.languageServiceHost.getCurrentDirectory(); + } const config = await ctx.env.getConfiguration?.(getConfigTitle(document)) ?? {}; const preferencesConfig = config?.preferences ?? {}; const preferences: ts.UserPreferences = { @@ -27,7 +30,7 @@ export async function getUserPreferences( includeCompletionsWithSnippetText: config.suggest?.includeCompletionsWithSnippetText ?? true, includeCompletionsWithClassMemberSnippets: config.suggest?.classMemberSnippets?.enabled ?? true, includeCompletionsWithObjectLiteralMethodSnippets: config.suggest?.objectLiteralMethodSnippets?.enabled ?? true, - autoImportFileExcludePatterns: getAutoImportFileExcludePatternsPreference(preferencesConfig, ctx.languageServiceHost.getCurrentDirectory()), + autoImportFileExcludePatterns: getAutoImportFileExcludePatternsPreference(preferencesConfig, currentDirectory), useLabelDetailsInCompletionEntries: true, allowIncompleteCompletions: true, displayPartsForJSDoc: true,